Amazon Personaliseren met AWS Glue

Bronknooppunt: 748151

Gegevens kunnen op verschillende manieren worden gebruikt om aan de behoeften van verschillende bedrijfseenheden te voldoen, zoals marketing, verkoop of product. In dit bericht richten we ons op het gebruik van gegevens om gepersonaliseerde aanbevelingen te maken om de betrokkenheid van eindgebruikers te verbeteren. De meeste e-commercetoepassingen verbruiken een enorme hoeveelheid klantgegevens die kunnen worden gebruikt om gepersonaliseerde aanbevelingen te doen; Het is echter mogelijk dat die gegevens niet worden opgeschoond of in het juiste formaat zijn om die waardevolle inzichten te verschaffen.

Het doel van dit bericht is om te demonstreren hoe u AWS lijm om uw JSON-gegevens te extraheren, transformeren en laden in een schoongemaakt CSV-formaat. Vervolgens laten we u zien hoe u een aanbevelingsengine gebruikt die wordt aangedreven door Amazon personaliseren op uw gebruikersinteractiegegevens om uw klanten een op maat gemaakte ervaring te bieden. De resulterende output van Amazon Personalize zijn aanbevelingen die je kunt genereren met een API.

Een veelvoorkomend gebruik is een e-commerceplatform dat interactiegegevens van gebruikersitems verzamelt en soortgelijke producten of producten voorstelt die een klant misschien leuk vindt. Aan het einde van dit bericht kun je je ongereinigde JSON-gegevens gebruiken en gepersonaliseerde aanbevelingen genereren op basis van producten waarmee elke gebruiker interactie heeft gehad, waardoor je een betere ervaring voor je eindgebruikers creëert. Raadpleeg dit voor de doeleinden van dit bericht gebruiker-item-interactie-gegevensset om deze oplossing te bouwen.

De middelen van deze oplossing kunnen kosten met zich meebrengen voor uw AWS-account. Zie voor prijsinformatie AWS Glue-prijzen en Amazon Personaliseer prijzen.

Het volgende diagram illustreert onze oplossingsarchitectuur.

Voorwaarden

Voor dit bericht heb je het volgende nodig:

Zie voor instructies voor het maken van een bucket Stap 1: Maak uw eerste S3-bucket. Zorg ervoor dat voeg het Amazon Personaliseer-toegangsbeleid toe.

Dit is een zeer tolerant beleid; in de praktijk is het het beste om de minste rechten te gebruiken en alleen toegang te geven waar dat nodig is. Zie voor instructies over het aanmaken van een rol Stap 2: Maak een IAM-rol voor AWS Glue.

Uw gegevens crawlen met AWS Glue

We gebruiken AWS Glue om door het JSON-bestand te kruipen om het schema van uw gegevens te bepalen en een metadatatabel te maken in uw AWS Glue Data Catalog. De gegevenscatalogus bevat verwijzingen naar gegevens die worden gebruikt als bronnen en doelen voor uw ETL-taken in AWS Glue. AWS Glue is een serverloze gegevensvoorbereidingsservice waarmee u eenvoudig gegevens kunt extraheren, opschonen, verrijken, normaliseren en laden. Het helpt bij het voorbereiden van uw gegevens voor analyse of machine learning (ML). In dit gedeelte bespreken we hoe u uw JSON-gegevens klaarmaakt voor Amazon Personalize, waarvoor een CSV-bestand nodig is.

Uw gegevens kunnen verschillende kolommen hebben die u niet per se via Amazon Personalize wilt of nodig hebt. In dit bericht gebruiken we de user-item-interaction.json bestand en reinig die gegevens met AWS Glue om alleen de kolommen op te nemen user_id, item_id en timestamp, terwijl het ook wordt omgezet in CSV-indeling. U kunt een crawler gebruiken om toegang te krijgen tot uw gegevensopslag, metagegevens te extraheren en tabeldefinities te maken in de gegevenscatalogus. Het ontdekt automatisch nieuwe gegevens en extraheert schemadefinities. Dit kan u helpen een beter begrip te krijgen van uw gegevens en wat u wilt opnemen tijdens het trainen van uw model.

De user-item-interaction JSON-gegevens zijn een reeks records. De crawler behandelt de gegevens als één object: alleen een array. We creëren een aangepaste classificatie om een ​​schema te maken dat is gebaseerd op elk record in de JSON-array. U kunt deze stap overslaan als uw gegevens geen reeks records zijn.

  1. Op de AWS Glue-console, onder crawlers, kiezen Classifiers.
  2. Kies Classificatie toevoegen.
  3. Voor Classificatienaam¸ invoeren json_classifier.
  4. Voor Classificatietypeselecteer JSON.
  5. Voor JSON-pad, ga naar binnen $[*].
  6. Kies creëren.

Kies Maken.

  1. Op de Crawlers pagina, kiezen Crawler toevoegen.
  2. Voor Crawler naam, ga naar binnen json_crawler.
  3. Voor Aangepaste classificaties, voeg de classificatie toe die je hebt gemaakt.

Voeg voor aangepaste classificaties de classificatie toe die u hebt gemaakt.

  1. Kies Volgende.
  2. Voor Crawlerbrontype, kiezen Gegevensopslag.
  3. Laat al het andere standaard staan ​​en kies Volgende.
  4. Voor Kies een datastore, voer het Amazon S3-pad naar uw JSON-gegevensbestand in.
  5. Kies Volgende.

Kies volgende.

  1. Sla de sectie over Voeg nog een datastore toe.
  2. In het Kies een IAM-rol sectie, selecteer Kies een bestaande IAM-rol.
  3. Voor IAM-rol, kies de rol die je eerder hebt aangemaakt (AWSGlueServiceRole-xxx).
  4. Kies Volgende.

Kies volgende.

  1. Laat de frequentie zoals Uitvoeren op aanvraag.
  2. Op de uitgang pagina, kies Voeg database toe.
  3. Voor Database naam, ga naar binnen json_data.
  4. Kies Finish.
  5. Kies Voer het nu uit. 

U kunt uw crawler ook starten door naar het crawlers pagina, uw crawler selecteren en kiezen Voer de crawler uit.

AWS Glue gebruiken om uw bestanden van CSV naar JSON te converteren

Nadat uw crawler is uitgevoerd, gaat u naar het Tafels pagina op de AWS Glue-console. Navigeer naar de tabel die uw crawler heeft gemaakt. Hier ziet u het schema van uw gegevens. Noteer de velden die u wilt gebruiken met uw Amazon Personalise-gegevens. Voor dit bericht willen we de user_id, item_iden tijdstempelkolommen voor Amazon Personalize.

Voor dit bericht willen we de kolommen user_id, item_id en timestamp behouden voor Amazon Personalize.

Op dit punt heeft u uw database opgezet. Amazon Personalize vereist CSV-bestanden, dus je moet de gegevens van het JSON-formaat omzetten in drie opgeschoonde CSV-bestanden die alleen de gegevens bevatten die je nodig hebt in Amazon Personalize. De volgende tabel toont voorbeelden van de drie CSV-bestanden die u in Amazon Personalize kunt opnemen. Het is belangrijk op te merken dat interacties gegevens zijn vereist, terwijl gebruiker en item metadata van gegevens is optioneel.

Gegevenssettype Verplichte velden Gereserveerde trefwoorden
Gebruikers

USER_ID (draad)

1 metadataveld

Item

ITEM_ID (draad)

1 metadataveld

CREATION_TIMESTAMP(lang)
Interacties

USER_ID (draad)

ITEM_ID (draad)

TIMESTAMP (lang)

EVENT_TYPE (draad)

IMPRESSION (draad)

EVENT_VALUE (zwevend, null)

Het is ook belangrijk om ervoor te zorgen dat u ten minste 1,000 unieke gecombineerde historische en gebeurtenisinteracties heeft om het model te trainen. Zie voor meer informatie over quota Quota in Amazon Personaliseer.

Om de gegevens op te slaan als een CSV, moet u een AWS Glue-taak op de gegevens uitvoeren. Een taak is de bedrijfslogica die het ETL-werk in AWS Glue uitvoert. De taak verandert het formaat van JSON in CSV. Zie voor meer informatie over gegevensopmaak Uw invoergegevens formatteren.

  1. Op de AWS-lijmdashboard, kiezen AWS Lijm Studio.

AWS Lijm Studio is een gebruiksvriendelijke grafische interface voor het maken, uitvoeren en bewaken van AWS Glue ETL-jobs.

  1. Kies Creëer en beheer banen.
  2. kies Bron en doel toegevoegd aan de grafiek.
  3. Voor bron, kiezen S3.
  4. Voor doelwit, kiezen S3.
  5. Kies creëren.

Kies Maken.

  1. Kies de gegevensbron S3-bucket.
  2. Op de Eigenschappen gegevensbron - S3 tab, voeg de database en tabel toe die we eerder hebben gemaakt.

Voeg op het tabblad Eigenschappen gegevensbron - S3 de database en tabel toe die we eerder hebben gemaakt.

  1. Op de Transformeren tabblad, selecteer de vakken die u wilt laten vallen user_login en location.

In dit bericht gebruiken we geen aanvullende metadata om ons personalisatie-algoritme uit te voeren.

In dit bericht gebruiken we geen aanvullende metadata om ons personalisatie-algoritme uit te voeren.

  1. Kies de datadoel S3-bucket.
  2. Op de Eigenschappen van datadoelen - S3 tabblad, voor Formaat, kiezen CSV.
  3. Voor S3 Doellocatie, voer het S3-pad voor uw doel in. 

Voor dit bericht gebruiken we dezelfde bucket die we hebben gebruikt voor het JSON-bestand.

Voor dit bericht gebruiken we dezelfde bucket die we hebben gebruikt voor het JSON-bestand.

  1. Op de Details van de baan pagina, voor Naam, voer een naam in voor je vacature (voor dit bericht, json_to_csv).
  2. Voor IAM-rol, kies de rol die u eerder hebt gemaakt.

Je had ook de AmazonS3FullAccess beleid eerder.

  1. Laat de rest van de velden op hun standaardinstellingen staan.

Laat de rest van de velden op hun standaardinstellingen staan.

  1. Kies Bespaar.
  2. Kies lopen.

Het kan enkele minuten duren voordat de taak is uitgevoerd.

In je Amazon S3-bucket zou je nu het CSV-bestand moeten zien dat je in de volgende sectie gebruikt.

Amazon Personaliseren

Op dit punt heb je je gegevens geformatteerd in een bestandstype dat Amazon Personalize kan gebruiken. Amazon Personalize is een volledig beheerde service die gebruikmaakt van ML en meer dan 20 jaar aanbevelingservaring bij Amazon.com om u in staat te stellen de betrokkenheid van eindgebruikers te verbeteren door middel van realtime gepersonaliseerde product- en inhoudaanbevelingen en gerichte marketingpromoties. In dit gedeelte bespreken we hoe u een Amazon Personalise-oplossing kunt maken om uw gegevens te gebruiken om gepersonaliseerde ervaringen te creëren.

  1. Op de Amazon Personaliseer-console, onder Nieuwe datasetgroepen, kiezen Start.
  2. Voer de naam in voor uw datasetgroep.

Een gegevenssetgroep bevat de gegevenssets, oplossingen en de API voor het opnemen van gebeurtenissen.

  1. Voer een gegevenssetnaam in en voer de schemadetails in op basis van uw gegevens.

Voor deze dataset gebruiken we het volgende schema. U kunt het schema wijzigen volgens de waarden in uw gegevensset.

{ "type": "record", "name": "Interactions", "namespace": "com.amazonaws.personalize.schema", "fields": [ { "name": "USER_ID", "type": "string" }, { "name": "ITEM_ID", "type": "string" }, { "name": "TIMESTAMP", "type": "long" } ], "version": "1.0" } 

  1. Kies Volgende.
  2. Voer de naam van uw gegevenssetimporttaak in om gegevens uit Amazon S3 te importeren.

Zorg ervoor dat uw IAM-servicerol toegang heeft tot Amazon S3 en Amazon Personalize, en dat uw bucket de juiste heeft bucket-beleid.

  1. Voer het pad naar uw gegevens in (de Amazon S3-bucket uit de vorige sectie).
  2. Op de Overzicht pagina voor uw datasetgroepen, onder Gegevenssets uploaden, importeer de user-item-interactions gegevens (gebruikersgegevens en artikelgegevens zijn optioneel, maar kunnen de oplossing verbeteren).

Op de Dashboard-pagina voor uw datasetgroepen, onder Upload datasets,

We voegen een voorbeeld toe item.csv bestand in de GitHub repo​ De volgende schermafbeelding toont een voorbeeld van de artikelgegevens.

De volgende schermafbeelding toont een voorbeeld van de artikelgegevens.

  1. Onder Creëer oplossingenvoor Oplossingen training, kiezen Start.

Een oplossing is een getraind model van de gegevens die u hebt verstrekt met het algoritme of recept dat u selecteert.

  1. Voor Naam van de oplossing, ga naar binnen aws-user-personalization.
  2. Kies Volgende.
  3. Beoordeel en kies Finish.
  4. Op het dashboard, onder Lanceer campagnesvoor Campagne maken, kiezen Start.

Met een campagne kan uw app aanbevelingen krijgen van uw oplossingsversie.

  1. Voor campagne naam, voer een naam in.
  2. Kies de oplossing die u heeft gemaakt.
  3. Kies Maak campagne.

U hebt nu met succes de gegevens uit uw datameer gebruikt en een aanbevelingsmodel gemaakt dat kan worden gebruikt om verschillende aanbevelingen te krijgen. Met deze dataset kunt u gepersonaliseerde aanbevelingen krijgen voor huishoudelijke producten op basis van de interacties van de gebruiker met andere producten in de dataset.

Amazon Personaliseren gebruiken om uw aanbevelingen te krijgen

Om uw oplossing te testen, gaat u naar de campagne die u heeft gemaakt. In de Test campagneresultaten sectie, onder Gebruikers-ID, voer een ID in waarvoor u aanbevelingen wilt ontvangen. Er verschijnt een lijst met ID's, samen met een relatieve score. De artikel-ID's komen overeen met specifieke aanbevolen producten.

De volgende schermafbeelding toont een zoekopdracht naar gebruikers-ID 1​ Ze zijn aanbevolen artikel-ID 59, wat overeenkomt met een houten fotolijst. De score die naast het item wordt weergegeven, geeft u de voorspelde relevantie van elk item voor uw gebruiker.

De volgende schermafbeelding toont een zoekopdracht naar gebruikers-ID 1.

Zie voor meer informatie over Amazon Personaliseer-scores Introductie van aanbevelingsscores in Amazon Personalize.

Om aanbevelingen te genereren, kunt u het GetRecommendations or GetPersonalizedRanking API met behulp van de AWS-opdrachtregelinterface (AWS CLI) of een taalspecifieke SDK. Met Amazon Personalize kunnen uw aanbevelingen veranderen naarmate de gebruiker op de items klikt voor meer real-time use-cases. Zie voor meer informatie Realtime aanbevelingen krijgen.

Conclusie

AWS biedt een breed scala aan AI / ML en analytics services die u kunt gebruiken om inzichten te verkrijgen en betere zakelijke beslissingen te begeleiden. In dit bericht heb je een JSON-dataset gebruikt die extra kolommen met gegevens bevatte, en die gegevens opgeschoond en getransformeerd met AWS Glue. Daarnaast heb je een aangepast model gebouwd met Amazon Personalize om aanbevelingen te doen voor je klanten.

Zie voor meer informatie over Amazon Personalize het ontwikkelaarshandleiding​ Probeer deze oplossing uit en laat het ons weten als u vragen heeft in de opmerkingen.


Over de auteurs

Zoish PithwafaZoish Pithawala is een Startup Solutions Architect bij Amazon Web Services, gevestigd in San Francisco. Ze werkt voornamelijk met startende klanten om hen te helpen veilige en schaalbare oplossingen te bouwen op AWS.

Sam TranSam Tran is een Startup Solutions Architect bij Amazon Web Services, gevestigd in Seattle. Hij richt zich op het helpen van zijn klanten bij het creëren van goed ontworpen oplossingen op AWS.

Bron: https://aws.amazon.com/blogs/machine-learning/setting-up-amazon-personalize-with-aws-glue/

Tijdstempel:

Meer van AWS Blog over machine learning