Crea una pipeline di suggerimenti batch utilizzando Amazon Personalize senza codice PlatoBlockchain Data Intelligence. Ricerca verticale. Ai.

Crea una pipeline di raccomandazioni batch utilizzando Amazon Personalize senza codice

Con i contenuti personalizzati che hanno maggiori probabilità di stimolare il coinvolgimento dei clienti, le aziende cercano continuamente di fornire contenuti personalizzati in base al profilo e al comportamento del cliente. I sistemi di raccomandazione, in particolare, cercano di prevedere la preferenza che un utente finale darebbe a un articolo. Alcuni casi d'uso comuni includono consigli sui prodotti nei negozi al dettaglio online, la personalizzazione di newsletter, la generazione di consigli sulle playlist musicali o persino la scoperta di contenuti simili sui servizi multimediali online.

Tuttavia, può essere difficile creare un sistema di raccomandazione efficace a causa delle complessità nell'addestramento del modello, nella selezione degli algoritmi e nella gestione della piattaforma. Amazon Personalizza consente agli sviluppatori di migliorare il coinvolgimento dei clienti attraverso consigli personalizzati su prodotti e contenuti senza la necessità di competenze di machine learning (ML). Gli sviluppatori possono iniziare a coinvolgere subito i clienti utilizzando i dati sul comportamento degli utenti acquisiti. Dietro le quinte, Amazon Personalize esamina questi dati, identifica ciò che è significativo, seleziona gli algoritmi giusti, addestra e ottimizza un modello di personalizzazione personalizzato per i tuoi dati e fornisce consigli tramite un endpoint API.

Sebbene fornire consigli in tempo reale possa aiutare ad aumentare il coinvolgimento e la soddisfazione, a volte ciò potrebbe non essere effettivamente necessario ed eseguirlo in batch su base programmata può semplicemente essere un'opzione più conveniente e gestibile.

Questo post mostra come utilizzare i servizi AWS non solo per creare raccomandazioni, ma anche per rendere operativa una pipeline di raccomandazioni batch. Esaminiamo la soluzione end-to-end senza una singola riga di codice. Trattiamo in dettaglio due argomenti:

Panoramica della soluzione

In questa soluzione utilizziamo il Obiettivo del film set di dati. Questo set di dati include 86,000 valutazioni di film di 2,113 utenti. Tentiamo di utilizzare questi dati per generare consigli per ciascuno di questi utenti.

La preparazione dei dati è molto importante per assicurarci di ottenere i dati sul comportamento dei clienti in un formato pronto per Amazon Personalize. L'architettura descritta in questo post utilizza AWS Glue, un servizio di integrazione dei dati serverless, per eseguire la trasformazione dei dati grezzi in un formato pronto per essere utilizzato da Amazon Personalize. La soluzione utilizza Amazon Personalize per creare raccomandazioni batch per tutti gli utenti utilizzando un'inferenza batch. Utilizziamo quindi un flusso di lavoro Step Functions in modo che il flusso di lavoro automatizzato possa essere eseguito chiamando Amazon Personalize API in modo ripetibile.

Il diagramma seguente mostra questa soluzione.Diagramma di architettura

Costruiremo questa soluzione con i seguenti passaggi:

  1. Crea un processo di trasformazione dei dati per trasformare i nostri dati grezzi utilizzando AWS Glue.
  2. Crea una soluzione Amazon Personalize con il set di dati trasformato.
  3. Crea un flusso di lavoro di Step Functions per orchestrare la generazione di inferenze batch.

Prerequisiti

È necessario quanto segue per questa procedura dettagliata:

Crea un processo di trasformazione dei dati per trasformare i dati grezzi con AWS Glue

Con Amazon Personalize, i dati di input devono avere uno schema e un formato file specifici. I dati delle interazioni tra utenti ed elementi devono essere in formato CSV con colonne specifiche, mentre l'elenco di utenti per i quali desideri generare consigli deve essere in formato JSON. In questa sezione, utilizziamo AWS Glue Studio per trasformare i dati di input grezzi nelle strutture e nel formato richiesti per Amazon Personalize.

AWS Glue Studio fornisce un'interfaccia grafica progettata per creare ed eseguire facilmente processi di estrazione, trasformazione e caricamento (ETL). Puoi creare visivamente carichi di lavoro di trasformazione dei dati tramite semplici operazioni di trascinamento della selezione.

Per prima cosa prepariamo i nostri dati di origine in Servizio di archiviazione semplice Amazon (Amazon S3), quindi trasformiamo i dati senza codice.

  1. Sulla console Amazon S3, crea un bucket S3 con tre cartelle: grezzo, trasformato e curato.
  2. Scarica la Set di dati MovieLens e carica il file non compresso denominato user_ratingmovies-timestamp.dat nel tuo bucket nella cartella raw.
  3. Nella console di AWS Glue Studio, scegli Offerte di lavoro nel pannello di navigazione.
  4. Seleziona Visual con un'origine e una destinazione, Quindi scegliere Creare.
  5. Scegli il primo nodo chiamato Origine dati: bucket S3. Qui è dove specifichiamo i nostri dati di input.
  6. Sulla Proprietà dell'origine dati scheda, selezionare Posizione S3 e cerca il tuo file caricato.
  7. Nel Formato dei datiscegli CSV, E per delimitatorescegli Linguetta.
    AWS Glue Studio-S3
  8. Possiamo scegliere la scheda Schema di output per verificare che lo schema abbia dedotto correttamente le colonne.
  9. Se lo schema non corrisponde alle tue aspettative, scegli Modifica per modificare lo schema.
    AWS Glue Studio - Campi

Successivamente, trasformiamo questi dati per seguire i requisiti dello schema per Amazon Personalize.

  1. Scegliere il Trasforma: applica la mappatura nodo e, sul Trasformare scheda, aggiorna la chiave di destinazione e i tipi di dati.
    Amazon Personalize, come minimo, prevede la seguente struttura per il set di dati sulle interazioni:
    • user_id (corda)
    • item_id (corda)
    • timestamp (lungo, nel formato dell'epoca di Unix)
      AWS Glue Studio - Mappatura dei campi

In questo esempio, escludiamo i film con valutazioni scadenti nel set di dati.

  1. Per fare ciò, rimuovi l'ultimo nodo chiamato bucket S3 e aggiungi un nodo filtro su Trasformare scheda.
  2. Scegli Aggiungi condizione e filtrare i dati con punteggio < 3.5.
    AWS Glue Studio - Uscita

Ora riscriviamo l'output su Amazon S3.

  1. espandere la Target menu e scegli Amazon S3.
  2. Nel S3 Posizione del bersaglio, scegli la cartella denominata transformed.
  3. Scegli CSV come formato e suffisso il Posizione di destinazione con interactions/.

Successivamente, viene prodotto un elenco di utenti per i quali desideriamo ricevere consigli.

  1. Scegliere il Applica mappatura nodo di nuovo, quindi espandere il Trasformare menu e scegli Applica mappatura.
  2. Rilascia tutti i campi tranne user_id e rinomina quel campo in userId. Amazon Personalize prevede che il campo venga nominato ID utente.
  3. espandere la Target menu di nuovo e scegli Amazon S3.
  4. Questa volta, scegli JSON come formato, quindi scegli la cartella S3 trasformata e aggiungi il suffisso con batch_users_input/.

Questo produce a JSON elenco di utenti come input per Amazon Personalize. Ora dovremmo avere un diagramma simile al seguente.

AWS Glue Studio - Intero flusso di lavoro

Ora siamo pronti per eseguire il nostro lavoro di trasformazione.

  1. Nella console IAM, crea un ruolo chiamato glue-service-role e allega le seguenti policy gestite:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Per ulteriori informazioni su come creare ruoli di servizio IAM, fare riferimento a Creazione di un ruolo per delegare le autorizzazioni a un servizio AWS.

  1. Torna al tuo lavoro di AWS Glue Studio e scegli il Dettagli di lavoro scheda.
  2. Imposta il nome del lavoro come batch-personalize-input-transform-job.
  3. Scegli il ruolo IAM appena creato.
  4. Mantieni i valori predefiniti per tutto il resto.
    AWS Glue Studio - Dettagli del lavoro
  5. Scegli Risparmi.
  6. Quando sei pronto, scegli Correre e monitorare il lavoro nel Esegue scheda.
  7. Al termine del lavoro, accedi alla console Amazon S3 per verificare che il file di output sia stato creato correttamente.

Ora abbiamo modellato i nostri dati nel formato e nella struttura richiesti da Amazon Personalize. Il set di dati trasformato dovrebbe avere i seguenti campi e formato:

  • Set di dati sulle interazioni – Formato CSV con campi USER_ID, ITEM_ID, TIMESTAMP
  • Set di dati di input dell'utente – Formato JSON con elemento userId

Crea una soluzione Amazon Personalize con il set di dati trasformato

Con il nostro set di dati sulle interazioni e i dati di input dell'utente nel formato corretto, ora possiamo creare la nostra soluzione Amazon Personalize. In questa sezione creiamo il nostro gruppo di set di dati, importiamo i nostri dati e quindi creiamo un processo di inferenza batch. Un gruppo di set di dati organizza le risorse in contenitori per i componenti Amazon Personalize.

  1. Sulla console di Amazon Personalize, scegli Creare gruppo di set di dati.
  2. Nel Dominio, selezionare Custom.
  3. Scegli Crea un gruppo di set di dati e continua.
    Amazon Personalize: crea un gruppo di set di dati

Quindi, crea il set di dati delle interazioni.

  1. Immettere un nome per il set di dati e selezionare Crea un nuovo schema.
  2. Scegli Crea set di dati e continua.
    Amazon Personalize: crea un set di dati di interazioni

Ora importiamo i dati sulle interazioni che avevamo creato in precedenza.

  1. Passa al bucket S3 in cui abbiamo creato il set di dati CSV delle interazioni.
  2. Sulla Permessi scheda, aggiungi la seguente policy di accesso al bucket in modo che Amazon Personalize abbia accesso. Aggiorna la norma per includere il nome del tuo bucket.
    {
       "Version":"2012-10-17",
       "Id":"PersonalizeS3BucketAccessPolicy",
       "Statement":[
          {
             "Sid":"PersonalizeS3BucketAccessPolicy",
             "Effect":"Allow",
             "Principal":{
                "Service":"personalize.amazonaws.com"
             },
             "Action":[
                "s3:GetObject",
                "s3:ListBucket",
                "s3:PutObject"
             ],
             "Resource":[
                "arn:aws:s3:::<your-bucket-name>",
                "arn:aws:s3:::<your-bucket-name> /*"
             ]
          }
       ]
    }

Torna ad Amazon Personalize e scegli Crea il tuo processo di importazione del set di dati. Il nostro set di dati sulle interazioni dovrebbe ora essere importato in Amazon Personalize. Attendere il completamento del processo di importazione con lo stato Attivo prima di continuare con il passaggio successivo. Questo dovrebbe richiedere circa 8 minuti.

  1. Sulla console di Amazon Personalize, scegli Panoramica nel riquadro di navigazione e scegli Crea soluzione.
    Amazon Personalizza - Dashboard
  2. Immettere un nome per la soluzione.
  3. Nel tipo di soluzionescegli Raccomandazione dell'oggetto.
  4. Nel Ricetta, scegli il aws-user-personalization ricetta.
  5. Scegli Crea e addestra la soluzione.
    Amazon Personalize: crea una soluzione

La soluzione ora esegue il training rispetto al set di dati delle interazioni importato con la ricetta di personalizzazione dell'utente. Monitorare lo stato di questo processo in Versioni della soluzione. Attendi il completamento prima di procedere. Questo dovrebbe richiedere circa 20 minuti.
Amazon Personalize - Stato

Ora creiamo il nostro lavoro di inferenza batch, che genera consigli per ciascuno degli utenti presenti nell'input JSON.

  1. Nel riquadro di navigazione, sotto Risorse personalizzatescegli Lavori di inferenza batch.
  2. Immettere un nome lavoro e per Soluzione, scegli la soluzione creata in precedenza.
  3. Scegli Creare un processo di inferenza batch.
    Amazon Personalize: crea un processo di inferenza batch
  4. Nel Immettere la configurazione dei dati, entrare nel percorso S3 di cui il batch_users_input file si trova.

Questo è il file JSON che contiene userId.

  1. Nel Configurazione dei dati di uscita sentiero, scegli il percorso curato in S3.
  2. Scegli Creare un processo di inferenza batch.

Questo processo dura circa 30 minuti. Al termine del lavoro, i consigli per ciascuno degli utenti specificati nel file di input dell'utente vengono salvati nel percorso di output di S3.

Abbiamo generato con successo una serie di consigli per tutti i nostri utenti. Tuttavia, finora abbiamo implementato la soluzione solo utilizzando la console. Per assicurarci che questa inferenza batch venga eseguita regolarmente con l'ultimo set di dati, è necessario creare un flusso di lavoro di orchestrazione. Nella sezione successiva, ti mostreremo come creare un flusso di lavoro di orchestrazione utilizzando Step Functions.

Crea un flusso di lavoro di Step Functions per orchestrare il flusso di lavoro di inferenza batch

Per orchestrare la tua pipeline, completa i seguenti passaggi:

  1. Nella console Step Functions, scegli Crea macchina a stati.
  2. Seleziona Progetta visivamente il tuo flusso di lavoro, Quindi scegliere Avanti.
    Funzioni AWS Step: crea un flusso di lavoro
  3. Trascinare il CreateDatasetImportJob nodo da sinistra (puoi cercare questo nodo nella casella di ricerca) nell'area di disegno.
  4. Scegli il nodo e dovresti vedere i parametri dell'API di configurazione sulla destra. Registra l'ARN.
  5. Inserisci i tuoi valori in Parametri API casella di testo.

Questo chiama il Crea lavoro di importazione set di dati API con i valori dei parametri specificati.

Flusso di lavoro di AWS Step Functions

  1. Trascinare il CreateSolutionVersion nodo sulla tela.
  2. Aggiorna i parametri API con l'ARN della soluzione che hai annotato.

Questo crea una nuova versione della soluzione con i dati appena importati chiamando il file CreaVersioneSoluzione API.

  1. Trascinare il CreateBatchInferenceJob nodo nell'area di disegno e allo stesso modo aggiorna i parametri dell'API con i valori rilevanti.

Assicurati di utilizzare il $.SolutionVersionArn sintassi per recuperare il parametro ARN della versione della soluzione dal passaggio precedente. Questi parametri API vengono passati a Crea lavoro di batchinferenza API.

Flusso di lavoro di AWS Step Functions

È necessario creare una logica di attesa nel flusso di lavoro di Step Functions per assicurarci che il processo di inferenza batch di suggerimenti venga completato prima del completamento del flusso di lavoro.

  1. Trova e trascina in un nodo Attesa.
  2. Nella configurazione per Aspetta! , inserisci 300 secondi.

Questo è un valore arbitrario; dovresti modificare questo tempo di attesa in base al tuo caso d'uso specifico.

  1. Scegliere il CreateBatchInferenceJob nodo di nuovo e passare a Gestione degli errori scheda.
  2. Nel lotta errori, accedere Personalize.ResourceInUseException.
  3. Nel Stato di riservascegli Aspetta! .

Questo passaggio ci consente di controllare periodicamente lo stato del lavoro ed esce dal ciclo solo quando il lavoro è completo.

  1. Nel Risultato Percorso, accedere $.errorMessage.

Ciò significa effettivamente che quando viene ricevuta l'eccezione "risorsa in uso", il lavoro attende x secondi prima di riprovare con gli stessi input.

Flusso di lavoro di AWS Step Functions

  1. Scegli Risparmie quindi scegliere Avvia l'esecuzione.

Abbiamo orchestrato con successo la nostra pipeline di raccomandazioni batch per Amazon Personalize. Come passaggio facoltativo, puoi utilizzare Amazon EventBridge per programmare un trigger di questo flusso di lavoro su base regolare. Per maggiori dettagli, fare riferimento a EventBridge (CloudWatch Events) per le modifiche allo stato di esecuzione di Step Functions.

ripulire

Per evitare addebiti futuri, elimina le risorse che hai creato per questa procedura dettagliata.

Conclusione

In questo post, abbiamo dimostrato come creare una pipeline di raccomandazioni batch utilizzando una combinazione di AWS Glue, Amazon Personalize e Step Functions, senza che sia necessaria una singola riga di codice o esperienza ML. Abbiamo utilizzato AWS Glue per preparare i nostri dati nel formato richiesto da Amazon Personalize. Quindi abbiamo utilizzato Amazon Personalize per importare i dati, creare una soluzione con una ricetta di personalizzazione dell'utente e creare un processo di inferenza batch che genera un valore predefinito di 25 consigli per ciascun utente, in base alle interazioni passate. Abbiamo quindi orchestrato questi passaggi utilizzando Step Functions in modo da poter eseguire questi lavori automaticamente.

Per i passaggi da considerare in seguito, la segmentazione degli utenti è una delle ricette più recenti in Amazon Personalize, che potresti voler esplorare per creare segmenti utente per ogni riga dei dati di input. Per maggiori dettagli, fare riferimento a Ottenere consigli batch e segmenti di utenti.


Circa l'autore

Maxine Wee

Maxine Wee è un AWS Data Lab Solutions Architect. Maxine lavora con i clienti sui loro casi d'uso, progetta soluzioni per risolvere i loro problemi aziendali e li guida attraverso la creazione di prototipi scalabili. Prima del suo viaggio con AWS, Maxine ha aiutato i clienti a implementare progetti di BI, data warehousing e data lake in Australia.

Timestamp:

Di più da Apprendimento automatico di AWS