Avec un contenu personnalisé plus susceptible de stimuler l'engagement des clients, les entreprises cherchent en permanence à fournir un contenu personnalisé en fonction du profil et du comportement de leurs clients. Les systèmes de recommandation, en particulier, cherchent à prédire la préférence qu'un utilisateur final donnerait à un article. Certains cas d'utilisation courants incluent les recommandations de produits sur les magasins de vente au détail en ligne, la personnalisation des newsletters, la génération de recommandations de listes de lecture musicales ou même la découverte de contenus similaires sur les services de médias en ligne.
Cependant, il peut être difficile de créer un système de recommandation efficace en raison de la complexité de la formation des modèles, de la sélection des algorithmes et de la gestion de la plate-forme. Amazon Personnaliser permet aux développeurs d'améliorer l'engagement des clients grâce à des recommandations personnalisées de produits et de contenus sans aucune expertise en machine learning (ML) requise. Les développeurs peuvent commencer à engager les clients immédiatement en utilisant les données de comportement des utilisateurs capturées. Dans les coulisses, Amazon Personalize examine ces données, identifie ce qui est significatif, sélectionne les bons algorithmes, forme et optimise un modèle de personnalisation personnalisé pour vos données et fournit des recommandations via un point de terminaison API.
Bien que fournir des recommandations en temps réel puisse aider à stimuler l'engagement et la satisfaction, cela peut parfois ne pas être nécessaire, et effectuer cela par lots sur une base planifiée peut simplement être une option plus rentable et gérable.
Cet article vous montre comment utiliser les services AWS non seulement pour créer des recommandations, mais également pour opérationnaliser un pipeline de recommandations par lots. Nous parcourons la solution de bout en bout sans une seule ligne de code. Nous abordons en détail deux sujets :
Vue d'ensemble de la solution
Dans cette solution, nous utilisons le FilmLens base de données. Cet ensemble de données comprend 86,000 2,113 notes de films de XNUMX XNUMX utilisateurs. Nous essayons d'utiliser ces données pour générer des recommandations pour chacun de ces utilisateurs.
La préparation des données est très importante pour nous assurer que nous obtenons les données sur le comportement des clients dans un format prêt pour Amazon Personalize. L'architecture décrite dans cet article utilise AWS Glue, un service d'intégration de données sans serveur, pour effectuer la transformation des données brutes dans un format prêt à être consommé par Amazon Personalize. La solution utilise Amazon Personalize pour créer des recommandations par lots pour tous les utilisateurs à l'aide d'une inférence par lots. Nous utilisons ensuite un flux de travail Step Functions afin que le flux de travail automatisé puisse être exécuté en appelant les API Amazon Personalize de manière reproductible.
Le schéma suivant illustre cette solution.
Nous allons construire cette solution avec les étapes suivantes :
- Créez une tâche de transformation de données pour transformer nos données brutes à l'aide d'AWS Glue.
- Créez une solution Amazon Personalize avec l'ensemble de données transformé.
- Créez un flux de travail Step Functions pour orchestrer la génération d'inférences par lots.
Pré-requis
Vous avez besoin des éléments suivants pour cette procédure pas à pas :
Créer une tâche de transformation de données pour transformer les données brutes avec AWS Glue
Avec Amazon Personalize, les données d'entrée doivent avoir un schéma et un format de fichier spécifiques. Les données des interactions entre les utilisateurs et les éléments doivent être au format CSV avec des colonnes spécifiques, tandis que la liste des utilisateurs pour lesquels vous souhaitez générer des recommandations doit être au format JSON. Dans cette section, nous utilisons AWS Glue Studio pour transformer les données d'entrée brutes dans les structures et le format requis pour Amazon Personalize.
AWS Glue Studio fournit une interface graphique conçue pour faciliter la création et l'exécution de tâches d'extraction, de transformation et de chargement (ETL). Vous pouvez créer visuellement des charges de travail de transformation de données via de simples opérations de glisser-déposer.
Nous préparons d'abord nos données sources dans Service de stockage simple Amazon (Amazon S3), puis nous transformons les données sans code.
- Sur la console Amazon S3, créez un compartiment S3 avec trois dossiers : brut, transformé et organisé.
- Télécharger Ensemble de données MovieLens et chargez le fichier non compressé nommé user_ratingmovies-timestamp.dat dans votre bucket sous le dossier raw.
- Sur la console AWS Glue Studio, choisissez Emplois dans le volet de navigation.
- Sélectionnez Visuel avec une source et une cible, Puis choisissez Création.
- Choisissez le premier nœud appelé Source de données – compartiment S3. C'est ici que nous spécifions nos données d'entrée.
- Sur le Propriétés de la source de données onglet, sélectionnez Emplacement S3 et accédez à votre fichier téléchargé.
- Pour Format de données, choisissez CSV, Et pour Délimiteur, choisissez Languette.
- Nous pouvons choisir l'onglet Schéma de sortie pour vérifier que le schéma a correctement déduit les colonnes.
- Si le schéma ne correspond pas à vos attentes, choisissez Modifier pour modifier le schéma.
Ensuite, nous transformons ces données pour suivre les exigences du schéma pour Amazon Personalize.
- Choisissez le Transformer - Appliquer le mappage nœud et, sur le Transformer , mettez à jour la clé cible et les types de données.
Amazon Personalize attend au minimum la structure suivante pour le ensemble de données d'interactions:
Dans cet exemple, nous excluons les films mal notés de l'ensemble de données.
- Pour ce faire, supprimez le dernier nœud appelé compartiment S3 et ajoutez un nœud de filtre sur le Transformer languette.
- Selectionnez Ajouter condition et filtrer les données dont la note est < 3.5.
Nous écrivons maintenant la sortie dans Amazon S3.
- Élargir la Target menu et choisissez Amazon S3.
- Pour Emplacement cible S3, choisissez le dossier nommé
transformed
. - Selectionnez CSV comme format et suffixe Emplacement cible comprenant
interactions/
.
Ensuite, nous publions une liste d'utilisateurs pour lesquels nous souhaitons obtenir des recommandations.
- Choisissez le Appliquer le mappage nouveau nœud, puis développez le Transformer menu et choisissez Appliquer le mappage.
- Supprimez tous les champs sauf
user_id
et renommez ce champ enuserId
. Amazon Personalize s'attend à ce que ce champ soit nommé identifiant d'utilisateur. - Élargir la Target menu et choisissez Amazon S3.
- Cette fois, choisissez JSON comme format, puis choisissez le dossier S3 transformé et suffixez-le avec
batch_users_input/
.
Cela produit un JSON liste d'utilisateurs comme entrée pour Amazon Personalize. Nous devrions maintenant avoir un diagramme qui ressemble à ce qui suit.
Nous sommes maintenant prêts à exécuter notre travail de transformation.
- Sur la console IAM, créez un rôle appelé glue-service-role et attachez les stratégies gérées suivantes :
AWSGlueServiceRole
AmazonS3FullAccess
Pour plus d'informations sur la création de rôles de service IAM, consultez le Création d'un rôle pour déléguer des autorisations à un service AWS.
- Revenez à votre travail AWS Glue Studio et choisissez le Détails du poste languette.
- Définissez le nom du travail comme
batch-personalize-input-transform-job
. - Choisissez le rôle IAM nouvellement créé.
- Conservez les valeurs par défaut pour tout le reste.
- Selectionnez Épargnez.
- Lorsque vous êtes prêt, choisissez Courir et surveiller le travail dans le Fonctionne languette.
- Lorsque la tâche est terminée, accédez à la console Amazon S3 pour vérifier que votre fichier de sortie a été créé avec succès.
Nous avons maintenant façonné nos données dans le format et la structure requis par Amazon Personalize. L'ensemble de données transformé doit avoir les champs et le format suivants :
- Ensemble de données d'interactions – Format CSV avec champs
USER_ID
,ITEM_ID
,TIMESTAMP
- Ensemble de données d'entrée utilisateur – Format JSON avec élément
userId
Créer une solution Amazon Personalize avec l'ensemble de données transformé
Avec notre jeu de données d'interactions et nos données d'entrée utilisateur au bon format, nous pouvons désormais créer notre solution Amazon Personalize. Dans cette section, nous créons notre groupe d'ensembles de données, importons nos données, puis créons une tâche d'inférence par lots. Un groupe d'ensembles de données organise les ressources dans des conteneurs pour les composants Amazon Personalize.
- Sur la console Amazon Personalize, choisissez Création groupe de jeux de données.
- Pour Domaine, sélectionnez Coutume.
- Selectionnez Créer un groupe d'ensembles de données et continuer.
Ensuite, créez le jeu de données d'interactions.
- Entrez un nom de jeu de données et sélectionnez Créer un nouveau schéma.
- Selectionnez Créer un jeu de données et continuer.
Nous importons maintenant les données d'interactions que nous avions créées précédemment.
- Accédez au compartiment S3 dans lequel nous avons créé notre ensemble de données CSV d'interactions.
- Sur le Permissions , ajoutez la stratégie d'accès au compartiment suivante afin qu'Amazon Personalize y ait accès. Mettez à jour la stratégie pour inclure le nom de votre compartiment.
Revenez à Amazon Personalize et choisissez Créer votre tâche d'importation d'ensemble de données. Notre ensemble de données d'interactions devrait maintenant être importé dans Amazon Personalize. Attendez que la tâche d'importation se termine avec le statut Actif avant de passer à l'étape suivante. Cela devrait prendre environ 8 minutes.
- Sur la console Amazon Personalize, choisissez Vue d’ensemble dans le volet de navigation et choisissez Créer une solution.
- Entrez un nom de solution.
- Pour Type de solution, choisissez Recommandation d'article.
- Pour Recette, choisir la
aws-user-personalization
recette. - Selectionnez Créer et former une solution.
La solution s'entraîne désormais par rapport à l'ensemble de données d'interactions qui a été importé avec la recette de personnalisation de l'utilisateur. Surveillez l'état de ce processus sous Variantes de solutions. Attendez qu'il soit terminé avant de continuer. Cela devrait prendre environ 20 minutes.
Nous créons maintenant notre travail d'inférence par lots, qui génère des recommandations pour chacun des utilisateurs présents dans l'entrée JSON.
- Dans le volet de navigation, sous Ressources personnalisées, choisissez Tâches d'inférence par lots.
- Saisissez un nom de tâche et, pour Solution, choisissez la solution créée précédemment.
- Selectionnez Créer un travail d'inférence par lots.
- Pour Configuration des données d'entrée, entrez le chemin S3 de l'endroit où
batch_users_input
le fichier est localisé.
Ceci est le fichier JSON qui contient userId
.
- Pour Configuration des données de sortie chemin, choisissez le chemin sélectionné dans S3.
- Selectionnez Créer un travail d'inférence par lots.
Ce processus prend environ 30 minutes. Lorsque la tâche est terminée, les recommandations pour chacun des utilisateurs spécifiés dans le fichier d'entrée utilisateur sont enregistrées dans l'emplacement de sortie S3.
Nous avons généré avec succès un ensemble de recommandations pour tous nos utilisateurs. Cependant, nous n'avons implémenté la solution qu'à l'aide de la console jusqu'à présent. Pour nous assurer que cette inférence par lots s'exécute régulièrement avec le dernier ensemble de données, nous devons créer un workflow d'orchestration. Dans la section suivante, nous vous montrons comment créer un workflow d'orchestration à l'aide de Step Functions.
Créer un flux de travail Step Functions pour orchestrer le flux de travail d'inférence par lots
Pour orchestrer votre pipeline, procédez comme suit :
- Sur la console Step Functions, choisissez Créer une machine d'état.
- Sélectionnez Concevez visuellement votre flux de travail, Puis choisissez Suivant.
- Faites glisser le
CreateDatasetImportJob
nœud de gauche (vous pouvez rechercher ce nœud dans la zone de recherche) sur le canevas. - Choisissez le nœud et vous devriez voir les paramètres de l'API de configuration sur la droite. Enregistrez l'ARN.
- Entrez vos propres valeurs dans le Paramètres API zone de texte.
Cela appelle le CreateDatasetImportJob API avec les valeurs de paramètre que vous spécifiez.
- Faites glisser le
CreateSolutionVersion
nœud sur la toile. - Mettez à jour les paramètres de l'API avec l'ARN de la solution que vous avez notée.
Cela crée une nouvelle version de la solution avec les données nouvellement importées en appelant le Créer une version de solution API.
- Faites glisser le
CreateBatchInferenceJob
nœud sur le canevas et mettez à jour de la même manière les paramètres de l'API avec les valeurs pertinentes.
Assurez-vous d'utiliser le $.SolutionVersionArn
syntaxe pour récupérer le paramètre ARN de la version de la solution de l'étape précédente. Ces paramètres d'API sont transmis au CreateBatchInferenceJob API.
Nous devons créer une logique d'attente dans le flux de travail Step Functions pour nous assurer que la tâche d'inférence par lots de recommandations se termine avant la fin du flux de travail.
- Recherchez et faites glisser un nœud d'attente.
- Dans la configuration pour Attendez, entrez 300 secondes.
Il s'agit d'une valeur arbitraire ; vous devez modifier ce temps d'attente en fonction de votre cas d'utilisation spécifique.
- Choisissez le
CreateBatchInferenceJob
nouveau nœud et naviguez jusqu'au La gestion des erreurs languette. - Pour Attraper erreurs, Entrer
Personalize.ResourceInUseException
. - Pour État de repli, choisissez Attendez.
Cette étape nous permet de vérifier périodiquement l'état du travail et de ne sortir de la boucle que lorsque le travail est terminé.
- Pour CheminRésultat, Entrer
$.errorMessage
.
Cela signifie effectivement que lorsque l'exception "ressource en cours d'utilisation" est reçue, le travail attend x secondes avant de réessayer avec les mêmes entrées.
- Selectionnez Épargnez, puis choisissez Lancer l'exécution.
Nous avons orchestré avec succès notre pipeline de recommandations par lots pour Amazon Personalize. Comme étape facultative, vous pouvez utiliser Amazon Event Bridge pour programmer un déclenchement de ce workflow sur une base régulière. Pour plus de détails, reportez-vous à EventBridge (CloudWatch Events) pour les changements d'état d'exécution de Step Functions.
Nettoyer
Pour éviter des frais futurs, supprimez les ressources que vous avez créées pour cette procédure pas à pas.
Conclusion
Dans cet article, nous avons montré comment créer un pipeline de recommandations par lots en utilisant une combinaison d'AWS Glue, Amazon Personalize et Step Functions, sans avoir besoin d'une seule ligne de code ou d'expérience ML. Nous avons utilisé AWS Glue pour préparer nos données dans le format requis par Amazon Personalize. Ensuite, nous avons utilisé Amazon Personalize pour importer les données, créer une solution avec une recette de personnalisation de l'utilisateur et créer une tâche d'inférence par lots qui génère une valeur par défaut de 25 recommandations pour chaque utilisateur, en fonction des interactions passées. Nous avons ensuite orchestré ces étapes à l'aide de Step Functions afin de pouvoir exécuter ces tâches automatiquement.
Pour les étapes à considérer ensuite, la segmentation des utilisateurs est l'une des recettes les plus récentes d'Amazon Personalize, que vous voudrez peut-être explorer pour créer des segments d'utilisateurs pour chaque ligne des données d'entrée. Pour plus de détails, reportez-vous à Obtenir des recommandations par lots et des segments d'utilisateurs.
A propos de l'auteure
Maxine Wee est un architecte de solutions AWS Data Lab. Maxine travaille avec les clients sur leurs cas d'utilisation, conçoit des solutions pour résoudre leurs problèmes commerciaux et les guide dans la construction de prototypes évolutifs. Avant son parcours avec AWS, Maxine a aidé des clients à mettre en œuvre des projets de BI, d'entreposage de données et de lac de données en Australie.
- Avancé (300)
- AI
- art de l'IA
- générateur d'art ai
- robot IA
- Amazon Personnaliser
- intelligence artificielle
- certification en intelligence artificielle
- intelligence artificielle en banque
- robot d'intelligence artificielle
- robots d'intelligence artificielle
- logiciel d'intelligence artificielle
- Colle AWS
- Apprentissage automatique AWS
- blockchain
- conférence blockchain ai
- cognitif
- intelligence artificielle conversationnelle
- crypto conférence ai
- de dall
- l'apprentissage en profondeur
- google ai
- machine learning
- Platon
- platon ai
- Intelligence des données Platon
- Jeu de Platon
- PlatonDonnées
- jeu de platogamie
- échelle ai
- syntaxe
- Mode d'emploi technique
- zéphyrnet