Lag en batch-anbefalingspipeline ved hjelp av Amazon Personalize uten kode PlatoBlockchain Data Intelligence. Vertikalt søk. Ai.

Opprett en batch-anbefalingspipeline ved hjelp av Amazon Personalize uten kode

Med personlig tilpasset innhold mer sannsynlig å drive kundeengasjement, søker bedrifter kontinuerlig å tilby skreddersydd innhold basert på kundens profil og atferd. Spesielt anbefalingssystemer søker å forutsi preferansen en sluttbruker vil gi til en vare. Noen vanlige brukstilfeller inkluderer produktanbefalinger på nettbutikker, personalisering av nyhetsbrev, generering av anbefalinger for musikkspillelister eller til og med oppdagelse av lignende innhold på nettbaserte medietjenester.

Det kan imidlertid være utfordrende å lage et effektivt anbefalingssystem på grunn av kompleksiteten i modelltrening, algoritmevalg og plattformadministrasjon. Amazon Tilpasse gjør det mulig for utviklere å forbedre kundeengasjementet gjennom personlig tilpassede produkt- og innholdsanbefalinger uten maskinlæringskompetanse (ML). Utviklere kan begynne å engasjere kunder med en gang ved å bruke registrerte brukeratferdsdata. Bak kulissene undersøker Amazon Personalize disse dataene, identifiserer hva som er meningsfullt, velger de riktige algoritmene, trener og optimerer en personaliseringsmodell som er tilpasset dataene dine, og gir anbefalinger via et API-endepunkt.

Selv om det å gi anbefalinger i sanntid kan bidra til å øke engasjementet og tilfredsheten, kan det hende at dette faktisk ikke er nødvendig, og å utføre dette i batch på en planlagt basis kan ganske enkelt være et mer kostnadseffektivt og håndterbart alternativ.

Dette innlegget viser deg hvordan du bruker AWS-tjenester til ikke bare å lage anbefalinger, men også operasjonalisere en batch-anbefalingspipeline. Vi går gjennom ende-til-ende-løsningen uten en eneste kodelinje. Vi diskuterer to emner i detalj:

Løsningsoversikt

I denne løsningen bruker vi MovieLens datasett. Dette datasettet inkluderer 86,000 2,113 vurderinger av filmer fra XNUMX XNUMX brukere. Vi prøver å bruke disse dataene til å generere anbefalinger for hver av disse brukerne.

Dataforberedelse er svært viktig for å sikre at vi får kundeatferdsdata i et format som er klart for Amazon Personalize. Arkitekturen beskrevet i dette innlegget bruker AWS Glue, en serverløs dataintegrasjonstjeneste, for å utføre transformasjonen av rådata til et format som er klart for Amazon Personalize å konsumere. Løsningen bruker Amazon Personalize for å lage batch-anbefalinger for alle brukere ved å bruke en batch-slutning. Vi bruker deretter en Step Functions-arbeidsflyt slik at den automatiserte arbeidsflyten kan kjøres ved å kalle Amazon Personalize APIer på en repeterbar måte.

Følgende diagram viser denne løsningen.Arkitektur diagram

Vi vil bygge denne løsningen med følgende trinn:

  1. Bygg en datatransformasjonsjobb for å transformere våre rådata ved hjelp av AWS Glue.
  2. Bygg en Amazon Personalize-løsning med det transformerte datasettet.
  3. Bygg en Step Functions-arbeidsflyt for å orkestrere genereringen av batch-slutninger.

Forutsetninger

Du trenger følgende for denne gjennomgangen:

Bygg en datatransformasjonsjobb for å transformere rådata med AWS Glue

Med Amazon Personalize må inndata ha et spesifikt skjema og filformat. Data fra interaksjoner mellom brukere og elementer må være i CSV-format med spesifikke kolonner, mens listen over brukere du vil generere anbefalinger for må være i JSON-format. I denne delen bruker vi AWS Glue Studio til å transformere rå inndata til de nødvendige strukturene og formatet for Amazon Personalize.

AWS Glue Studio tilbyr et grafisk grensesnitt som er designet for enkel opprettelse og kjøring av uttrekk, transformasjon og lasting (ETL) jobber. Du kan visuelt lage datatransformasjonsarbeidsbelastninger gjennom enkle dra-og-slipp-operasjoner.

Vi forbereder først kildedataene våre i Amazon enkel lagringstjeneste (Amazon S3), så transformerer vi dataene uten kode.

  1. På Amazon S3-konsollen lager du en S3-bøtte med tre mapper: rå, transformert og kurert.
  2. Last ned MovieLens datasett og last opp den ukomprimerte filen med navnet user_ratingmovies-timestamp.dat til bøtten din under råmappen.
  3. På AWS Glue Studio-konsollen velger du Jobb i navigasjonsruten.
  4. Plukke ut Visuelt med kilde og mål, velg deretter Opprett.
  5. Velg den første noden som kalles Datakilde – S3-bøtte. Det er her vi spesifiserer våre inndata.
  6. Datakildeegenskaper kategorien, velg S3 beliggenhet og bla til den opplastede filen.
  7. Til Dataformat, velg CSV, Og for delimiter, velg Tab.
    AWS Glue Studio - S3
  8. Vi kan velge kategorien Utdataskjema for å bekrefte at skjemaet har utledet kolonnene riktig.
  9. Hvis skjemaet ikke samsvarer med forventningene dine, velg Rediger for å redigere skjemaet.
    AWS Glue Studio - Fields

Deretter transformerer vi disse dataene for å følge skjemakravene for Amazon Personalize.

  1. Velg Transform – Bruk kartlegging node og på Transform fanen, oppdater målnøkkelen og datatypene.
    Amazon Personalize forventer minst følgende struktur for interaksjonsdatasett:
    • user_id (String)
    • item_id (String)
    • timestamp (lang, i Unix-epoketidsformat)
      AWS Glue Studio - Feltkartlegging

I dette eksemplet ekskluderer vi de dårlig rangerte filmene i datasettet.

  1. For å gjøre det, fjern den siste noden kalt S3-bøtte og legg til en filternode på Transform fanen.
  2. Velg Legg til tilstand og filtrer ut data der vurdering < 3.5.
    AWS Glue Studio - Utgang

Vi skriver nå utdataene tilbake til Amazon S3.

  1. Utvid Target menyen og velg Amazon S3.
  2. Til S3 Målplassering, velg mappen som heter transformed.
  3. Velg CSV som formatet og suffikset Målsted med interactions/.

Deretter gir vi ut en liste over brukere som vi ønsker å få anbefalinger for.

  1. Velg ApplyMapping node igjen, og utvid deretter Transform menyen og velg ApplyMapping.
  2. Slipp alle felt bortsett fra user_id og gi nytt navn til det feltet til userId. Amazon Personalize forventer at feltet får navn bruker-ID.
  3. Utvid Target menyen igjen og velg Amazon S3.
  4. Velg denne gangen JSON som formatet, og velg deretter den transformerte S3-mappen og suffiks den med batch_users_input/.

Dette produserer en JSON liste over brukere som input for Amazon Personalize. Vi skal nå ha et diagram som ser ut som følgende.

AWS Glue Studio - Hele arbeidsflyten

Vi er nå klare til å utføre transformasjonsjobben vår.

  1. På IAM-konsollen oppretter du en rolle kalt glue-service-rolle og legger ved følgende administrerte retningslinjer:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

For mer informasjon om hvordan du oppretter IAM-tjenesteroller, se Opprette en rolle for å delegere tillatelser til en AWS-tjeneste.

  1. Naviger tilbake til AWS Glue Studio-jobben din, og velg Jobbdetaljer fanen.
  2. Angi jobbnavnet som batch-personalize-input-transform-job.
  3. Velg den nyopprettede IAM-rollen.
  4. Behold standardverdiene for alt annet.
    AWS Glue Studio - Jobbdetaljer
  5. Velg Spar.
  6. Når du er klar, velg Kjør og overvåke jobben i Kjører fanen.
  7. Når jobben er fullført, naviger til Amazon S3-konsollen for å bekrefte at utdatafilen er opprettet.

Vi har nå formet dataene våre til formatet og strukturen som Amazon Personalize krever. Det transformerte datasettet skal ha følgende felt og format:

  • Interaksjonsdatasett – CSV-format med felt USER_ID, ITEM_ID, TIMESTAMP
  • Brukerinndatadatasett – JSON-format med element userId

Bygg en Amazon Personalize-løsning med det transformerte datasettet

Med vårt interaksjonsdatasett og brukerinndata i riktig format, kan vi nå lage vår Amazon Personalize-løsning. I denne delen oppretter vi datasettgruppen vår, importerer dataene våre og lager deretter en batch-inferensjobb. En datasettgruppe organiserer ressurser i beholdere for Amazon Personalize-komponenter.

  1. På Amazon Personalize-konsollen velger du Opprett datasettgruppe.
  2. Til Domene, plukke ut Custom.
  3. Velg Opprett datasettgruppe og fortsett.
    Amazon Personalize - opprett datasettgruppe

Deretter oppretter du interaksjonsdatasettet.

  1. Skriv inn et datasettnavn og velg Opprett nytt skjema.
  2. Velg Opprett datasett og fortsett.
    Amazon Personalize - lag interaksjonsdatasett

Vi importerer nå interaksjonsdataene vi hadde opprettet tidligere.

  1. Naviger til S3-bøtten der vi laget vårt interaksjons-CSV-datasett.
  2. Tillatelser fanen, legg til følgende retningslinjer for bøttetilgang slik at Amazon Personalize har tilgang. Oppdater retningslinjene for å inkludere samlingsnavnet ditt.
    {
       "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> /*"
             ]
          }
       ]
    }

Naviger tilbake til Amazon Personalize og velg Opprett datasettimporteringsjobben. Interaksjonsdatasettet vårt skal nå importeres til Amazon Personalize. Vent til importjobben er fullført med statusen Aktiv før du fortsetter til neste trinn. Dette bør ta ca. 8 minutter.

  1. På Amazon Personalize-konsollen velger du Oversikt i navigasjonsruten og velg Lag løsning.
    Amazon Personalize - Dashboard
  2. Skriv inn et løsningsnavn.
  3. Til Løsningstype, velg Vareanbefaling.
  4. Til Oppskrift, Velg aws-user-personalization oppskriften.
  5. Velg Lag og tren løsning.
    Amazon Personalize - lag løsning

Løsningen trener nå mot interaksjonsdatasettet som ble importert med brukertilpasningsoppskriften. Overvåk status for denne prosessen under Løsningsversjoner. Vent til den er fullført før du fortsetter. Dette bør ta ca. 20 minutter.
Amazon Personalize - Status

Vi oppretter nå vår batch-inferensjobb, som genererer anbefalinger for hver av brukerne som er tilstede i JSON-inngangen.

  1. I navigasjonsruten under Egendefinerte ressurser, velg Batch inferens jobber.
  2. Skriv inn et jobbnavn, og for Oppløsning, velg løsningen opprettet tidligere.
  3. Velg Opprett batch-inferensjobb.
    Amazon Personalize - lag batch-inferensjobb
  4. Til Inndatakonfigurasjon, skriv inn S3-banen til der batch_users_input filen er lokalisert.

Dette er JSON-filen som inneholder userId.

  1. Til Konfigurasjon av utdata banen, velg den kurerte banen i S3.
  2. Velg Opprett batch-inferensjobb.

Denne prosessen tar omtrent 30 minutter. Når jobben er fullført, lagres anbefalinger for hver av brukerne som er spesifisert i brukerinndatafilen på S3-utdatastedet.

Vi har generert et sett med anbefalinger for alle våre brukere. Vi har imidlertid bare implementert løsningen ved hjelp av konsollen så langt. For å sikre at denne batch-slutningen kjører regelmessig med det siste settet med data, må vi bygge en orkestreringsarbeidsflyt. I neste seksjon viser vi deg hvordan du lager en orkestreringsarbeidsflyt ved hjelp av Step Functions.

Bygg en Step Functions-arbeidsflyt for å orkestrere batch-inferensarbeidsflyten

For å orkestrere pipeline, fullfør følgende trinn:

  1. På Step Functions-konsollen velger du Lag State Machine.
  2. Plukke ut Design arbeidsflyten din visuelt, velg deretter neste.
    AWS Step Functions - Lag arbeidsflyt
  3. Dra CreateDatasetImportJob node fra venstre (du kan søke etter denne noden i søkeboksen) inn på lerretet.
  4. Velg noden, og du skal se konfigurasjons-API-parametrene til høyre. Registrer ARN.
  5. Skriv inn dine egne verdier i API-parametere tekstboks.

Dette kaller CreateDatasetImportJob API med parameterverdiene du angir.

AWS Step Functions Workflow

  1. Dra CreateSolutionVersion node på lerretet.
  2. Oppdater API-parametrene med ARN for løsningen du noterte ned.

Dette oppretter en ny løsningsversjon med de nylig importerte dataene ved å ringe CreateSolutionVersion API.

  1. Dra CreateBatchInferenceJob node på lerretet og på samme måte oppdater API-parametrene med de relevante verdiene.

Pass på at du bruker $.SolutionVersionArn syntaks for å hente ARN-parameteren for løsningsversjon fra forrige trinn. Disse API-parametrene sendes til CreateBatchInferenceJob API.

AWS Step Functions Workflow

Vi må bygge en ventelogikk i Step Functions-arbeidsflyten for å sikre at anbefalingsbatch-slutningsjobben fullføres før arbeidsflyten fullføres.

  1. Finn og dra i en Vent-node.
  2. I konfigurasjonen for Vent, skriv inn 300 sekunder.

Dette er en vilkårlig verdi; du bør endre denne ventetiden i henhold til din spesifikke brukssituasjon.

  1. Velg CreateBatchInferenceJob noden igjen og naviger til Feilhåndtering fanen.
  2. Til Catch feil, Tast inn Personalize.ResourceInUseException.
  3. Til Reservetilstand, velg Vent.

Dette trinnet gjør det mulig for oss å sjekke statusen til jobben med jevne mellomrom, og den går ut av loopen først når jobben er fullført.

  1. Til ResultPath, Tast inn $.errorMessage.

Dette betyr i praksis at når unntaket "ressurs i bruk" mottas, venter jobben i x sekunder før den prøver igjen med de samme inngangene.

AWS Step Functions Workflow

  1. Velg Spar, og velg deretter Start utførelsen.

Vi har vellykket orkestrert vår batch-anbefalingspipeline for Amazon Personalize. Som et valgfritt trinn kan du bruke Amazon EventBridge å planlegge en utløser av denne arbeidsflyten med jevne mellomrom. For flere detaljer, se EventBridge (CloudWatch Events) for endringer i utførelsesstatus for trinnfunksjoner.

Rydd opp

For å unngå fremtidige kostnader, slett ressursene du opprettet for denne gjennomgangen.

konklusjonen

I dette innlegget demonstrerte vi hvordan du lager en batch-anbefalingspipeline ved å bruke en kombinasjon av AWS Glue, Amazon Personalize og Step Functions, uten å trenge en eneste kodelinje eller ML-erfaring. Vi brukte AWS Glue for å forberede dataene våre til formatet som Amazon Personalize krever. Deretter brukte vi Amazon Personalize til å importere dataene, lage en løsning med en brukertilpasningsoppskrift og lage en batch-slutningsjobb som genererer en standard på 25 anbefalinger for hver bruker, basert på tidligere interaksjoner. Vi orkestrerte deretter disse trinnene ved hjelp av Step Functions slik at vi kan kjøre disse jobbene automatisk.

For trinn å vurdere neste, er brukersegmentering en av de nyere oppskriftene i Amazon Personalize, som du kanskje vil utforske for å lage brukersegmenter for hver rad med inndata. For flere detaljer, se Få batch-anbefalinger og brukersegmenter.


Om forfatteren

Maxine Wee

Maxine Wee er en AWS Data Lab Solutions Architect. Maxine samarbeider med kunder om deres brukstilfeller, designer løsninger for å løse deres forretningsproblemer og veileder dem gjennom å bygge skalerbare prototyper. Før reisen hennes med AWS hjalp Maxine kunder med å implementere BI-, datavarehus- og datainnsjø-prosjekter i Australia.

Tidstempel:

Mer fra AWS maskinlæring