Le Blog Amazon Web Services

Création d’un moteur de recommandation avec Amazon Personalize

Cet article est un partage d’experience de Phil Basford, architecte de solutions chez Inawisdom, client d’AWS.

Lors de re:Invent 2018, nous avons annoncé Amazon Personalize, qui vous permet de faire fonctionner rapidement un moteur de recommandation afin d’offrir une valeur immédiate à vos utilisateurs finaux ou à votre entreprise. À mesure que votre compréhension de la Data Science augmente (ou si vous êtes déjà familier), vous pouvez profiter des capacités approfondies d’Amazon Personalize pour améliorer vos recommandations.

En travaillant chez Inawisdom, Phil a remarqué une diversité croissante dans l’application du Machine Learning (ML) et du Deep Learning. Les cas d’utilisation de Machine Learning les plus connus et les plus répandus se retrouvent dans les sites de e-commerce, les applications de streaming de musique et les plateformes de réseaux sociaux. Depuis des années, ils intègrent les technologies ML au cœur de leur expérience utilisateur. Ils fournissent généralement à chaque utilisateur une expérience personnalisée, basée à la fois sur les points de données historiques et sur l’activité en temps réel (telles que les données de clic).

Sans connaissances préalables, Phil a pu réaliser une recommandation avec Amazon Personalize en quelques heures. Cet article décrit comment il a fait.

Synthèse

La phase la plus difficile pour la création d’un moteur de recommandation est de savoir par où commencer. Ça l’est encore plus lorsque vous avez très peu d’expérience avec le Machine Learning. Cependant, il faut retenir que les éléments clef d’un projet impliquant du Machine Learning sont souvent les suivants :

  • Quelles données utiliser ?
  • Comment structurer la donnée ?
  • Quels sont les frameworks requis ?
  • Comment entraîner son modèle avec de la donnée ?
  • Comment mesurer la précision du modèle ?
  • Comment utiliser le Machine Learning dans une application temps-réel ?

De manière simplifiée, Amazon Personalize fournit une structure et vous accompagne dans l’ensemble de ces sujets. Ou, si vous êtes un Data Scientist, il peut agir comme un accélérateur pour votre propre implémentation.

Création d’une solution de recommandation Amazon Personalize

Vous pouvez créer votre propre solution personnalisée de recommandation avec Amazon Personalize en quelques heures. Le diagramme ci-dessous détaille comment fonctionne Amazon Personalize :

Overall Amazon Personalize architecture at Inawisdom

1. Création de groupes d’ensemble de données et d’ensemble de données

En ouvrant la console Amazon Personalize, la première étape consiste à créer un groupe d’ensemble de données, qui peut être créé à partir du chargement de données historiques ou à partir de données collectées à partir d’événements en temps réel. Dans cette évaluation d’Amazon Personalize par Inawisdom, nous n’utilisons que des données historiques.

Lorsque vous utilisez des données historiques, chaque ensemble de données est importé à partir d’un fichier .csv depuis Amazon S3, et chaque groupe d’ensemble de données peut contenir trois ensembles de données :

  • Utilisateurs
  • Éléments
  • Interactions

Pour cet exemple, nous avons préparé le fichier de données Interactions, car étant nécessaire et le plus important.

L’ensemble de données Interactions contient une relation n:n (une relation multi-valeur, en utilisant les anciens termes de base de données relationnelle) qui associe USER_ID à ITEM_ID. Les interactions peuvent être enrichies avec des ensembles de données facultatifs User et Item qui contiennent des données supplémentaires liées par leurs ID. Par exemple, pour un site Web de diffusion de films, il peut être utile de connaître la classification d’âge d’un film et l’âge du spectateur et de comprendre quels films ils regardent.

Lorsque tous vos fichiers de données sont prêts sur Amazon S3, importez-les dans votre groupe d’ensemble de données en tant que ensemble de données. Pour ce faire, définissez un schéma pour les données au format Apache Avro pour chaque ensemble de données, ce qui permet à Amazon Personalize de comprendre le format de vos données. Voici un exemple de schéma pour Interactions :

{
    "type": "record",
    "name": "Interactions",
    "namespace": "com.amazonaws.personalize.schema",
    "fields": [
        {
            "name": "USER_ID",
            "type": "string"
        },
        {
            "name": "ITEM_ID",
            "type": "string"
        },
        {
            "name": "TIMESTAMP",
            "type": "long"
        }
    ],
    "version": "1.0"
}

Lors de la prise en main d’Amazon Personalize, vous constaterez peut-être que vous passez plus de temps sur la définition du schéma d’Interactions. Cette phase est importante et elle indique que la qualité de vos données est le facteur le plus important dans la formation d’un modèle utilisable et précis. C’est là qu’Amazon Personalize a un effet immédiat : il vous aide et accélère votre progression sur la base de ses données initiales.

Vous n’avez pas à vous soucier du format de la donnée, mais seulement des champs clés identifiés. Ne vous perdez pas dans la recherche du modèle de donnée parfait. Votre objectif est de rendre vos données accessibles. Si vous démarrez tout juste dans le Machine Learning, vous pouvez vous procurer un groupe d’ensemble de données de base qui fonctionne rapidement avec un minimum de données. Si vous êtes un data scientist aguerri, vous itérerez probablement plusieurs fois à ce stade pour améliorer et ajouter d’autres points de données.

2. Création d’une solution

Une fois que votre groupe d’ensemble de données est renseigné avec vos données, l’étape suivante consiste à créer une solution. Une solution couvre deux domaines : sélection du modèle (recette) et l’utilisation de vos données pour l’entraînement de celui-ci. Au sein d’Amazon Personalize, vous bénéficiez de recettes pré-établies et une base d’algorithmes pour établir le score de popularité/recommandation. Voici quelques-unes des recettes proposées :

  • Re-classement personnalisé (recherche)
  • Recommandations d’éléments similaires – SIMS
  • Réseau neuronal récurrent hiérarchique – HRNN (modélisation interactions utilisateur-élément sur une période donnée)

Si vous n’êtes pas un data scientist, ne vous inquiétez pas. Vous pouvez utiliser l’option AutoML, qui exécute l’entraînement de chacune des recettes disponible à partir de vos données. Amazon Personalize évalue alors la meilleure recette en fonction des métriques de précision. Cela couvre également la modification de certains paramètres pour obtenir de meilleurs résultats (ce que l’on appelle les “hyperparamètres”). L’image suivante montre une solution avec la section métrique en bas montrant sa précision :

AWS-Personalize-Precision-Evaluation

Pour allez plus loin sur l’estimation de la précision de recommandation par Amazon Personalize, vous trouverez plus d’informations concernant les métriques prises en compte pour évaluer une solution dans la documentation. De façon très simplifiée, les valeurs proches de 1 sont indiquent une plus grande fiabilité.

Amazon Personalize vous permet de démarrer rapidement votre projet, même si vous n’êtes pas un expert. Cela inclut non seulement la sélection de modèles et l’entraînement, mais aussi la transformation des données nécessaires pour chaque recette et la gestion des instances nécessaires pour l’entraînement du modèle. Si vous êtes plus avancé dans le domaine, c’est aussi une bonne nouvelle, car vous pouvez prendre le contrôle total du processus.

3. Création d’une campagne

Après avoir obtenu une version de solution (une recette confirmée et des artefacts formés), il est temps de la mettre en action. Ce n’est pas une tâche facile, et il y a beaucoup de choses à considérer dans l’hébergement de services ML à grande échelle.

Pour vous aider, Amazon Personalize vous permet de déployer une campagne (un moteur d’inférence pour votre recette et les artefacts formés) en tant que moteur de recommandation. La campagne met à disposition une API REST que vous pouvez utiliser pour produire des recommandations. Voici un exemple d’appel de votre API en Python :

get_recommendations_response = personalize_runtime.get_recommendations(
    campaignArn = campaign_arn,
    userId = str(user_id),
    itemId = str(item_id)
)

item_list = get_recommendations_response['itemList']

Exemple de résultats sur la recommandation de films :

Recommendations: [
    "Full Monty, The (1997)",
    "Chasing Amy (1997)",
    "Fifth Element, The (1997)",
    "Apt Pupil (1998)",
    "Grosse Pointe Blank (1997)",
    "My Best Friend's Wedding (1997)",
    "Leaving Las Vegas (1995)",
    "Contact (1997)",
    "Waiting for Guffman (1996)",
    "Donnie Brasco (1997)",
    "Fargo (1996)",
    "Liar (1997)",
    "Titanic (1997)",
    "English Patient, The (1996)",
    "Willy Wonka and the Chocolate Factory (1971)",
    "Chasing Amy (1997)",
    "Star Trek: First Contact (1996)",
    "Jerry Maguire (1996)",
    "Last Supper, The (1995)",
    "Hercules (1997)",
    "Kolya (1996)",
    "Toy Story (1995)",
    "Private Parts (1997)",
    "Citizen Ruth (1996)",
    "Boogie Nights (1997)"
]

Conclusion

Amazon Personalize est un excellent ajout à l’ensemble de services d’apprentissage automatique AWS. Son approche à deux étapes vous permet d’exécuter rapidement et efficacement votre premier moteur de recommandation et d’offrir de la valeur immédiate à vos utilisateurs finaux ou aux différents métiers de votre entreprise. Vous pouvez, par la suite, exploiter la profondeur et la puissance brute d’Amazon Personalize, ce qui vous permettra d’améliorer en continue vos recommandations.

Article original de Phil Basford, lead AWS solutions architect chez Inawisdom traduit par Rodrigue Koffi, Solutions Architect chez AWS France, LinkedIn