Sviluppo remoto su AWS: da Cloud9 a VS Code
20 Novembre 2024 - 2 min. read
Alessio Gandini
Cloud-native Development Line Manager
Sebbene la definizione possa essere approssimativa, i Recommendation Engine sono modelli di Machine Learning solitamente incorporati in servizi data-driven. Il loro impiego, se basato sulla premessa di una corretta implementazione, può potenzialmente aumentare la customer satisfaction attraverso il suggerimento di contenuti altamente personalizzati e pertinenti all'area di interesse dell'utente. D'altra parte, l'individuazione di un pattern di connessioni significative tra contenuti provenienti da un insieme di persone simili all’utente target, potrebbe portare alla scoperta di materiale che l'utente non conosce, ma che gradirebbe se consigliato dall'algoritmo.
Alla luce di quanto detto, non ci sorprende che i Recommendation Engine siano sfruttati soprattutto dalle aziende che fanno del retail il loro core business. Infatti, la possibilità di accedere a grandi volumi di dati storici relativi a singoli utenti fidelizzati può essere sfruttata dai modelli per generare raccomandazioni.
Amazon Personalize è diventato uno degli strumenti industriali più suggeriti per la costruzione di motori di raccomandazione. È il motore su cui si basa Amazon.com, ma viene utilizzato anche in diversi tipi di e-commerce, dall'industria alimentare con Subway e Domino's, ai contenuti multimediali, come Warner Bros Discovery e Discovery Education, sino ad arrivare alle piattaforme di e-learning come Coursera.com, e infine ai campionati di calcio come la Bundesliga.
Amazon Personalize è uno strumento potente che sfrutta la potenza del Machine Learning ed è, allo stesso tempo, semplice da usare poiché è un servizio completamente gestito. Per costruire il modello non sono necessarie conoscenze preliminari di Machine Learning e questo consente allo sviluppatore di ridurre i tempi di delivery. Sebbene le premesse siano favorevoli, sorgono problemi comuni perché un buon modello ha bisogno dei dati adeguati per funzionare correttamente.
Questo articolo si propone di mostrare le migliori pratiche per inserire i dati corretti nel Recommendation Engine e ottenere tutta la potenza di Amazon Personalize, traendone il massimo valore possibile.
Amazon Personalize è un servizio di Machine Learning completamente gestito per creare Recommendation Engines in grado di fornire raccomandazioni personalizzate in tempo reale. Sfrutta la stessa tecnologia di apprendimento automatico utilizzata da Amazon.com.
Le aziende possono sfruttre la potenza di questo servizio per costruire modelli in grado di migliorare l'esperienza dell'utente con raccomandazioni che possono estendersi in vari campi: raccomandazioni di prodotti per l'e-commerce, raccomandazioni di articoli e contenuti per l'editoria, i media e i social network, raccomandazioni di hotel per i siti web di viaggi e così via.
Come detto precedentemente, il servizio è completamente gestito. Amazon Personalize si occuperà di tutta l'infrastruttura sottostante, dell'elaborazione dei dati, della selezione delle feature, dello sviluppo dei modelli di ML, dell'ottimizzazione e della distribuzione. Con Amazon Personalize, le aziende possono ottenere la potenza dei motori di raccomandazione senza avere grandi competenze in materia di dati e Machine Learning. Questi elementi consentono agli sviluppatori di concentrare le loro energie sullo sviluppo dell'applicazione vera e propria, migliorando l'esperienza del cliente con raccomandazioni altamente personalizzate.
I Recommendation Engine creati con Amazon Personalize offrono un'ampia gamma di funzionalità.
Le raccomandazioni possono essere elaborate in tempo reale o in batch, a seconda del caso d'uso. Inoltre, le raccomandazioni possono cambiare, adattandosi al comportamento dei clienti che cambia nel tempo.
Entrando nei dettagli tecnici, questi Recommendation Engine possono essere facilmente integrati nella maggior parte dei sistemi, come siti web, app, SMS e sistemi di email marketing, per migliorare l'esperienza del cliente e l'infrastruttura sottostante scalerà automaticamente per soddisfare il crescente numero di richieste. Lo sviluppo di questi sistemi è veloce. Così veloce che è possibile creare modelli in "giorni, non mesi", come afferma la documentazione AWS.
Per quanto riguarda i dati, Amazon Personalize è in grado di creare raccomandazioni anche per nuovi utenti e prodotti che non hanno dati storici a supporto.
Infine, per quanto riguarda la sicurezza e la privacy, tutti i dati sono crittografati con chiavi KMS e utilizzati solo per la creazione di raccomandazioni. Gli sviluppatori possono optare per l’utilizzo di chiavi gestite da AWS oppure per scegliere di gestire in autonomia le proprie chiavi di crittografia, così da avere il pieno controllo su chi può decifrare i dati dei clienti.
L'enfasi sulla qualità dei dati non dovrebbe mai portare a considerarla come un compito di routine che può potenzialmente introdurre errori umani. Prima ancora di elaborare strategie per la scelta del modello migliore e, di conseguenza, di come trattare i dati che lo addestreranno, è necessario garantire la qualità dei dati stessi. E questa qualità dei dati deve necessariamente passare attraverso una pipeline di data engineering.
Quando si utilizza un servizio completamente gestito, è facile pensare che basti immettere alcuni dati in una "scatola nera" per iniziare a ottenere risultati. Tuttavia, gli algoritmi di ML imparano dalle associazioni statistiche dei dati storici e sono validi quanto i dati utilizzati per l'addestramento. Per questo motivo, i dati di buona qualità diventano un imperativo e un elemento essenziale di una pipeline di ML; c'è molto lavoro da fare prima di alimentare i dati con Amazon Personalize.
Amazon Personalize, che più precisamente è una rete neurale, ha bisogno di grandi volumi di dati per generare contenuti rilevanti e pertinenti per l'utente finale. I dati forniti al servizio devono essere rigorosamente vagliati da servizi di pre-elaborazione che ne convalidano il formato e, di conseguenza, la qualità. Tuttavia, per facilitare la comprensione, questi dati possono essere logicamente suddivisi in storici o in tempo reale. Di seguito spiegheremo brevemente questo tipo di suddivisione.
Le aziende di retail possiedono tipicamente dati sui clienti che contengono informazioni sulle vendite, liste dei desideri, preferenze di acquisto, valutazioni dei prodotti, ecc. Si tratta di dati storici sul servizio, raccolti con il passare del tempo. I dati storici possono essere eterogenei e provenire da diverse fonti. In un'azienda data-driven, in genere, le diverse fonti vengono logicamente unificate in quello che viene chiamato Data Lake.
Per gestire una tale varietà di dati, un suggerimento potrebbe essere quello di preparare e pre-elaborare questi dati con una pipeline ETL che ne garantisca la qualità prima di immetterli in Amazon Personalize.
AWS Glue è lo strumento giusto per estrarre, trasformare e caricare (processi di ETL) i dati in un modello. La potenza del Glue Data Catalog e la potenza di calcolo dei Glue Jobs possono essere un valido supporto per il data analyst che ha bisogno di svolgere questo lavoro .
Come descriveremo più avanti, l'idea è di fornire ad Amazon Personalize solo i dati rilevanti per le raccomandazioni; pertanto, il processo ETL deve pulire e selezionare i dati per Amazon Personalize. Questo argomento dipende dai tipi di dati presenti nel sistema. Per quanto riguarda i passaggi più classici, come il rilevamento delle anomalie e la gestione dei valori nulli, si consiglia di non esagerare con queste operazioni per evitare di avere dati troppo elaborati, eliminando la variabilità che Amazon Personalize può sfruttare per addestrare il Recommendation Engine.
L'ultima cosa da fare prima di fornire questi dati ad Amazon Personalize è scegliere il giusto set di feature per il servizio. Amazon Personalize crea raccomandazioni basate sul concetto di gruppi di datasets. Il dominio del dataset group più rilevante per il retail è l"e-commerce". Tre tipi di set di dati caratterizzano questo dataset group:
È possibile definire la struttura di questi set di dati per avere le informazioni più rilevanti che Amazon Personalize utilizzerà per addestrare il suo modello e fornire raccomandazioni. Per questo motivo, l'ultima parte della pipeline ETL dovrebbe selezionare solo questo insieme di feature prima di inviarle ad Amazon Personalize. Il suggerimento è di non entrare troppo nel dettaglio delle categorizzazioni; abbiamo osservato che il risultato migliore si ottiene caratterizzando sufficientemente gli eventi, senza eccedere nel labeling di sotto categorie.
Una volta impostato un dataset group, Amazon Personalize è in grado di fornire raccomandazioni sia su dati storici che su dati di eventi in tempo reale. Nel gergo di Personalize, un evento è definito come un'azione compiuta dall'utente su un oggetto. L'azione viene quindi registrata e inviata nel dataset delle interazioni. Questo feedback continuo in tempo reale modifica il comportamento del modello e lo porta a fornire contenuti più personalizzati all'utente. Questo tipo di interazione tra l'utente e l'applicazione può essere registrata tramite AWS Amplify, supportato da un Cognito Identity Pool, o semplicemente da una funzione Lambda che invia i dati direttamente a Personalize.
Gli event-tracker vengono utilizzati per indirizzare i dati dei nuovi eventi al gruppo di dati corretto.
Una volta preparati i dati storici, sono pronti per essere inviati ad Amazon Personalize. Questo processo è semplice e può essere eseguito con un lavoro di importazione. È sufficiente un'origine, un bucket S3 e un ruolo per leggere i dati al suo interno. Una volta che i dati sono all'interno del servizio, il modello verrà addestrato e sarà possibile iniziare a richiedere raccomandazioni per i clienti dell'e-commerce tramite chiamate API.
Per le aziende che non dispongono di questi dati, non c'è da preoccuparsi! Anche loro possono iniziare a utilizzare Amazon Personalize. Il servizio può ancora essere configurato e inizierà a raccogliere i dati inviati da varie fonti, ma non fornirà ancora alcuna raccomandazione. Dopo un po' di tempo, quando verrà raggiunta la soglia minima di dati, Amazon Personalize addestrerà un modello e inizierà a fornire raccomandazioni per migliorare l'esperienza e la fidelizzazione dei clienti.
Amazon Personalize apprende e migliora continuamente il modello sottostante per essere sempre in linea con le preferenze degli utenti che cambiano nel tempo. Per continuare il processo di apprendimento, gli sviluppatori devono fornire al servizio tutti i dati rilevanti, come già detto: utenti, articoli e interazioni. In questo modo, Amazon Personalize utilizzerà i nuovi dati in arrivo per migliorare il modello e mantenere alta la qualità dei suggerimenti. Questo tipo di ingestione continua di dati è ciò che abbiamo definito prima come dati in tempo reale.
Quando si chiede una raccomandazione, Amazon Personalize può fornire questi tipi di suggerimenti:
Le raccomandazioni possono essere migliorate con regole aziendali specifiche attraverso l'uso di filtri. I filtri sono in grado di escludere o includere gli articoli nelle raccomandazioni o gli utenti presenti in un segmento (ad esempio, un gruppo di affinità). I filtri possono essere creati con l'aiuto di un'espressione testuale di tipo SQL. Questa operazione può portare a ulteriori raccomandazioni filtrate finemente, in quanto il filtraggio può essere basato anche sull'interazione che un utente ha avuto con le raccomandazioni storiche o con quelle in streaming. Inoltre, il filtraggio può essere applicato anche alle raccomandazioni in tempo reale tramite AWS SDK, CLI o console.
Inoltre, per i consigli “Consigliati per te”, ci sono dei parametri addizionali che possono essere impostati per espandere, o ridurre, il gruppo di articoli nel consiglio. Questi parametri risultano molto utili per non incorrere nell’effetto “filter bubble” che verrà discusso nella prossima sezione.
In questo articolo abbiamo descritto come la potenza di Amazon Personalize lo renda un valido strumento tra i vari recommendation engine.
Partendo dai suoi concetti di base, è possibile creare raccomandazioni con gruppi di dati che definiscono il dominio in cui devono essere fatti i suggerimenti. Ogni dominio è caratterizzato dai suoi dataset: utente, articoli e interazioni definiscono il dominio dell'e-commerce. Le applicazioni tengono traccia delle interazioni e, attraverso l'uso di event tracker, ottimizzano continuamente il modello per fornire sempre raccomandazioni altamente pertinenti.
Questo processo rende Amazon Personalize davvero facile e veloce da usare, accelerando enormemente il processo di sviluppo dei motori di raccomandazione, anche per le aziende con piccole conoscenze nel campo del machine learning.
L'elaborazione dei dati da effettuare dovrebbe essere molto ridotta. Amazon Personalize si occuperà di tutto, dall'infrastruttura sottostante all'addestramento del modello e alla sua distribuzione.
Se i dati immessi nel servizio sono buoni, il modello implementato di solito ha ottime prestazioni, ma non è tutto oro quel che luccica.
Amazon Personalize funziona come una scatola nera, quindi il modello implementato può essere testato solo empiricamente e attraverso continue iterazioni. Pertanto, l'importanza della qualità dei dati torna a essere cruciale.
Altri due problemi possono sorgere utilizzando i motori di raccomandazione.
Definiamo il primo come il "problema del bias iniziale". Anche se un gruppo di dati viene etichettato con una delle categorie predefinite di Amazon Personalize, che in cambio fa confluire i dati in un modello corrispondente e pertinente, inizialmente si può incorrere in una scarsa accuratezza del modello. Questo comportamento indesiderato potrebbe essere generato dal fatto che i nostri dati non si adattano bene alla categorizzazione a priori del gruppo di dati e il modello pre-addestrato generalizza su regole troppo ampie. Per mitigare questo effetto, è possibile creare gruppi di dati personalizzati, che a loro volta verranno consumati dal modello con un impatto minore sulle sue prestazioni.
Il secondo problema si incontra ampiamente quando si suggerisce contenuto personalizzato. L’effetto “filter bubble” è un ciclo di feedback in cui un utente alimenta continuamente un modello con dati e quest'ultimo utilizza tali dati per suggerire ciò che ritiene essere contenuto pertinente. Se l'utente accetta la raccomandazione, anche se non completamente soddisfatto, polarizza il modello fornendo contenuti simili a quella raccomandazione. Inoltre, anche se la raccomandazione è rilevante, il gruppo dei possibili contenuti per l’utente sarà delimitato da una “bolla” che rende difficile esplorare nuovi contenuti diversi dal comportamento abituale dell’utente. Amazon Personalize può aiutare utilizzando la metrica "Consigliato per te" su cui vengono consigliati nuovi contenuti, consigliando anche articoli non simili a quelli già suggeriti all'utente. Con l'uso di questi parametri, lo spazio degli articoli consigliati può essere ampliato per includere anche alcuni articoli meno rilevanti e vedere se piacciono o meno all'utente, ampliando la bolla di possibili scelte per il cliente specifico.
Avete già testato Amazon Personalize nelle vostre strategie di recommendation? Vi ha aiutato a migliorare l'esperienza dei vostri utenti? Diteci la vostra nei commenti!
Per adesso è tutto, rimanete sintonizzati per altri articoli sul mondo del machine learning su AWS!