Implementa raccomandazioni personalizzate in tempo reale utilizzando Amazon Personalize

Implementa suggerimenti personalizzati in tempo reale con Amazon Personalize

A livello base, la tecnologia di Machine Learning (ML) impara dai dati per fare previsioni. Le aziende utilizzano i loro dati con un servizio di personalizzazione alimentato da ML per migliorare l’esperienza dei clienti. Questo approccio consente alle aziende di utilizzare i dati per ottenere informazioni azionabili e contribuire alla crescita del fatturato e della fedeltà al marchio.

Amazon Personalize accelera la tua trasformazione digitale con il ML, semplificando l’integrazione di raccomandazioni personalizzate nei siti web esistenti, nelle applicazioni, nei sistemi di marketing via email e altro ancora. Amazon Personalize consente agli sviluppatori di implementare rapidamente un motore di personalizzazione personalizzato, senza richiedere competenze nel campo del ML. Amazon Personalize fornisce l’infrastruttura necessaria e gestisce l’intero flusso di lavoro del machine learning (ML), compresi l’elaborazione dei dati, l’identificazione delle caratteristiche, l’utilizzo degli algoritmi più appropriati, la formazione, l’ottimizzazione e l’hosting dei modelli. Ricevi i risultati tramite un’API e paghi solo per ciò che utilizzi, senza costi minimi o impegni anticipati.

L’articolo Architettura delle raccomandazioni personalizzate in tempo quasi reale con Amazon Personalize mostra come architettare raccomandazioni personalizzate in tempo quasi reale utilizzando Amazon Personalize e servizi dati specifici di AWS. In questo articolo, ti guideremo attraverso un’implementazione di riferimento di un sistema di raccomandazione personalizzato in tempo reale utilizzando Amazon Personalize.

Panoramica della soluzione

La soluzione per le raccomandazioni personalizzate in tempo reale viene implementata utilizzando Amazon Personalize, Amazon Simple Storage Service (Amazon S3), Amazon Kinesis Data Streams, AWS Lambda, e Amazon API Gateway.

L’architettura viene implementata come segue:

  1. Preparazione dei dati – Inizia creando un gruppo di set di dati, schemi e set di dati che rappresentano i tuoi elementi, le interazioni e i dati degli utenti.
  2. Allenamento del modello – Dopo aver importato i tuoi dati, seleziona la ricetta corrispondente al tuo caso d’uso e quindi crea una soluzione per addestrare un modello creando una versione della soluzione. Quando la tua versione di soluzione è pronta, puoi creare una campagna per la tua versione di soluzione.
  3. Ottieni raccomandazioni quasi in tempo reale – Quando hai una campagna, puoi integrare chiamate alla campagna nella tua applicazione. È qui che vengono effettuate le chiamate alle API GetRecommendations o GetPersonalizedRanking per richiedere raccomandazioni quasi in tempo reale da Amazon Personalize.

Per ulteriori informazioni, consulta Architettura delle raccomandazioni personalizzate in tempo quasi reale con Amazon Personalize.

Il diagramma seguente illustra l’architettura della soluzione.

Implementazione

Dimostriamo questa implementazione con un caso d’uso che riguarda la fornitura di raccomandazioni cinematografiche in tempo reale a un utente finale in base alle loro interazioni con il database di film nel tempo.

La soluzione viene implementata attraverso i seguenti passaggi:

  1. Prerequisiti (Preparazione dei dati)
  2. Configurare l’ambiente di sviluppo
  3. Effettuare il deploy della soluzione
  4. Creare una versione della soluzione
  5. Creare una campagna
  6. Creare un tracker di eventi
  7. Ottenere raccomandazioni
  8. Ingestire interazioni in tempo reale
  9. Verificare la validità delle raccomandazioni in tempo reale
  10. Pulizia

Prerequisiti

Prima di iniziare, assicurarsi di avere i seguenti prerequisiti:

  • Preparare i dati di addestramento – Preparare e caricare i dati in un bucket S3 utilizzando le istruzioni. Per questo caso d’uso specifico, verranno caricati dati di interazioni e dati di elementi. Un’interazione è un evento che viene registrato e successivamente importato come dati di addestramento. Amazon Personalize genera principalmente raccomandazioni basate sui dati di interazioni che importi in un dataset di interazioni. Puoi registrare più tipi di evento, come clic, visualizzazione o mi piace. Sebbene il modello creato da Amazon Personalize possa suggerire in base alle interazioni passate di un utente, la qualità di queste suggerimenti può essere migliorata quando il modello possiede dati sulle associazioni tra utenti o elementi. Se un utente interagisce con film categorizzati come Drama nel dataset degli elementi, Amazon Personalize suggerirà film (elementi) dello stesso genere.
  • Configurare l’ambiente di sviluppoInstallare l’interfaccia della riga di comando di Amazon Web Services (AWS CLI).
  • Configurare AWS CLI con il tuo account AmazonConfigurare AWS CLI con le informazioni del tuo account AWS.
  • Installare e avviare AWS Cloud Development Kit (AWS CDK)

Effettuare il deploy della soluzione

Per effettuare il deploy della soluzione, seguire i seguenti passaggi:

Creare una versione della soluzione

Una soluzione si riferisce alla combinazione di una ricetta Amazon Personalize, parametri personalizzati e una o più versioni di soluzione (modelli addestrati). Quando si esegue il progetto CDK nel passaggio precedente, viene creata automaticamente una soluzione con una ricetta di personalizzazione utente. Una versione della soluzione si riferisce a un modello di machine learning addestrato. Creare una versione della soluzione per l’implementazione.

Creare una campagna

Una campagna distribuisce una versione della soluzione (modello addestrato) con una capacità di transazione fornita per generare raccomandazioni in tempo reale. Creare una campagna per l’implementazione.

Creare un tracker di eventi

Amazon Personalize può fare raccomandazioni solo basate su dati di eventi in tempo reale, solo su dati di eventi storici o su entrambi. Registrare eventi in tempo reale per ampliare i dati di interazione e consentire ad Amazon Personalize di apprendere dalle attività più recenti dell’utente. Ciò mantiene i dati aggiornati e migliora la pertinenza delle raccomandazioni di Amazon Personalize. Prima di poter registrare eventi, è necessario creare un tracker di eventi. Un tracker di eventi indirizza i nuovi dati degli eventi al dataset di interazioni nel gruppo di dataset. Creare e tracker di eventi per l’implementazione.

Ottieni raccomandazioni

In questo caso d’uso, l’insieme di dati di interazione è composto da ID di film. Di conseguenza, le raccomandazioni presentate all’utente saranno costituite da ID di film che si allineano più strettamente alle loro preferenze personali, determinate dalle loro interazioni storiche. Puoi utilizzare l’API getRecommendations per recuperare raccomandazioni personalizzate per un utente inviando il suo userID associato, il numero di risultati necessari per le raccomandazioni per l’utente e l’ARN della campagna. Puoi trovare l’ARN della campagna nel menu della console Amazon Personalize.

Ad esempio, la seguente richiesta recupererà 5 raccomandazioni per l’utente il cui userId è 429:

curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn}&userId=429&numResults=5'

La risposta dalla richiesta sarà:

{ "$metadata": {      "httpStatusCode": 200,      "requestId": "7159c128-4e16-45a4-9d7e-cf19aa2256e8",        "attempts": 1,      "totalRetryDelay": 0    },  "itemList": [   {       "itemId": "596",        "score": 0.0243044  },  {       "itemId": "153",        "score": 0.0151695  },  {       "itemId": "16",     "score": 0.013694   },  {       "itemId": "261",        "score": 0.013524   },  {       "itemId": "34",     "score": 0.0122294  }   ],  "recommendationId": "RID-1d-40c1-8d20-dfffbd7b0ac7-CID-06b10f"}

Gli elementi restituiti dalla chiamata API sono i film che Amazon Personalize raccomanda all’utente in base alle loro interazioni storiche.

I valori di punteggio forniti in questo contesto rappresentano numeri in virgola mobile che variano tra zero e 1,0. Questi valori corrispondono alla campagna corrente e alle ricette associate a questo caso d’uso. Sono determinati in base ai punteggi collettivi assegnati a tutti gli elementi presenti nel tuo insieme di dati completo.

Ingestire interazioni in tempo reale

Nell’esempio precedente, le raccomandazioni sono state ottenute per l’utente con un ID di 429 in base alle loro interazioni storiche con il database di film. Per raccomandazioni in tempo reale, le interazioni dell’utente con gli elementi devono essere incorporate in Amazon Personalize in tempo reale. Queste interazioni vengono introdotte nel sistema di raccomandazione attraverso il Event Tracker di Amazon Personalize. Il tipo di interazione, chiamato anche EventType, viene fornito dalla colonna dello stesso nome nell’insieme di dati di interazione (EVENT_TYPE). In questo esempio, gli eventi possono essere di tipo “guarda” o “clicca”, ma puoi avere i tuoi tipi di eventi secondo le esigenze della tua applicazione.

In questo esempio, l’API esposta che genera gli eventi degli utenti con gli elementi riceve il parametro “interactions” che corrisponde al numero di eventi (interactions) di un utente (UserId) con un singolo elemento (itemId) in questo momento. Il parametro trackingId può essere trovato nella console di Amazon Personalize e nella risposta della creazione della richiesta di Event Tracker.

Questo esempio mostra una richiesta putEvent: genera 1 interazione di tipo clic, con un ID di elemento ‘185’ per l’ID utente ‘429’, utilizzando l’ora corrente. Nota che in produzione, ‘sentAt’ dovrebbe essere impostato sull’ora dell’interazione dell’utente. Nell’esempio seguente, impostiamo questo al punto nel tempo nel formato di ora epoch in cui abbiamo scritto la richiesta API per questo post. Gli eventi vengono inviati a Amazon Kinesis Data Streams tramite un API Gateway, motivo per cui è necessario inviare i parametri stream-name e PartitionKey.

curl --location 'https://iyxhva3ll6.execute-api.us-west-2.amazonaws.com/prod/data' --header 'Content-Type: application/json' --data '{ "stream-name": "my-stream","Data": {"userId" : "429", "interactions": 1, "itemId": "185", "trackingId" : "c90ac6d7-3d89-4abc-8a70-9b09c295cbcd", "eventType": "click", "sentAt":"1698711110"},"PartitionKey":"userId"}'

Riceverai una risposta di conferma simile alla seguente:

  {   "Messaggio": "Evento inviato con successo",   "data": {       "Tipo di crittografia": "KMS",        "Numero sequenza": "49..........1901314",        "ShardId": "shardId-xxxxxxx"    }}  

Convalida le raccomandazioni in tempo reale

Poiché l’insieme di interazioni è stato aggiornato, le raccomandazioni verranno automaticamente aggiornate per tener conto delle nuove interazioni. Per convalidare le raccomandazioni aggiornate in tempo reale, è possibile richiamare nuovamente l’API getRecommendations per lo stesso ID utente 429 e il risultato dovrebbe essere diverso da quello precedente. I seguenti risultati mostrano una nuova raccomandazione con un ID di 594 e le raccomandazioni con gli ID di 16, 596, 153 e 261 hanno modificato i loro punteggi. Questi elementi hanno introdotto un nuovo genere di film (‘Animazione | Bambini | Drammatico | Fantasy | Musicale’) nelle prime 5 raccomandazioni.

Richiesta:

  curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn} &userId=429&numResults=5'  

Risposta:

  {  "$metadata": {      "codice stato HTTP": 200,      "ID richiesta": "680f2be8-2e64-47d7-96f7-1c4aa9b9ac9d",        "tentativi": 1,      "ritardo totale della riprova": 0    },  "elenco elementi": [   {       "ID elemento": "596",        "punteggio": 0.0288085  },  {       "ID elemento": "16",     "punteggio": 0.0134173  },  {       "ID elemento": "594",        "punteggio": 0.0129357  },  {       "ID elemento": "153",        "punteggio": 0.0129337  },  {       "ID elemento": "261",        "punteggio": 0.0123728  }   ],  "ID raccomandazione": "RID-dc-44f8-a327-482fb9e54921-CID-06b10f"  

La risposta mostra che la raccomandazione fornita da Amazon Personalize è stata aggiornata in tempo reale.

Ripulire

Per evitare addebiti non necessari, ripristinare l’implementazione della soluzione utilizzando Pulizia delle risorse.

Conclusione

In questo post, ti abbiamo mostrato come implementare un sistema di raccomandazioni personalizzate in tempo reale utilizzando Amazon Personalize. Le interazioni con Amazon Personalize per inglobare interazioni in tempo reale e ottenere raccomandazioni sono state eseguite tramite uno strumento a riga di comando chiamato curl, ma queste chiamate API possono essere integrate in un’applicazione aziendale e ottenere lo stesso risultato.

Per scegliere una nuova ricetta per il tuo caso d’uso, fare riferimento a Personalizzazione in tempo reale. Per valutare l’impatto delle raccomandazioni effettuate da Amazon Personalize, fare riferimento a Misurazione dell’impatto delle raccomandazioni.