Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Genera consigli personalizzati e riclassificati con Amazon Personalize
Creato da Mason Cahill (AWS), Matthew Chasse (AWS) e Tayo Olajide (AWS)
Archivio di codici: personalize-pet-recommendations | Ambiente: PoC o pilota | Tecnologie: apprendimento automatico e intelligenza artificiale; nativa per il cloud; infrastruttura DevOps; senza server |
Carico di lavoro: open source | Servizi AWS: AWS CloudFormation; Amazon Kinesis Data Firehose; AWS Lambda; Amazon Personalize; AWS Step Functions |
Riepilogo
Questo modello mostra come utilizzare Amazon Personalize per generare consigli personalizzati, inclusi consigli riclassificati, per i tuoi utenti in base all'acquisizione di dati di interazione utente in tempo reale da tali utenti. Lo scenario di esempio utilizzato in questo modello si basa su un sito Web dedicato all'adozione di animali domestici che genera consigli per gli utenti in base alle loro interazioni (ad esempio, quali animali domestici visita un utente). Seguendo lo scenario di esempio, impari a utilizzare Amazon Kinesis Data Streams per importare dati di interazione, AWS Lambda per generare consigli e riclassificarli e Amazon Data Firehose per archiviare i dati in un bucket Amazon Simple Storage Service (Amazon S3). Imparerai anche a usare AWS Step Functions per creare una macchina a stati che gestisca la versione della soluzione (ovvero un modello addestrato) che genera i tuoi consigli.
Prerequisiti e limitazioni
Prerequisiti
Un account AWS
attivo con un AWS Cloud Development Kit (AWS CDK) avviato AWS Command Line Interface (AWS CLI) con credenziali configurate
Versioni del prodotto
Python 3.9
AWS CDK 2.23.0 o versione successiva
AWS CLI 2.7.27 o versione successiva
Architettura
Stack tecnologico
Amazon Data Firehose
Flusso di dati Amazon Kinesis
Amazon Personalize
Amazon Simple Storage Service (Amazon S3)
AWS Cloud Development Kit (CDK AWS)
Interfaccia a riga di comando di AWS (CLI AWS)
AWS Lambda
AWS Step Functions
Architettura Target
Il diagramma seguente illustra una pipeline per l'acquisizione di dati in tempo reale in Amazon Personalize. La pipeline utilizza quindi tali dati per generare consigli personalizzati e riclassificati per gli utenti.
![Architettura di inserimento dati per Amazon Personalize](images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)
Il diagramma mostra il flusso di lavoro seguente:
Kinesis Data Streams acquisisce i dati degli utenti in tempo reale (ad esempio, eventi come animali domestici visitati) per l'elaborazione da parte di Lambda e Firehose.
Una funzione Lambda elabora i record di Kinesis Data Streams ed effettua una chiamata API per aggiungere l'interazione dell'utente nel record a un tracker di eventi in Amazon Personalize.
Una regola basata sul tempo richiama una macchina a stati Step Functions e genera nuove versioni della soluzione per i modelli di raccomandazione e riclassificazione utilizzando gli eventi dell'event tracker in Amazon Personalize.
Le campagne Amazon Personalize vengono aggiornate dalla macchina a stati per utilizzare la nuova versione della soluzione.
Lambda riordina l'elenco degli articoli consigliati avviando la campagna di riclassificazione di Amazon Personalize.
Lambda recupera l'elenco degli articoli consigliati chiamando la campagna di consigli di Amazon Personalize.
Firehose salva gli eventi in un bucket S3 dove è possibile accedervi come dati storici.
Strumenti
Strumenti AWS
AWS Cloud Development Kit (AWS CDK) è un framework di sviluppo software che aiuta a definire e fornire l'infrastruttura cloud AWS in codice.
AWS Command Line Interface (AWS CLI) è uno strumento open source che ti aiuta a interagire con i servizi AWS tramite comandi nella tua shell a riga di comando.
Amazon Data Firehose ti aiuta a distribuire dati di streaming
in tempo reale ad altri servizi AWS, endpoint HTTP personalizzati ed endpoint HTTP di proprietà di provider di servizi terzi supportati. Amazon Kinesis Data Streams ti aiuta a raccogliere ed elaborare grandi flussi di record di dati in tempo reale.
AWS Lambda è un servizio di elaborazione che ti aiuta a eseguire codice senza dover fornire o gestire server. Esegue il codice solo quando necessario e si ridimensiona automaticamente, quindi paghi solo per il tempo di calcolo che utilizzi.
Amazon Personalize è un servizio di machine learning (ML) completamente gestito che ti aiuta a generare consigli sugli articoli per i tuoi utenti in base ai tuoi dati.
AWS Step Functions è un servizio di orchestrazione senza server che ti aiuta a combinare funzioni Lambda e altri servizi AWS per creare applicazioni aziendali critiche.
Altri strumenti
Codice
Il codice per questo modello è disponibile nel repository GitHub Animal
Nota: le versioni della soluzione Amazon Personalize, l'event tracker e le campagne sono supportate da risorse personalizzate (all'interno dell'infrastruttura) che si espandono su risorse native. CloudFormation
Epiche
Attività | Descrizione | Competenze richieste |
---|---|---|
Crea un ambiente Python isolato. | Configurazione Mac/Linux
Configurazione di Windows Per creare manualmente un ambiente virtuale, esegui il | DevOps ingegnere |
Sintetizza il modello. CloudFormation |
Nota: nel passaggio 2, | DevOps ingegnere |
Implementa risorse e crea infrastrutture. | Per distribuire le risorse della soluzione, esegui il Questo comando installa le dipendenze Python richieste. Uno script Python crea un bucket S3 e una chiave AWS Key Management Service (AWS KMS), quindi aggiunge i dati iniziali per le creazioni iniziali del modello. Infine, lo script viene eseguito per creare l'infrastruttura rimanente Nota: l'addestramento iniziale del modello avviene durante la creazione dello stack. Il completamento della creazione dello stack può richiedere fino a due ore. | DevOps ingegnere |
Risorse correlate
Consigliere per animali
() GitHub Ottimizza i consigli personalizzati per una metrica aziendale a tua scelta con Amazon
Personalize (AWS Machine Learning Blog)
Informazioni aggiuntive
Esempi di payload e risposte
Raccomandazione: funzione Lambda
Per recuperare i consigli, invia una richiesta alla funzione Lambda delle raccomandazioni con un payload nel seguente formato:
{ "userId": "3578196281679609099", "limit": 6 }
Il seguente esempio di risposta contiene un elenco di gruppi di animali:
[{"id": "1-domestic short hair-1-1"}, {"id": "1-domestic short hair-3-3"}, {"id": "1-domestic short hair-3-2"}, {"id": "1-domestic short hair-1-2"}, {"id": "1-domestic short hair-3-1"}, {"id": "2-beagle-3-3"},
Se si omette il userId
campo, la funzione restituisce raccomandazioni generali.
Riclassificazione della funzione Lambda
Per utilizzare la riclassificazione, invia una richiesta alla funzione di riclassificazione Lambda. Il payload contiene tutti gli ID userId
degli elementi da riclassificare e i relativi metadati. I seguenti dati di esempio utilizzano le classi Oxford Pets for animal_species_id
(1=cat, 2=dog) e i numeri interi 1-5 per e: animal_age_id
animal_size_id
{ "userId":"12345", "itemMetadataList":[ { "itemId":"1", "animalMetadata":{ "animal_species_id":"2", "animal_primary_breed_id":"Saint_Bernard", "animal_size_id":"3", "animal_age_id":"2" } }, { "itemId":"2", "animalMetadata":{ "animal_species_id":"1", "animal_primary_breed_id":"Egyptian_Mau", "animal_size_id":"1", "animal_age_id":"1" } }, { "itemId":"3", "animalMetadata":{ "animal_species_id":"2", "animal_primary_breed_id":"Saint_Bernard", "animal_size_id":"3", "animal_age_id":"2" } } ] }
La funzione Lambda riclassifica questi articoli e quindi restituisce un elenco ordinato che include gli ID degli articoli e la risposta diretta di Amazon Personalize. Questo è un elenco classificato dei gruppi di animali a cui appartengono gli articoli e del relativo punteggio. Amazon Personalize utilizza le ricette di personalizzazione degli utenti e di classificazione personalizzata per includere un punteggio per ogni articolo nei consigli. Questi punteggi rappresentano la certezza relativa di Amazon Personalize in merito all'articolo successivo che l'utente sceglierà. I punteggi più alti rappresentano una maggiore certezza.
{ "ranking":[ "1", "3", "2" ], "personalizeResponse":{ "ResponseMetadata":{ "RequestId":"a2ec0417-9dcd-4986-8341-a3b3d26cd694", "HTTPStatusCode":200, "HTTPHeaders":{ "date":"Thu, 16 Jun 2022 22:23:33 GMT", "content-type":"application/json", "content-length":"243", "connection":"keep-alive", "x-amzn-requestid":"a2ec0417-9dcd-4986-8341-a3b3d26cd694" }, "RetryAttempts":0 }, "personalizedRanking":[ { "itemId":"2-Saint_Bernard-3-2", "score":0.8947961 }, { "itemId":"1-Siamese-1-1", "score":0.105204 } ], "recommendationId":"RID-d97c7a87-bd4e-47b5-a89b-ac1d19386aec" } }
Carico utile Amazon Kinesis
Il payload da inviare ad Amazon Kinesis ha il seguente formato:
{ "Partitionkey": "randomstring", "Data": { "userId": "12345", "sessionId": "sessionId4545454", "eventType": "DetailView", "animalMetadata": { "animal_species_id": "1", "animal_primary_breed_id": "Russian_Blue", "animal_size_id": "1", "animal_age_id": "2" }, "animal_id": "98765" } }
Nota: il userId
campo viene rimosso per un utente non autenticato.