Skapa en batchrekommendationspipeline med Amazon Personalize utan kod PlatoBlockchain Data Intelligence. Vertikal sökning. Ai.

Skapa en batchrekommendationspipeline med Amazon Personalize utan kod

Med personligt innehåll som är mer sannolikt att driva kundernas engagemang, strävar företag kontinuerligt efter att tillhandahålla skräddarsytt innehåll baserat på deras kunds profil och beteende. Rekommendationssystem i synnerhet försöker förutsäga vilken preferens en slutanvändare skulle ge en vara. Några vanliga användningsfall inkluderar produktrekommendationer i onlinebutiker, anpassa nyhetsbrev, generera rekommendationer för musikspellistor eller till och med upptäcka liknande innehåll på onlinemedietjänster.

Det kan dock vara utmanande att skapa ett effektivt rekommendationssystem på grund av komplexiteten i modellträning, val av algoritmer och plattformshantering. Amazon Anpassa gör det möjligt för utvecklare att förbättra kundernas engagemang genom personliga produkt- och innehållsrekommendationer utan att behöva expertis inom maskininlärning (ML). Utvecklare kan börja engagera kunder direkt genom att använda infångad data om användarbeteende. Bakom kulisserna undersöker Amazon Personalize denna data, identifierar vad som är meningsfullt, väljer rätt algoritmer, tränar och optimerar en personaliseringsmodell som är anpassad för din data och ger rekommendationer via en API-slutpunkt.

Även om rekommendationer i realtid kan hjälpa till att öka engagemanget och tillfredsställelsen, kan det ibland inte krävas, och att utföra detta i grupp på en schemalagd basis kan helt enkelt vara ett mer kostnadseffektivt och hanterbart alternativ.

Det här inlägget visar hur du använder AWS-tjänster för att inte bara skapa rekommendationer utan också operationalisera en batch-rekommendationspipeline. Vi går igenom end-to-end-lösningen utan en enda kodrad. Vi diskuterar två ämnen i detalj:

Lösningsöversikt

I den här lösningen använder vi Filmlinser dataset. Denna datauppsättning innehåller 86,000 2,113 betyg av filmer från XNUMX XNUMX användare. Vi försöker använda denna data för att generera rekommendationer för var och en av dessa användare.

Dataförberedelse är mycket viktigt för att säkerställa att vi får kundbeteendedata i ett format som är redo för Amazon Personalize. Arkitekturen som beskrivs i det här inlägget använder AWS Glue, en serverlös dataintegrationstjänst, för att utföra omvandlingen av rådata till ett format som är redo för Amazon Personalize att konsumera. Lösningen använder Amazon Personalize för att skapa batch-rekommendationer för alla användare genom att använda en batch-slutledning. Vi använder sedan ett Step Functions-arbetsflöde så att det automatiserade arbetsflödet kan köras genom att anropa Amazon Personalize APIs på ett repeterbart sätt.

Följande diagram visar denna lösning.Arkitektur diagram

Vi kommer att bygga denna lösning med följande steg:

  1. Bygg ett datatransformationsjobb för att transformera vår rådata med AWS Glue.
  2. Bygg en Amazon Personalize-lösning med den transformerade datamängden.
  3. Bygg ett arbetsflöde för stegfunktioner för att orkestrera genereringen av batch-slutledningar.

Förutsättningar

Du behöver följande för denna genomgång:

Bygg ett datatransformationsjobb för att transformera rådata med AWS Glue

Med Amazon Personalize måste indata ha ett specifikt schema och filformat. Data från interaktioner mellan användare och objekt måste vara i CSV-format med specifika kolumner, medan listan över användare som du vill generera rekommendationer för måste vara i JSON-format. I det här avsnittet använder vi AWS Glue Studio för att omvandla rå indata till de strukturer och format som krävs för Amazon Personalize.

AWS Glue Studio tillhandahåller ett grafiskt gränssnitt som är designat för att enkelt skapa och köra extrahera, transformera och ladda (ETL) jobb. Du kan visuellt skapa arbetsbelastningar för datatransformation genom enkla dra-och-släpp-operationer.

Vi förbereder först våra källdata i Amazon enkel lagringstjänst (Amazon S3), sedan transformerar vi data utan kod.

  1. På Amazon S3-konsolen skapar du en S3-hink med tre mappar: rå, transformerad och kurerad.
  2. ladda ner MovieLens dataset och ladda upp den okomprimerade filen med namnet user_ratingmovies-timestamp.dat till din hink under råmappen.
  3. Välj på AWS Glue Studio-konsolen Lediga jobb i navigeringsfönstret.
  4. Välja Visual med en källa och målOch välj sedan Skapa.
  5. Välj den första noden som anropas Datakälla – S3-hink. Det är här vi specificerar våra indata.
  6. Datakällans egenskaper fliken, välj S3-plats och bläddra till din uppladdade fil.
  7. För Dataformatväljer CSVOch för avgränsareväljer Fliken.
    AWS Glue Studio - S3
  8. Vi kan välja fliken Utdataschema för att verifiera att schemat har slutit kolumnerna korrekt.
  9. Om schemat inte matchar dina förväntningar, välj Redigera för att redigera schemat.
    AWS Glue Studio - Fields

Därefter transformerar vi dessa data för att följa schemakraven för Amazon Personalize.

  1. Välj Transformera – Tillämpa mappning nod och på Förvandla uppdaterar du målnyckeln och datatyperna.
    Amazon Personalize förväntar sig åtminstone följande struktur för interaktionsdataset:
    • user_id (sträng)
    • item_id (sträng)
    • timestamp (lång, i Unix-epoktidsformat)
      AWS Glue Studio - Fältkartläggning

I det här exemplet utesluter vi de dåligt betygsatta filmerna i datasetet.

  1. För att göra det, ta bort den sista noden som heter S3-hinken och lägg till en filternod på Förvandla fliken.
  2. Välja Lägg till tillstånd och filtrera bort data där betyg < 3.5.
    AWS Glue Studio - Output

Vi skriver nu tillbaka utdata till Amazon S3.

  1. Expandera Målet menyn och välj Amazon S3.
  2. För S3 Målplats, välj mappen som heter transformed.
  3. Välja CSV som formatet och suffixet Målplats med interactions/.

Därefter matar vi ut en lista över användare som vi vill få rekommendationer för.

  1. Välj ApplyMapping noden igen och expandera sedan Förvandla menyn och välj ApplyMapping.
  2. Släpp alla fält utom user_id och byt namn på det fältet till userId. Amazon Personalize förväntar sig att det fältet ska namnges användar ID.
  3. Expandera Målet menyn igen och välj Amazon S3.
  4. Välj den här gången JSON som format, och välj sedan den transformerade S3-mappen och suffix den med batch_users_input/.

Detta ger en JSON lista över användare som input för Amazon Personalize. Vi bör nu ha ett diagram som ser ut som följande.

AWS Glue Studio - Hela arbetsflödet

Vi är nu redo att köra vårt transformationsjobb.

  1. På IAM-konsolen skapar du en roll som kallas glue-service-role och bifogar följande hanterade policyer:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

För mer information om hur du skapar IAM-tjänstroller, se Skapa en roll för att delegera behörigheter till en AWS-tjänst.

  1. Navigera tillbaka till ditt AWS Glue Studio-jobb och välj Jobb detaljer fliken.
  2. Ställ in jobbnamnet som batch-personalize-input-transform-job.
  3. Välj den nyskapade IAM-rollen.
  4. Behåll standardvärdena för allt annat.
    AWS Glue Studio - Jobbdetaljer
  5. Välja Save.
  6. När du är redo, välj Körning och övervaka jobbet i Körs fliken.
  7. När jobbet är klart, navigera till Amazon S3-konsolen för att verifiera att din utdatafil har skapats.

Vi har nu format vår data till det format och den struktur som Amazon Personalize kräver. Den transformerade datamängden ska ha följande fält och format:

  • Interaktionsdatasätt – CSV-format med fält USER_ID, ITEM_ID, TIMESTAMP
  • Användardatauppsättning – JSON-format med element userId

Bygg en Amazon Personalize-lösning med den transformerade datamängden

Med vår interaktionsdatauppsättning och användarindata i rätt format kan vi nu skapa vår Amazon Personalize-lösning. I det här avsnittet skapar vi vår datauppsättningsgrupp, importerar våra data och skapar sedan ett batch slutledningsjobb. En datasetgrupp organiserar resurser i behållare för Amazon Personalize-komponenter.

  1. Välj på Amazon Personalize-konsolen Skapa datagrupp.
  2. För Domän, Välj Custom.
  3. Välja Skapa datauppsättningsgrupp och fortsätt.
    Amazon Personalize - skapa datasetgrupp

Skapa sedan interaktionsdataset.

  1. Ange ett datauppsättningsnamn och välj Skapa nytt schema.
  2. Välja Skapa datauppsättning och fortsätt.
    Amazon Personalize - skapa interaktionsdataset

Vi importerar nu interaktionsdata som vi hade skapat tidigare.

  1. Navigera till S3-bucket där vi skapade vår interaktions-CSV-datauppsättning.
  2. behörigheter lägg till följande åtkomstpolicy för bucket så att Amazon Personalize har åtkomst. Uppdatera policyn för att inkludera ditt segmentnamn.
    {
       "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> /*"
             ]
          }
       ]
    }

Navigera tillbaka till Amazon Personalize och välj Skapa ditt datauppsättningsimportjobb. Vår interaktionsdatauppsättning bör nu importeras till Amazon Personalize. Vänta tills importjobbet är klart med statusen Aktiv innan du fortsätter till nästa steg. Detta bör ta cirka 8 minuter.

  1. Välj på Amazon Personalize-konsolen Översikt i navigeringsfönstret och välj Skapa lösning.
    Amazon Personalize - Dashboard
  2. Ange ett lösningsnamn.
  3. För Lösningstypväljer Artikelrekommendation.
  4. För Receptet, Välj den aws-user-personalization recept.
  5. Välja Skapa och träna lösning.
    Amazon Personalize - skapa lösning

Lösningen tränar nu mot interaktionsdatasetet som importerades med receptet för användaranpassning. Övervaka statusen för denna process under Lösningsversioner. Vänta tills det är klart innan du fortsätter. Detta bör ta cirka 20 minuter.
Amazon Personalize - Status

Vi skapar nu vårt batch-inferensjobb, som genererar rekommendationer för var och en av användarna som finns i JSON-ingången.

  1. I navigeringsfönstret, under Anpassade resurserväljer Batch inferensjobb.
  2. Ange ett jobbnamn och för Lösning, välj den lösning som skapats tidigare.
  3. Välja Skapa partiinferensjobb.
    Amazon Personalize - skapa batch slutledningsjobb
  4. För Indatakonfiguration, ange S3-vägen där batch_users_input filen finns.

Det här är JSON-filen som innehåller userId.

  1. För Konfiguration av utdata bana, välj den kurerade sökvägen i S3.
  2. Välja Skapa partiinferensjobb.

Denna process tar cirka 30 minuter. När jobbet är klart sparas rekommendationer för var och en av användarna som anges i användarinmatningsfilen på S3-utgångsplatsen.

Vi har framgångsrikt genererat en uppsättning rekommendationer för alla våra användare. Vi har dock bara implementerat lösningen med hjälp av konsolen än så länge. För att se till att denna batch-inferencing körs regelbundet med den senaste uppsättningen data, måste vi bygga ett orkestreringsarbetsflöde. I nästa avsnitt visar vi dig hur du skapar ett orkestreringsarbetsflöde med hjälp av Step Functions.

Bygg ett arbetsflöde för stegfunktioner för att orkestrera arbetsflödet för batch slutledning

Utför följande steg för att orkestrera din pipeline:

  1. Välj på Step Functions-konsolen Skapa State Machine.
  2. Välja Designa ditt arbetsflöde visuelltOch välj sedan Nästa.
    AWS Steg Funktioner - Skapa arbetsflöde
  3. Dra CreateDatasetImportJob nod från vänster (du kan söka efter denna nod i sökrutan) till duken.
  4. Välj noden och du bör se konfigurations-API-parametrarna till höger. Spela in ARN.
  5. Ange dina egna värden i API-parametrar textruta.

Detta kallar CreateDatasetImportJob API med de parametervärden som du anger.

AWS Step Functions Workflow

  1. Dra CreateSolutionVersion nod på duken.
  2. Uppdatera API-parametrarna med ARN för lösningen som du noterade.

Detta skapar en ny lösningsversion med nyimporterade data genom att anropa CreateSolutionVersion API.

  1. Dra CreateBatchInferenceJob nod på arbetsytan och uppdatera på liknande sätt API-parametrarna med relevanta värden.

Se till att du använder $.SolutionVersionArn syntax för att hämta ARN-parametern för lösningsversionen från föregående steg. Dessa API-parametrar skickas till CreateBatchInferenceJob API.

AWS Step Functions Workflow

Vi måste bygga en väntelogik i arbetsflödet Step Functions för att se till att rekommendationssatsen slutledningsjobbet avslutas innan arbetsflödet slutförs.

  1. Hitta och dra i en väntanod.
  2. I konfigurationen för Vänta, ange 300 sekunder.

Detta är ett godtyckligt värde; du bör ändra denna väntetid enligt ditt specifika användningsfall.

  1. Välj CreateBatchInferenceJob noden igen och navigera till Felhantering fliken.
  2. För brottning fel, stiga på Personalize.ResourceInUseException.
  3. För Reservtillståndväljer Vänta.

Detta steg gör det möjligt för oss att regelbundet kontrollera statusen för jobbet och det lämnar slingan först när jobbet är klart.

  1. För Resultatväg, stiga på $.errorMessage.

Detta innebär i praktiken att när undantaget "resurs i bruk" tas emot, väntar jobbet i x sekunder innan det försöker igen med samma ingångar.

AWS Step Functions Workflow

  1. Välja Save, och välj sedan Starta utförandet.

Vi har framgångsrikt orkestrerat vår batchrekommendationspipeline för Amazon Personalize. Som ett valfritt steg kan du använda Amazon EventBridge att schemalägga en utlösare av detta arbetsflöde regelbundet. För mer information, se EventBridge (CloudWatch Events) för stegfunktioners exekveringsstatusändringar.

Städa upp

För att undvika framtida avgifter, radera resurserna som du skapade för den här genomgången.

Slutsats

I det här inlägget visade vi hur man skapar en batchrekommendationspipeline genom att använda en kombination av AWS Glue, Amazon Personalize och Step Functions, utan att behöva en enda rad kod eller ML-erfarenhet. Vi använde AWS Glue för att förbereda vår data till det format som Amazon Personalize kräver. Sedan använde vi Amazon Personalize för att importera data, skapa en lösning med ett användaranpassningsrecept och skapa ett batch slutledningsjobb som genererar en standard på 25 rekommendationer för varje användare, baserat på tidigare interaktioner. Vi orkestrerade sedan dessa steg med hjälp av Step Functions så att vi kan köra dessa jobb automatiskt.

För steg att överväga härnäst är användarsegmentering ett av de nyare recepten i Amazon Personalize, som du kanske vill utforska för att skapa användarsegment för varje rad med indata. För mer information, se Få batchrekommendationer och användarsegment.


Om författaren

Maxine Wee

Maxine Wee är en AWS Data Lab Solutions Architect. Maxine arbetar med kunder i deras användningsfall, designar lösningar för att lösa deras affärsproblem och guidar dem genom att bygga skalbara prototyper. Inför sin resa med AWS hjälpte Maxine kunder att implementera BI-, datalagrings- och datasjöprojekt i Australien.

Tidsstämpel:

Mer från AWS maskininlärning