Zephyrnet-logo

Implementeer realtime gepersonaliseerde aanbevelingen met Amazon Personalize | Amazon-webservices

Datum:

Op een basisniveau leert Machine Learning (ML)-technologie van gegevens om voorspellingen te doen. Bedrijven gebruiken hun gegevens met een door ML aangedreven personalisatieservice om hun klantervaring te verbeteren. Met deze aanpak kunnen bedrijven data gebruiken om bruikbare inzichten te verkrijgen en hun omzet en merkloyaliteit te vergroten.

Amazon personaliseren versnelt uw digitale transformatie met ML, waardoor het eenvoudiger wordt om gepersonaliseerde aanbevelingen te integreren in bestaande websites, applicaties, e-mailmarketingsystemen en meer. Met Amazon Personalize kunnen ontwikkelaars snel een aangepaste personalisatie-engine implementeren, zonder dat ML-expertise vereist is. Amazon Personalize zorgt voor de noodzakelijke infrastructuur en beheert de gehele machine learning (ML)-pijplijn, inclusief het verwerken van de gegevens, het identificeren van functies, het gebruik van de meest geschikte algoritmen en het trainen, optimaliseren en hosten van de modellen. U ontvangt resultaten via een API en betaalt alleen voor wat u gebruikt, zonder minimumkosten of verplichtingen vooraf.

De post Ontwerp bijna realtime gepersonaliseerde aanbevelingen met Amazon Personalize laat zien hoe je bijna realtime gepersonaliseerde aanbevelingen kunt ontwerpen met behulp van Amazon Personalize en Speciaal gebouwde datadiensten van AWS. In dit bericht leiden we u door een referentie-implementatie van een realtime gepersonaliseerd aanbevelingssysteem met behulp van Amazon Personalize.

Overzicht oplossingen

De realtime oplossing voor gepersonaliseerde aanbevelingen wordt geïmplementeerd met behulp van Amazon personaliseren, Eenvoudige opslagservice van Amazon (Amazon S3), Amazon Kinesis-gegevensstromen, AWS Lambda en Amazon API-gateway.

De architectuur is als volgt geïmplementeerd:

  1. Data voorbereiding - Start op een gegevenssetgroep maken, schema's, en datasets die uw items, interacties en gebruikersgegevens vertegenwoordigt.
  2. Train het model – Nadat u uw gegevens heeft geïmporteerd, selecteert u het recept dat overeenkomt met uw gebruiksscenario, en vervolgens een oplossing creëren om een ​​model mee te trainen het maken van een oplossingsversie. Wanneer uw oplossingsversie gereed is, kunt u een campagne maken voor uw oplossingsversie.
  3. Ontvang bijna realtime aanbevelingen – Wanneer u een campagne heeft, kunt u oproepen naar de campagne in uw applicatie integreren. Dit is waar oproepen naar de Aanbevelingen ophalen or Ontvang een gepersonaliseerde ranking Er zijn API's gemaakt om vrijwel realtime aanbevelingen van Amazon Personalize aan te vragen.

Raadpleeg voor meer informatie Ontwerp bijna realtime gepersonaliseerde aanbevelingen met Amazon Personalize.

Het volgende diagram illustreert de oplossingsarchitectuur.

Implementatie

We demonstreren deze implementatie met een use case over het doen van realtime filmaanbevelingen aan een eindgebruiker op basis van hun interacties met de filmdatabase in de loop van de tijd.

De oplossing wordt geïmplementeerd met behulp van de volgende stappen:

  1. Voorwaarde (gegevensvoorbereiding)
  2. Stel uw ontwikkelomgeving in
  3. Implementeer de oplossing
  4. Maak een oplossingsversie
  5. Maak een campagne
  6. Maak een gebeurtenistracker
  7. Ontvang aanbevelingen
  8. Neem realtime interacties op
  9. Valideer realtime aanbevelingen
  10. Opruimen

Voorwaarden

Voordat u aan de slag gaat, moet u ervoor zorgen dat u aan de volgende vereisten voldoet:

  • Bereid uw trainingsgegevens voor – Bereid de gegevens voor en upload ze naar een S3-bucket met behulp van de instructies. Voor dit specifieke gebruik uploadt u interactiegegevens en itemgegevens. Een interactie is een gebeurtenis die u vastlegt en vervolgens importeert als trainingsgegevens. Amazon Personalize genereert aanbevelingen voornamelijk op basis van de interactiegegevens die u importeert in een interactiegegevensset. U kunt meerdere gebeurtenistypen opnemen, zoals klikken, kijken of leuk vinden. Hoewel het door Amazon Personalize gecreëerde model suggesties kan doen op basis van eerdere interacties van een gebruiker, kan de kwaliteit van deze suggesties worden verbeterd wanneer het model gegevens bevat over de associaties tussen gebruikers of items. Als een gebruiker zich bezighoudt met films die in de itemdataset als Drama zijn gecategoriseerd, zal Amazon Personalize films (items) met hetzelfde genre voorstellen.
  • Stel uw ontwikkelomgeving in - Install de AWS-opdrachtregelinterface (AWS CLI).
  • Configureer CLI met uw Amazon-account - Configureer de AWS CLI met uw AWS-accountgegevens.
  • AWS Cloud Development Kit (AWS CDK) installeren en opstarten

Implementeer de oplossing

Ga als volgt te werk om de oplossing te implementeren:

  • Kloon de repository naar een nieuwe map op uw bureaublad.
  • Implementeren de stack naar uw AWS-omgeving.

Maak een oplossingsversie

Een oplossing verwijst naar de combinatie van een Amazon Personalize-recept, aangepaste parameters en een of meer oplossingsversies (getrainde modellen). Wanneer u het CDK-project in de vorige stap implementeert, wordt er automatisch een oplossing met een recept voor gebruikerspersonalisatie voor u gemaakt. Een oplossingsversie verwijst naar een getraind machine learning-model. Maak een oplossing versie voor de implementatie.

Maak een campagne

Een campagne implementeert een oplossingsversie (getraind model) met een ingerichte transactiecapaciteit voor het genereren van realtime aanbevelingen. Maak een campagne voor de implementatie.

Maak een gebeurtenistracker

Amazon Personalize kan aanbevelingen doen op basis van alleen realtime gebeurtenisgegevens, alleen historische gebeurtenisgegevens of beide. Registreer realtime gebeurtenissen om uw interactiegegevens uit te breiden en laat Amazon Personalize leren van de meest recente activiteit van uw gebruiker. Hierdoor blijven uw gegevens actueel en wordt de relevantie van de Amazon Personalize-aanbevelingen verbeterd. Voordat u gebeurtenissen kunt opnemen, moet u een gebeurtenistracker maken. Een gebeurtenistracker stuurt nieuwe gebeurtenisgegevens door naar de interactiegegevensset in uw gegevenssetgroep. Creëer en gebeurtenis tracker voor de implementatie.

Ontvang aanbevelingen

In dit gebruiksscenario bestaat de interactiedataset uit film-ID's. Bijgevolg zullen de aanbevelingen die aan de gebruiker worden gepresenteerd, bestaan ​​uit film-ID's die het meest aansluiten bij hun persoonlijke voorkeuren, bepaald op basis van hun historische interacties. U kunt gebruik maken van de getRecommendations API om gepersonaliseerde aanbevelingen voor een gebruiker op te halen door de bijbehorende aanbevelingen te verzenden userID, het aantal resultaten voor aanbevelingen die u nodig heeft voor zowel de gebruiker als de campagne-ARN. Je vindt de campagne ARN in het consolemenu van Amazon Personalize.

Met het volgende verzoek worden bijvoorbeeld vijf aanbevelingen opgehaald voor de gebruiker van wie userId is 429:

curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn}&userId=429&numResults=5'

Het antwoord op het verzoek zal zijn:

{ "$metadata": { "httpStatusCode": 200, "requestId": "7159c128-4e16-45a4-9d7e-cf19aa2256e8", "attempts": 1, "totalRetryDelay": 0 }, "itemList": [ { "itemId": "596", "score": 0.0243044 }, { "itemId": "153", "score": 0.0151695 }, { "itemId": "16", "score": 0.013694 }, { "itemId": "261", "score": 0.013524 }, { "itemId": "34", "score": 0.0122294 } ], "recommendationId": "RID-1d-40c1-8d20-dfffbd7b0ac7-CID-06b10f"
}

De items die door de API-aanroep worden geretourneerd, zijn de films die Amazon Personalize aan de gebruiker aanbeveelt op basis van hun historische interacties.

De scorewaarden die in deze context worden gegeven, vertegenwoordigen getallen met drijvende komma die variëren tussen nul en 1.0. Deze waarden komen overeen met de huidige campagne en de bijbehorende recepten voor deze use case. Ze worden bepaald op basis van de collectieve scores die zijn toegewezen aan alle items in uw uitgebreide dataset.

Neem realtime interacties op

In het vorige voorbeeld werden aanbevelingen verkregen voor de gebruiker met ID 429 op basis van hun historische interacties met de filmdatabase. Voor realtime aanbevelingen moeten de gebruikersinteracties met de items in realtime worden opgenomen in Amazon Personalize. Deze interacties worden via Amazon Personalize in het aanbevelingssysteem opgenomen Gebeurtenis-tracker. Het type interactie, ook wel genoemd EventType, wordt gegeven door de kolom met dezelfde naam in de interactiegegevensgegevensset (EVENT_TYPE). In dit voorbeeld kunnen de gebeurtenissen van het type “kijken” of “klik” zijn, maar u kunt uw eigen typen gebeurtenissen hebben, afhankelijk van de behoeften van uw toepassing.

In dit voorbeeld ontvangt de blootgestelde API die de gebeurtenissen van de gebruikers met de items genereert de parameter 'interacties' die overeenkomt met het aantal gebeurtenissen (interactions) van een gebruiker (UserId) met een enkel element (itemId) direct. De trackingId parameter is te vinden in de Amazon Personalize-console en in de reactie op het aanmaken van een Event Tracker-verzoek.

Dit voorbeeld toont een putEvent verzoek: Genereer 1 interacties van het kliktype, met een item-ID van '185' voor de gebruikers-ID '429', met behulp van de huidige tijdstempel. Houd er rekening mee dat in productie de 'sentAt' moet worden ingesteld op het tijdstip van de interactie van de gebruiker. In het volgende voorbeeld hebben we dit ingesteld op het tijdstip in de epoch-tijdnotatie waarop we het API-verzoek voor dit bericht schreven. De gebeurtenissen worden via een API Gateway naar Amazon Kinesis Data Streams verzonden. Daarom moet u de streamnaam en PartitionKey-parameters verzenden.

curl --location 'https://iyxhva3ll6.execute-api.us-west-2.amazonaws.com/prod/data' --header 'Content-Type: application/json' --data '{ "stream-name": "my-stream","Data": {"userId" : "429", "interactions": 1, "itemId": "185", "trackingId" : "c90ac6d7-3d89-4abc-8a70-9b09c295cbcd", "eventType": "click", "sentAt":"1698711110"},"PartitionKey":"userId"}'

U ontvangt een bevestigingsantwoord dat er ongeveer als volgt uitziet:

{ "Message": "Event sent successfully", "data": { "EncryptionType": "KMS", "SequenceNumber": "49..........1901314", "ShardId": "shardId-xxxxxxx" }
}

Valideer realtime aanbevelingen

Omdat de interactiedataset is bijgewerkt, worden de aanbevelingen automatisch bijgewerkt om rekening te houden met de nieuwe interacties. Om de in realtime bijgewerkte aanbevelingen te valideren, kunt u de getRecommendations API opnieuw aanroepen voor hetzelfde gebruikers-ID 429, en het resultaat zou anders moeten zijn dan het vorige. De volgende resultaten laten een nieuwe aanbeveling zien met een id van 594 en de aanbevelingen met de id's 16, 596, 153 en 261 hebben hun scores gewijzigd. Deze items brachten een nieuw filmgenre ('Animatie|Kinderen|Drama|Fantasie|Musical') in de top 5 van aanbevelingen.

Verzoek:

curl --location 'https://{your-api-id}.execute-api.{your-region}.amazonaws.com/prod/getRecommendations?campaignArn={campaignArn} &userId=429&numResults=5'

Reactie:

{ "$metadata": { "httpStatusCode": 200, "requestId": "680f2be8-2e64-47d7-96f7-1c4aa9b9ac9d", "attempts": 1, "totalRetryDelay": 0 }, "itemList": [ { "itemId": "596", "score": 0.0288085 }, { "itemId": "16", "score": 0.0134173 }, { "itemId": "594", "score": 0.0129357 }, { "itemId": "153", "score": 0.0129337 }, { "itemId": "261", "score": 0.0123728 } ], "recommendationId": "RID-dc-44f8-a327-482fb9e54921-CID-06b10f"
}

Uit het antwoord blijkt dat de aanbeveling van Amazon Personalize in realtime is bijgewerkt.

Opruimen

Om onnodige kosten te voorkomen, ruimt u de oplossingsimplementatie op met behulp van Middelen opruimen.

Conclusie

In dit bericht hebben we u laten zien hoe u een realtime systeem voor gepersonaliseerde aanbevelingen kunt implementeren met behulp van Amazon Personalize. De interacties met Amazon Personalize om realtime interacties op te nemen en aanbevelingen te krijgen, werden uitgevoerd via een opdrachtregeltool genaamd curl, maar deze API-aanroepen kunnen in een bedrijfsapplicatie worden geïntegreerd en tot hetzelfde resultaat leiden.

Als u een nieuw recept voor uw toepassing wilt kiezen, raadpleegt u Realtime personalisatie. Om de impact van de aanbevelingen van Amazon Personalize te meten, raadpleegt u Het meten van de impact van aanbevelingen.


Over de auteurs

Cristian Marquez is een Senior Cloud Applicatie Architect. Hij heeft ruime ervaring met het ontwerpen, bouwen en leveren van software op ondernemingsniveau, zwaar belaste en gedistribueerde systemen en cloud-native applicaties. Hij heeft ervaring met backend- en frontend-programmeertalen, evenals systeemontwerp en implementatie van DevOps-praktijken. Hij helpt klanten actief bij het bouwen en beveiligen van innovatieve cloudoplossingen, het oplossen van hun zakelijke problemen en het bereiken van hun zakelijke doelstellingen.

Anand Komandooru is een Senior Cloud Architect bij AWS. Hij trad in 2021 in dienst bij de AWS Professional Services-organisatie en helpt klanten bij het bouwen van cloud-native applicaties op de AWS-cloud. Hij heeft meer dan 20 jaar ervaring met het bouwen van software en zijn favoriete leiderschapsprincipe bij Amazon is “Leiders hebben vaak gelijk."

spot_img

Laatste intelligentie

spot_img