Creați un canal de recomandări de lot folosind Amazon Personalize fără cod PlatoBlockchain Data Intelligence. Căutare verticală. Ai.

Creați un canal de recomandări de lot folosind Amazon Personalize fără cod

Cu conținutul personalizat mai probabil să stimuleze implicarea clienților, companiile caută în mod continuu să ofere conținut personalizat, bazat pe profilul și comportamentul clienților lor. Sistemele de recomandare, în special, urmăresc să prezică preferința pe care un utilizator final o acordă unui articol. Unele cazuri obișnuite de utilizare includ recomandări de produse în magazinele online de vânzare cu amănuntul, personalizarea buletinelor informative, generarea de recomandări pentru playlisturi muzicale sau chiar descoperirea de conținut similar pe serviciile media online.

Cu toate acestea, poate fi o provocare să se creeze un sistem eficient de recomandare din cauza complexității în pregătirea modelului, selecția algoritmilor și gestionarea platformei. Personalizați Amazon permite dezvoltatorilor să îmbunătățească implicarea clienților prin recomandări personalizate de produse și conținut, fără a fi necesară expertiza în învățarea automată (ML). Dezvoltatorii pot începe să implice clienții imediat, utilizând datele de comportament ale utilizatorilor capturate. În culise, Amazon Personalize examinează aceste date, identifică ceea ce este semnificativ, selectează algoritmii potriviți, antrenează și optimizează un model de personalizare care este personalizat pentru datele dvs. și oferă recomandări prin intermediul unui punct final API.

Deși oferirea de recomandări în timp real poate contribui la creșterea angajamentului și a satisfacției, uneori acest lucru s-ar putea să nu fie de fapt necesar, iar efectuarea acestui lucru în lot pe o bază programată poate fi pur și simplu o opțiune mai rentabilă și mai gestionabilă.

Această postare vă arată cum să utilizați serviciile AWS nu numai pentru a crea recomandări, ci și pentru a operaționaliza un canal de recomandări pe lot. Parcurgem soluția end-to-end fără o singură linie de cod. Discutăm în detaliu două subiecte:

Prezentare generală a soluțiilor

În această soluție, folosim MovieLens set de date. Acest set de date include 86,000 de evaluări ale filmelor de la 2,113 utilizatori. Încercăm să folosim aceste date pentru a genera recomandări pentru fiecare dintre acești utilizatori.

Pregătirea datelor este foarte importantă pentru a ne asigura că primim datele despre comportamentul clienților într-un format care este gata pentru Amazon Personalize. Arhitectura descrisă în această postare folosește AWS Glue, un serviciu de integrare a datelor fără server, pentru a realiza transformarea datelor brute într-un format care este gata de consumat de Amazon Personalize. Soluția folosește Amazon Personalize pentru a crea recomandări de lot pentru toți utilizatorii folosind o inferență de lot. Apoi folosim un flux de lucru Step Functions, astfel încât fluxul de lucru automatizat să poată fi rulat apelând API-urile Amazon Personalize într-o manieră repetabilă.

Următoarea diagramă demonstrează această soluție.Diagrama arhitecturii

Vom construi această soluție cu următorii pași:

  1. Creați o lucrare de transformare a datelor pentru a ne transforma datele brute folosind AWS Glue.
  2. Creați o soluție Amazon Personalize cu setul de date transformat.
  3. Creați un flux de lucru Step Functions pentru a orchestra generarea de inferențe pe lot.

Cerințe preliminare

Aveți nevoie de următoarele pentru acest tutorial:

Creați o lucrare de transformare a datelor pentru a transforma datele brute cu AWS Glue

Cu Amazon Personalize, datele de intrare trebuie să aibă o schemă și un format de fișier specific. Datele din interacțiunile dintre utilizatori și articole trebuie să fie în format CSV cu anumite coloane, în timp ce lista de utilizatori pentru care doriți să generați recomandări trebuie să fie în format JSON. În această secțiune, folosim AWS Glue Studio pentru a transforma datele brute de intrare în structurile și formatul necesare pentru Amazon Personalize.

AWS Glue Studio oferă o interfață grafică concepută pentru crearea și rularea ușoară a joburilor de extragere, transformare și încărcare (ETL). Puteți crea vizual sarcini de lucru pentru transformarea datelor prin operațiuni simple de glisare și plasare.

Mai întâi pregătim datele sursă în Serviciul Amazon de stocare simplă (Amazon S3), apoi transformăm datele fără cod.

  1. Pe consola Amazon S3, creați o găleată S3 cu trei foldere: brut, transformat și curatat.
  2. Descărcați Setul de date MovieLens și încărcați fișierul necomprimat numit user_ratingmovies-timestamp.dat în compartimentul dvs. din folderul brut.
  3. Pe consola AWS Glue Studio, alegeți Locuri de munca în panoul de navigare.
  4. Selectați Vizual cu o sursă și o țintă, Apoi alegeți Crea.
  5. Alegeți primul nod numit Sursa de date – găleată S3. Aici specificăm datele noastre de intrare.
  6. Pe Proprietățile sursei de date , selectați Locația S3 și răsfoiți la fișierul încărcat.
  7. Pentru Format date, alege CSV, Și pentru delimitator, alege Tab.
    AWS Glue Studio - S3
  8. Putem alege fila Schemă de ieșire pentru a verifica dacă schema a dedus corect coloanele.
  9. Dacă schema nu corespunde așteptărilor tale, alege Editati pentru a edita schema.
    AWS Glue Studio - Câmpuri

Apoi, transformăm aceste date pentru a urma cerințele schemei pentru Amazon Personalize.

  1. Alege Transformare – Aplicați maparea nod și, pe Transforma fila, actualizați cheia țintă și tipurile de date.
    Amazon Personalize, cel puțin, se așteaptă la următoarea structură pentru set de date de interacțiuni:
    • user_id (şir)
    • item_id (şir)
    • timestamp (lung, în format Unix epoch time)
      AWS Glue Studio - Maparea câmpului

În acest exemplu, excludem filmele slab evaluate din setul de date.

  1. Pentru a face acest lucru, eliminați ultimul nod numit S3 bucket și adăugați un nod de filtru pe Transforma tab.
  2. Alege Adăuga condiție și filtrați datele în care ratingul < 3.5.
    AWS Glue Studio - Ieșire

Acum scriem rezultatul înapoi pe Amazon S3.

  1. extinde Ţintă meniu și alegeți Amazon S3.
  2. Pentru Locație țintă S3, alegeți folderul numit transformed.
  3. Alege CSV ca format și sufixul Locația țintă cu interactions/.

Apoi, scoatem o listă de utilizatori pentru care dorim să primim recomandări.

  1. Alege ApplyMapping nodul din nou, apoi extindeți Transforma meniu și alegeți ApplyMapping.
  2. Aruncă toate câmpurile cu excepția user_id și redenumiți acel câmp în userId. Amazon Personalize se așteaptă ca acel câmp să fie numit numele de utilizator.
  3. extinde Ţintă meniu din nou și alegeți Amazon S3.
  4. De data aceasta, alege JSON ca format, apoi alegeți folderul S3 transformat și sufixați-l cu batch_users_input/.

Aceasta produce o JSON lista de utilizatori ca intrare pentru Amazon Personalize. Acum ar trebui să avem o diagramă care arată ca următoarea.

AWS Glue Studio - întregul flux de lucru

Acum suntem pregătiți să rulăm jobul nostru de transformare.

  1. Pe consola IAM, creați un rol numit glue-service-role și atașați următoarele politici gestionate:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Pentru mai multe informații despre cum să creați roluri de serviciu IAM, consultați Crearea unui rol pentru a delega permisiunile unui serviciu AWS.

  1. Navigați înapoi la jobul dvs. AWS Glue Studio și alegeți Detaliile postului tab.
  2. Setați numele jobului ca batch-personalize-input-transform-job.
  3. Alegeți rolul IAM nou creat.
  4. Păstrați valorile implicite pentru orice altceva.
    AWS Glue Studio - Detalii job
  5. Alege Economisiți.
  6. Când ești gata, alege Alerga și monitorizați munca în Rulează tab.
  7. Când lucrarea este finalizată, navigați la consola Amazon S3 pentru a valida că fișierul de ieșire a fost creat cu succes.

Acum ne-am modelat datele în formatul și structura pe care le solicită Amazon Personalize. Setul de date transformat ar trebui să aibă următoarele câmpuri și format:

  • Setul de date privind interacțiunile – Format CSV cu câmpuri USER_ID, ITEM_ID, TIMESTAMP
  • Set de date introduse de utilizator – Format JSON cu element userId

Creați o soluție Amazon Personalize cu setul de date transformat

Cu setul nostru de date privind interacțiunile și datele introduse de utilizator în formatul potrivit, acum putem crea soluția noastră Amazon Personalize. În această secțiune, ne creăm grupul de seturi de date, ne importăm datele și apoi creăm un job de inferență în lot. Un grup de set de date organizează resursele în containere pentru componentele Amazon Personalize.

  1. Pe consola Amazon Personalize, alegeți Crea grup de set de date.
  2. Pentru domeniu, Selectați pachet personalizat.
  3. Alege Creați un grup de set de date și continuați.
    Amazon Personalize - creați un grup de seturi de date

Apoi, creați setul de date de interacțiuni.

  1. Introduceți un nume de set de date și selectați Creați o nouă schemă.
  2. Alege Creați un set de date și continuați.
    Amazon Personalize - creați un set de date de interacțiuni

Acum importăm datele de interacțiuni pe care le-am creat mai devreme.

  1. Navigați la compartimentul S3 în care am creat setul de date CSV pentru interacțiuni.
  2. Pe Permisiuni fila, adăugați următoarea politică de acces la compartiment, astfel încât Amazon Personalize să aibă acces. Actualizați politica pentru a include numele compartimentului dvs.
    {
       "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> /*"
             ]
          }
       ]
    }

Navigați înapoi la Amazon Personalize și alegeți Creați sarcina de import a setului de date. Setul nostru de date privind interacțiunile ar trebui acum să fie importat în Amazon Personalize. Așteptați finalizarea sarcinii de import cu starea Activ înainte de a continua cu pasul următor. Acest lucru ar trebui să dureze aproximativ 8 minute.

  1. Pe consola Amazon Personalize, alegeți Descriere în panoul de navigare și alegeți Creați soluție.
    Amazon Personalize - Tabloul de bord
  2. Introduceți un nume de soluție.
  3. Pentru Tipul soluției, alege Recomandare articol.
  4. Pentru Rețetă, alege aws-user-personalization reţetă.
  5. Alege Creați și instruiți soluția.
    Amazon Personalize - creați soluție

Soluția se antrenează acum pe setul de date de interacțiuni care a fost importat cu rețeta de personalizare a utilizatorului. Monitorizați starea acestui proces sub Versiuni de soluție. Așteptați să se finalizeze înainte de a continua. Acest lucru ar trebui să dureze aproximativ 20 de minute.
Amazon Personalize - Stare

Acum creăm jobul nostru de inferență în lot, care generează recomandări pentru fiecare dintre utilizatorii prezenți în intrarea JSON.

  1. În panoul de navigare, sub Resurse personalizate, alege Locuri de muncă de inferență.
  2. Introduceți un nume de job și pentru Soluţie, alegeți soluția creată mai devreme.
  3. Alege Creați o lucrare de deducere a lotului.
    Amazon Personalize - creați job de inferență în lot
  4. Pentru Configurarea datelor de intrare, introduceți calea S3 de unde este batch_users_input fișierul este localizat.

Acesta este fișierul JSON care conține userId.

  1. Pentru Configurarea datelor de ieșire cale, alegeți calea organizată în S3.
  2. Alege Creați o lucrare de deducere a lotului.

Acest proces durează aproximativ 30 de minute. Când lucrarea este terminată, recomandările pentru fiecare dintre utilizatorii specificati în fișierul de intrare al utilizatorului sunt salvate în locația de ieșire S3.

Am generat cu succes un set de recomandări pentru toți utilizatorii noștri. Cu toate acestea, până acum am implementat soluția doar folosind consola. Pentru a ne asigura că această inferență în lot rulează în mod regulat cu cel mai recent set de date, trebuie să construim un flux de lucru de orchestrare. În secțiunea următoare, vă arătăm cum să creați un flux de lucru de orchestrare utilizând funcțiile pas.

Creați un flux de lucru Step Functions pentru a orchestra fluxul de lucru de inferență în lot

Pentru a vă orchestra conducta, parcurgeți următorii pași:

  1. Pe consola Step Functions, alegeți Creați mașină de stat.
  2. Selectați Proiectați-vă vizual fluxul de lucru, Apoi alegeți Pagina Următoare →.
    Funcții AWS Step - Creați flux de lucru
  3. Trageți CreateDatasetImportJob nodul din stânga (puteți căuta acest nod în caseta de căutare) pe pânză.
  4. Alegeți nodul și ar trebui să vedeți parametrii API de configurare în partea dreaptă. Înregistrați ARN-ul.
  5. Introduceți propriile valori în Parametrii API casetă de text.

Aceasta numește CreateDatasetImportJob API cu valorile parametrilor pe care le specificați.

Flux de lucru AWS Step Functions

  1. Trageți CreateSolutionVersion nod pe pânză.
  2. Actualizați parametrii API cu ARN-ul soluției pe care ați notat-o.

Acest lucru creează o nouă versiune a soluției cu datele nou importate apelând la CreateSolutionVersion API-ul.

  1. Trageți CreateBatchInferenceJob nodul pe pânză și, în mod similar, actualizați parametrii API cu valorile relevante.

Asigurați-vă că utilizați $.SolutionVersionArn sintaxă pentru a prelua parametrul ARN al versiunii soluției de la pasul anterior. Acești parametri API sunt transferați către CreateBatchInferenceJob API-ul.

Flux de lucru AWS Step Functions

Trebuie să construim o logică de așteptare în fluxul de lucru Step Functions pentru a ne asigura că jobul de inferență pe lot de recomandare se termină înainte de finalizarea fluxului de lucru.

  1. Găsiți și trageți într-un nod Wait.
  2. În configurația pentru Așteaptă, introduceți 300 de secunde.

Aceasta este o valoare arbitrară; ar trebui să modificați acest timp de așteptare în funcție de cazul dvs. de utilizare specific.

  1. Alege CreateBatchInferenceJob nodul din nou și navigați la Eroare de manipulare tab.
  2. Pentru Captură Erori, introduce Personalize.ResourceInUseException.
  3. Pentru Stare de rezervă, alege Așteaptă.

Acest pas ne permite să verificăm periodic starea lucrării și iese din buclă numai când lucrarea este finalizată.

  1. Pentru Calea rezultatelor, introduce $.errorMessage.

Acest lucru înseamnă efectiv că atunci când se primește excepția „resurse în uz”, jobul așteaptă x secunde înainte de a încerca din nou cu aceleași intrări.

Flux de lucru AWS Step Functions

  1. Alege Economisiți, apoi alegeți Începeți execuția.

Am orchestrat cu succes canalul nostru de recomandări de lot pentru Amazon Personalize. Ca pas opțional, puteți utiliza Amazon EventBridge pentru a programa un declanșator al acestui flux de lucru în mod regulat. Pentru mai multe detalii, consultați EventBridge (Evenimente CloudWatch) pentru modificarea stării de execuție a funcțiilor pas.

A curăța

Pentru a evita costurile viitoare, ștergeți resursele pe care le-ați creat pentru această explicație.

Concluzie

În această postare, am demonstrat cum să creați o conductă de recomandări de loturi utilizând o combinație de AWS Glue, Amazon Personalize și Funcții Step, fără a fi nevoie de o singură linie de cod sau de experiență ML. Am folosit AWS Glue pentru a ne pregăti datele în formatul cerut de Amazon Personalize. Apoi am folosit Amazon Personalize pentru a importa datele, pentru a crea o soluție cu o rețetă de personalizare a utilizatorului și pentru a crea un job de inferență în lot care generează o valoare implicită de 25 de recomandări pentru fiecare utilizator, pe baza interacțiunilor anterioare. Apoi am orchestrat acești pași folosind Funcții de pași, astfel încât să putem rula aceste joburi automat.

Pentru pașii de luat în considerare în continuare, segmentarea utilizatorilor este una dintre cele mai noi rețete din Amazon Personalize, pe care ar putea dori să o explorați pentru a crea segmente de utilizatori pentru fiecare rând de date de intrare. Pentru mai multe detalii, consultați Obținerea de recomandări de loturi și segmente de utilizatori.


Despre autor

Maxine Wee

Maxine Wee este arhitect de soluții AWS Data Lab. Maxine lucrează cu clienții la cazurile lor de utilizare, proiectează soluții pentru a le rezolva problemele de afaceri și îi ghidează prin construirea de prototipuri scalabile. Înainte de călătoria ei cu AWS, Maxine a ajutat clienții să implementeze proiecte de BI, depozitare de date și lacuri de date în Australia.

Timestamp-ul:

Mai mult de la Învățare automată AWS