Maak een batchaanbevelingspijplijn met Amazon Personalize zonder code PlatoBlockchain Data Intelligence. Verticaal zoeken. Ai.

Maak een batchaanbevelingspijplijn met Amazon Personalize zonder code

Met gepersonaliseerde inhoud die de klantbetrokkenheid waarschijnlijker zal stimuleren, streven bedrijven voortdurend naar op maat gemaakte inhoud op basis van het profiel en het gedrag van hun klant. Vooral aanbevelingssystemen proberen te voorspellen welke voorkeur een eindgebruiker aan een artikel zou geven. Enkele veelvoorkomende gebruiksscenario's zijn productaanbevelingen in online winkels, het personaliseren van nieuwsbrieven, het genereren van aanbevelingen voor muziekafspeellijsten of zelfs het ontdekken van vergelijkbare inhoud op online mediadiensten.

Het kan echter een uitdaging zijn om een โ€‹โ€‹effectief aanbevelingssysteem te creรซren vanwege de complexiteit van modeltraining, algoritmeselectie en platformbeheer. Amazon personaliseren stelt ontwikkelaars in staat om de klantbetrokkenheid te verbeteren door middel van gepersonaliseerde product- en inhoudsaanbevelingen zonder dat er expertise op het gebied van machine learning (ML) nodig is. Ontwikkelaars kunnen meteen beginnen met het betrekken van klanten door vastgelegde gegevens over gebruikersgedrag te gebruiken. Achter de schermen onderzoekt Amazon Personalize deze data, identificeert wat zinvol is, selecteert de juiste algoritmen, traint en optimaliseert een personalisatiemodel dat is aangepast aan jouw data en geeft aanbevelingen via een API-eindpunt.

Hoewel het geven van aanbevelingen in realtime kan helpen de betrokkenheid en tevredenheid te vergroten, is dit soms misschien niet echt nodig, en dit in batches op een geplande basis uitvoeren kan gewoon een meer kosteneffectieve en beheersbare optie zijn.

Dit bericht laat zien hoe u AWS-services gebruikt om niet alleen aanbevelingen te maken, maar ook om een โ€‹โ€‹batchaanbevelingspijplijn te operationaliseren. We doorlopen de end-to-end oplossing zonder een enkele regel code. We bespreken twee onderwerpen uitgebreid:

Overzicht oplossingen

In deze oplossing gebruiken we de FilmLens gegevensset. Deze dataset bevat 86,000 beoordelingen van films van 2,113 gebruikers. We proberen deze gegevens te gebruiken om aanbevelingen voor elk van deze gebruikers te genereren.

Gegevensvoorbereiding is erg belangrijk om ervoor te zorgen dat we klantgedragsgegevens in een formaat krijgen dat klaar is voor Amazon Personalize. De architectuur die in dit bericht wordt beschreven, maakt gebruik van AWS Glue, een serverloze gegevensintegratieservice, om de transformatie van onbewerkte gegevens uit te voeren in een formaat dat klaar is voor gebruik door Amazon Personalize. De oplossing maakt gebruik van Amazon Personalize om batchaanbevelingen voor alle gebruikers te maken met behulp van een batchinferentie. Vervolgens gebruiken we een Step Functions-workflow zodat de geautomatiseerde workflow kan worden uitgevoerd door Amazon Personalize API's herhaalbaar aan te roepen.

Het volgende diagram toont deze oplossing.Architectuurdiagram

We bouwen deze oplossing met de volgende stappen:

  1. Bouw een gegevenstransformatietaak om onze onbewerkte gegevens te transformeren met AWS Glue.
  2. Bouw een Amazon Personalize-oplossing met de getransformeerde dataset.
  3. Bouw een Step Functions-workflow om het genereren van batchinferenties te orkestreren.

Voorwaarden

Voor deze walkthrough heb je het volgende nodig:

Bouw een gegevenstransformatietaak om onbewerkte gegevens te transformeren met AWS Glue

Met Amazon Personalize moeten invoergegevens een specifiek schema en bestandsformaat hebben. Gegevens van interacties tussen gebruikers en items moeten in CSV-indeling zijn met specifieke kolommen, terwijl de lijst met gebruikers waarvoor u aanbevelingen wilt genereren, in JSON-indeling moet zijn. In deze sectie gebruiken we AWS Glue Studio om onbewerkte invoergegevens om te zetten in de vereiste structuren en indeling voor Amazon Personalize.

AWS Glue Studio biedt een grafische interface die is ontworpen voor het eenvoudig maken en uitvoeren van taken voor uitpakken, transformeren en laden (ETL). U kunt datatransformatieworkloads visueel creรซren door middel van eenvoudige slepen-en-neerzetten.

We bereiden onze brongegevens eerst voor in Amazon eenvoudige opslagservice (Amazon S3), dan transformeren we de gegevens zonder code.

  1. Maak op de Amazon S3-console een S3-bucket met drie mappen: onbewerkt, getransformeerd en samengesteld.
  2. Download de MovieLens-gegevensset en upload het niet-gecomprimeerde bestand met de naam user_ratingmovies-timestamp.dat naar uw bucket onder de onbewerkte map.
  3. Kies op de AWS Glue Studio-console: Vacatures in het navigatievenster.
  4. kies Visueel met een bron en doel, kies dan creรซren.
  5. Kies het eerste knooppunt met de naam Gegevensbron โ€“ S3-bucket. Hier specificeren we onze invoergegevens.
  6. Op de Eigenschappen van gegevensbron tab, selecteer S3 locatie en blader naar uw geรผploade bestand.
  7. Voor Data formaat, kiezen CSVEn voor Delimiter, kiezen Tab.
    AWS Lijm Studio - S3
  8. We kunnen het tabblad Uitvoerschema kiezen om te controleren of het schema de kolommen correct heeft afgeleid.
  9. Als het schema niet aan uw verwachtingen voldoet, kiest u Edit om het schema te bewerken.
    AWS Glue Studio - Velden

Vervolgens transformeren we deze gegevens om de schemavereisten voor Amazon Personalize te volgen.

  1. Kies de Transformeren โ€“ Mapping toepassen knoop en, op de Transformeren tabblad, werk de doelsleutel en gegevenstypen bij.
    Amazon Personalize verwacht minimaal de volgende structuur voor de: interacties dataset:
    • user_id (draad)
    • item_id (draad)
    • timestamp (lang, in Unix-tijdformaat)
      AWS Glue Studio - Veldtoewijzing

In dit voorbeeld sluiten we de slecht beoordeelde films uit in de dataset.

  1. Om dit te doen, verwijdert u het laatste knooppunt met de naam S3-bucket en voegt u een filterknooppunt toe aan de Transformeren Tab.
  2. Kies Toevoegen voorwaarde en filter gegevens uit waar een beoordeling < 3.5 is.
    AWS Glue Studio - Uitvoer

We schrijven de uitvoer nu terug naar Amazon S3.

  1. Vouw de doelwit menu en kies Amazon S3.
  2. Voor S3 doellocatie, kies de map met de naam transformed.
  3. Kies CSV als het formaat en het achtervoegsel de Doellocatie Met interactions/.

Vervolgens voeren we een lijst uit met gebruikers waarvoor we aanbevelingen willen ontvangen.

  1. Kies de Mapping toepassen knooppunt opnieuw en vouw vervolgens de Transformeren menu en kies Mapping toepassen.
  2. Laat alle velden vallen behalve voor user_id en hernoem dat veld naar userId. Amazon Personalize verwacht dat dat veld een naam krijgt gebruikersnaam.
  3. Vouw de doelwit menu opnieuw en kies Amazon S3.
  4. Kies deze keer JSON als het formaat, en kies vervolgens de getransformeerde S3-map en voeg deze toe met batch_users_input/.

Dit levert een JSON lijst met gebruikers als input voor Amazon Personalize. We zouden nu een diagram moeten hebben dat er als volgt uitziet.

AWS Glue Studio - Volledige workflow

We zijn nu klaar om onze transformatietaak uit te voeren.

  1. Maak op de IAM-console een rol met de naam glue-service-rol en voeg het volgende beheerde beleid toe:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Voor meer informatie over het aanmaken van IAM-servicerollen, raadpleeg de Een rol maken om machtigingen aan een AWS-service te delegeren.

  1. Navigeer terug naar uw AWS Glue Studio-taak en kies de Details van de baan Tab.
  2. Stel de taaknaam in als batch-personalize-input-transform-job.
  3. Kies de nieuw gemaakte IAM-rol.
  4. Houd de standaardwaarden voor al het andere.
    AWS Glue Studio - Taakdetails
  5. Kies Bespaar.
  6. Als je klaar bent, kies je lopen en monitor de baan in de Runs Tab.
  7. Wanneer de taak is voltooid, navigeert u naar de Amazon S3-console om te valideren dat uw uitvoerbestand met succes is gemaakt.

We hebben onze gegevens nu gevormd in het formaat en de structuur die Amazon Personalize nodig heeft. De getransformeerde dataset moet de volgende velden en indeling hebben:

  • Interactions-dataset โ€“ CSV-formaat met velden USER_ID, ITEM_ID, TIMESTAMP
  • Gegevensset gebruikersinvoer โ€“ JSON-formaat met element userId

Bouw een Amazon Personalize-oplossing met de getransformeerde dataset

Met onze interactiedataset en gebruikersinvoergegevens in het juiste formaat, kunnen we nu onze Amazon Personalize-oplossing maken. In deze sectie maken we onze datasetgroep, importeren we onze gegevens en maken we vervolgens een batch-inferentietaak. Een datasetgroep organiseert bronnen in containers voor Amazon Personalize-componenten.

  1. Kies op de Amazon Personalize-console creรซren dataset groep.
  2. Voor Domeinselecteer Eigen.
  3. Kies Maak een datasetgroep aan en ga verder.
    Amazon Personalize - datasetgroep maken

Maak vervolgens de interactiegegevensset.

  1. Voer een datasetnaam in en selecteer Nieuw schema maken.
  2. Kies Maak een dataset aan en ga verder.
    Amazon Personalize - maak een dataset voor interacties

We importeren nu de interactiegegevens die we eerder hadden gemaakt.

  1. Navigeer naar de S3-bucket waarin we onze CSV-gegevensset voor interacties hebben gemaakt.
  2. Op de machtigingen tabblad, voeg het volgende buckettoegangsbeleid toe zodat Amazon Personalize toegang heeft. Werk het beleid bij om uw bucketnaam op te nemen.
    {
       "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> /*"
             ]
          }
       ]
    }

Navigeer terug naar Amazon Personaliseren en kies Maak uw dataset-importtaak aan. Onze interactiegegevensset zou nu moeten worden geรฏmporteerd in Amazon Personalize. Wacht tot de importtaak is voltooid met de status Actief voordat u doorgaat naar de volgende stap. Dit zou ongeveer 8 minuten moeten duren.

  1. Kies op de Amazon Personalize-console Overzicht in het navigatievenster en kies Maak een oplossing.
    Amazon Personaliseren - Dashboard
  2. Voer een oplossingsnaam in.
  3. Voor Oplossingstype, kiezen Artikelaanbeveling.
  4. Voor Recept, kies de aws-user-personalization recept.
  5. Kies Oplossing maken en trainen.
    Amazon Personaliseer - maak een oplossing

De oplossing traint nu tegen de interactiegegevensset die is geรฏmporteerd met het recept voor gebruikerspersonalisatie. Bewaak de status van dit proces onder: Oplossingsversies. Wacht tot het is voltooid voordat u doorgaat. Dit zou ongeveer 20 minuten moeten duren.
Amazon Personaliseren - Status

We maken nu onze batch-inferentietaak, die aanbevelingen genereert voor elk van de gebruikers die aanwezig zijn in de JSON-invoer.

  1. In het navigatievenster, onder Aangepaste bronnen, kiezen Batch-gevolgtrekkingen.
  2. Voer een taaknaam in en voor Oplossing, kies de eerder gemaakte oplossing.
  3. Kies Maak een batch-inferentietaak.
    Amazon Personalize - maak een batch-inferentietaak
  4. Voor Configuratie van invoergegevens, voer het S3-pad in van waar de batch_users_input bestand is gelokaliseerd.

Dit is het JSON-bestand dat: userId.

  1. Voor Configuratie van uitvoergegevens pad, kies het samengestelde pad in S3.
  2. Kies Maak een batch-inferentietaak.

Dit proces duurt ongeveer 30 minuten. Wanneer de taak is voltooid, worden aanbevelingen voor elk van de gebruikers die zijn gespecificeerd in het gebruikersinvoerbestand opgeslagen op de S3-uitvoerlocatie.

We hebben met succes een reeks aanbevelingen gegenereerd voor al onze gebruikers. We hebben de oplossing tot nu toe echter alleen met de console geรฏmplementeerd. Om ervoor te zorgen dat deze batchinferentie regelmatig wordt uitgevoerd met de nieuwste gegevensset, moeten we een orkestratie-workflow bouwen. In de volgende sectie laten we u zien hoe u een orkestratie-workflow maakt met behulp van Step Functions.

Bouw een Step Functions-workflow om de batch-inferentieworkflow te orkestreren

Voer de volgende stappen uit om uw pijplijn te orkestreren:

  1. Kies op de console Stapfuncties: Staatsmachine maken.
  2. kies Ontwerp uw workflow visueel, kies dan Volgende.
    AWS Step-functies - Workflow maken
  3. Sleep de CreateDatasetImportJob knooppunt van links (u kunt naar dit knooppunt zoeken in het zoekvak) op het canvas.
  4. Kies het knooppunt en u zou de configuratie-API-parameters aan de rechterkant moeten zien. Noteer de ARN.
  5. Voer uw eigen waarden in de API-parameters tekstvak.

Dit noemt de CreateDatasetImportJob API met de parameterwaarden die u opgeeft.

AWS Stap Functies Workflow

  1. Sleep de CreateSolutionVersion knoop op het canvas.
  2. Werk de API-parameters bij met de ARN van de oplossing die u hebt genoteerd.

Dit creรซert een nieuwe oplossingsversie met de nieuw geรฏmporteerde gegevens door de . aan te roepen CreรซrenOplossingVersie API.

  1. Sleep de CreateBatchInferenceJob node op het canvas en werk op dezelfde manier de API-parameters bij met de relevante waarden.

Zorg ervoor dat u de $.SolutionVersionArn syntaxis om de ARN-parameter van de oplossingsversie uit de vorige stap op te halen. Deze API-parameters worden doorgegeven aan de CreateBatchInferenceJob API.

AWS Stap Functies Workflow

We moeten een wachtlogica bouwen in de werkstroom Step Functions om ervoor te zorgen dat de taak voor het afleiden van de aanbevelingsbatch wordt voltooid voordat de werkstroom is voltooid.

  1. Zoek en sleep een Wacht-knooppunt.
  2. In de configuratie voor Wacht, voer 300 seconden in.

Dit is een willekeurige waarde; u moet deze wachttijd aanpassen aan uw specifieke gebruikssituatie.

  1. Kies de CreateBatchInferenceJob knooppunt opnieuw en navigeer naar de Foutafhandeling Tab.
  2. Voor het worstelen fouten, ga naar binnen Personalize.ResourceInUseException.
  3. Voor Terugvalstatus, kiezen Wacht.

Deze stap stelt ons in staat om periodiek de status van de taak te controleren en verlaat de lus pas wanneer de taak is voltooid.

  1. Voor ResultaatPad, ga naar binnen $.errorMessage.

Dit betekent in feite dat wanneer de uitzondering "resource in gebruik" wordt ontvangen, de taak x seconden wacht voordat het opnieuw wordt geprobeerd met dezelfde invoer.

AWS Stap Functies Workflow

  1. Kies Bespaaren kies vervolgens Start de uitvoering.

We hebben met succes onze batchaanbevelingspijplijn voor Amazon Personalize georkestreerd. Als optionele stap kunt u Amazon EventBridge om regelmatig een trigger van deze workflow te plannen. Voor meer details, zie: EventBridge (CloudWatch Events) voor wijzigingen in de uitvoeringsstatus van Step Functions.

Opruimen

Om toekomstige kosten te voorkomen, verwijdert u de bronnen die u voor dit stappenplan hebt gemaakt.

Conclusie

In dit bericht hebben we laten zien hoe je een batchaanbevelingspijplijn kunt maken door een combinatie van AWS Glue, Amazon Personalize en Step Functions te gebruiken, zonder dat je een enkele regel code of ML-ervaring nodig hebt. We hebben AWS Glue gebruikt om onze gegevens voor te bereiden in het formaat dat Amazon Personalize vereist. Vervolgens hebben we Amazon Personalize gebruikt om de gegevens te importeren, een oplossing te creรซren met een recept voor gebruikerspersonalisatie en een batch-inferentietaak te maken die standaard 25 aanbevelingen voor elke gebruiker genereert, op basis van eerdere interacties. Vervolgens hebben we deze stappen georkestreerd met behulp van Step Functions, zodat we deze taken automatisch kunnen uitvoeren.

Voor de volgende stappen die u moet overwegen, is gebruikerssegmentatie een van de nieuwere recepten in Amazon Personalize, die u misschien wilt verkennen om gebruikerssegmenten te maken voor elke rij met invoergegevens. Voor meer details, zie: Batchaanbevelingen en gebruikerssegmenten ontvangen.


Over de auteur

Maxine Wie

Maxine Wie is een AWS Data Lab Solutions Architect. Maxine werkt met klanten aan hun gebruiksscenario's, ontwerpt oplossingen om hun zakelijke problemen op te lossen en begeleidt hen bij het bouwen van schaalbare prototypen. Voorafgaand aan haar reis met AWS hielp Maxine klanten bij het implementeren van BI-, datawarehousing- en datameerprojecten in Australiรซ.

Tijdstempel:

Meer van AWS-machine learning