AWS Personalize est un moteur de recommandation de produits qui fonctionne un peu comme celui utilisé pour Amazon.com, construit à partir de plus de 20 ans d'expérience en personnalisation. Vous pouvez la mettre en œuvre en tant que votre propre API pour alimenter les suggestions de votre application avec l'apprentissage automatique.
Qu'est-ce qu'AWS Personalize?
«Moteur de recommandation de produit» est un terme général qui peut être étendu pour s'appliquer à de nombreuses choses, pas seulement aux achats en ligne. Prenons l'exemple de YouTube. Si vous vous inscrivez à un nouveau compte YouTube, vous obtiendrez de nombreuses vidéos générales qui attirent un large public, des contenus tendance, principalement. Cependant, si vous recherchez «minecraft letsplay» et regardez une vidéo d'une demi-heure, l'algorithme de recommandation YouTube en prendra note. Il examinera les balises, le titre, la chaîne, la date de publication et d'autres métadonnées de la vidéo que vous avez aimées, puis, à l'aide de l'apprentissage automatique, essaiera de trouver d'autres vidéos qui lui sont similaires et qui ont eu un engagement similaire de la part d'autres utilisateurs. . Peut-être que vous obtiendrez plus de vidéos de la même série, car les gens auront tendance à regarder les choses dans l'ordre chronologique. Il existe peut-être une autre chaîne qui propose un contenu similaire, que vous aimerez peut-être également.
Tout cela est alimenté par des recommandations d'apprentissage automatique. Le "Produit" peut être n'importe quoi – dans le cas d'Amazon, ce sont les articles qu'ils ont à vendre. Pour YouTube, ce sont des vidéos. Pour Spotify, ce sont de nouvelles chansons à jouer. Pour Facebook (ou tout autre service de médias sociaux, en fait), ce sont les messages des utilisateurs.
Ce moteur est intégré dans un PaaS autonome qui ne nécessite aucune connaissance spécifique de l'apprentissage automatique. Vous alimentez les actions de l'utilisateur du moteur (cliqué sur ce post, écouté cette chanson pendant X minutes, etc.) et le moteur crachera de nouvelles recommandations de votre catalogue de produits sur demande. Les recommandations peuvent commencer un peu irrégulières, mais une fois que votre modèle est suffisamment formé, elles commenceront à devenir très précises.
Configuration d'AWS Personalize
Chaque AWS Personalize le projet aura trois ensembles de données:
- Utilisateurs, qui suivent les métadonnées sur les utilisateurs eux-mêmes
- Articles, qui fonctionne comme un catalogue de produits
- Interactions, qui consignent les événements d'interaction entre les utilisateurs et les éléments
La liste Interactions est celle qui est la plus importante, car elle suit tous les événements et fonctions comme base pour la formation du modèle. Les listes Utilisateurs et Éléments fournissent des données supplémentaires qui aideront le modèle à établir des connexions intelligentes. Par exemple, connaissant l'âge d'un utilisateur, Personalize peut recommander différents produits à différents groupes d'âge, en fonction de leur probabilité d'être applicable.
L'option par défaut consiste à importer des données historiques à partir d'un fichier CSV, bien que vous puissiez utiliser l'API Event Tracker pour envoyer des mises à jour en temps réel une fois que tout se passe. Vous devrez cependant disposer de certaines données d'entraînement à importer. L'importation échouera si vous avez moins de 1 000 entrées dans votre liste d'interactions. Si vous souhaitez simplement tester Personnaliser, vous devrez créer une sorte de données factices qui adhèrent à votre schéma avant de procéder à l'importation.
Dirigez-vous vers le AWS Personalize Management Console pour commencer. Créez un nouveau groupe de jeux de données, qui fonctionnera comme une «application» individuelle. Il demandera un nom:
Cliquez sur Suivant, et vous serez automatiquement amené à configurer l'importation des interactions. Donnez-lui un nom («interactions») et définissez votre schéma. C'est dans Apache Avro format et indique à Personnaliser les champs de chaque interaction (ou produit / utilisateur). Pour les interactions, le plus élémentaire est une liaison de USER_ID à PRODUCT_ID, qui est utilisée pour rechercher des utilisateurs et des produits dans les autres tables (un lien relationnel plusieurs-à-plusieurs).
Vous devrez ensuite importer des données dans Personalize, à partir d'un fichier CSV dans S3. Tout d'abord, sélectionnez ou créez un rôle de service pouvant accéder à ce compartiment. Vous devrez également associer la stratégie de compartiment suivante au bucket cible pour permettre à Personalize d'y accéder, en remplaçant nom du bucket
avec le nom de votre bucket:
{ "Version": "17/10/2012", "Id": "PersonnaliserS3BucketAccessPolicy", "Déclaration": ( { "Sid": "PersonnaliserS3BucketAccessPolicy", "Effet": "Autoriser", "Principal": { "Service": "personalize.amazonaws.com" }, "Action": ( "s3: GetObject", "s3: ListBucket" ), "Ressource": ( "arn: aws: s3 ::: nom du compartiment", "arn: aws: s3 ::: nom du compartiment / *" ) } ) }
Ensuite, vous pouvez coller le chemin d'accès au fichier:
Cliquez sur Terminer et vous serez redirigé vers le panneau des ensembles de données, où vous verrez que l'ensemble de données des interactions est maintenant configuré. Vous devrez répéter ce processus deux fois de plus, en créant des ensembles de données pour les utilisateurs et les produits. Tout prendra probablement quelques minutes à importer en fonction de la taille de vos données.
Une fois que tout est importé, vous devez créer une solution, qui est un modèle entraîné basé sur vos données, qui peut être utilisé comme base pour des campagnes qui donneront des recommandations réelles. Créez-en un à partir du tableau de bord:
Donnez-lui un nom et sélectionnez la recette que vous souhaitez utiliser pour alimenter la solution. Vous pouvez le sélectionner manuellement ou choisir "AutoML", qui utilisera le HRNN d'AWS pour effectuer des prédictions. En cas de doute, sélectionnez AutoML.
Les solutions auront plusieurs versions pour faciliter leur gestion. Lorsque vous créez la solution, la version initiale sera également créée.
Une fois l'initialisation de la version de votre solution terminée, vous pouvez créer une campagne: en gros, un moteur d'inférence instancié, pour obtenir des recommandations réelles. Il dispose d'un point de terminaison d'API REST que vous pouvez interroger et utiliser à partir de votre application.
Dans l'onglet "Campagnes" de la barre latérale, créez une nouvelle campagne, donnez-lui un nom et sélectionnez votre solution. Une fois que cela est créé, vous devriez pouvoir le tester à partir de l'AWS CLI:
aws personnaliser-rec obtenir-recommandations -campagne-arn $ CAMPAIGN_ARN -utilisateur-id $ USER_ID -requete "itemList (*). itemId"
Cette commande récupérera les recommandations de votre campagne pour l'ID utilisateur spécifié. Si tout fonctionne correctement, vous devriez voir une liste des ID d'élément recommandés pour l'utilisateur.
Pour ajouter des données en temps réel à la solution, vous devez créer un outil de suivi des événements à partir de la barre latérale. Cela vous donnera un identifiant de suivi que vous pourrez utiliser pour saisir des données.
Il existe deux façons de configurer cela: si vous utilisez AWS Amplify, le cadre de backend des applications Web et mobiles d'AWS, la configuration est simple et vous n'aurez qu'à la configurer à partir de la console Amplify. Si ce n'est pas le cas, vous devrez configurer une fonction Lambda pour traiter les données et les envoyer à Personalize.