Erstellen Sie eine Batch-Empfehlungspipeline mit Amazon Personalize ohne Code PlatoBlockchain Data Intelligence. Vertikale Suche. Ai.

Erstellen Sie eine Batch-Empfehlungspipeline mit Amazon Personalize ohne Code

Da personalisierte Inhalte mit größerer Wahrscheinlichkeit die Kundenbindung fördern, versuchen Unternehmen ständig, maßgeschneiderte Inhalte basierend auf dem Profil und Verhalten ihrer Kunden bereitzustellen. Insbesondere Empfehlungssysteme versuchen vorherzusagen, welche Präferenz ein Endbenutzer einem Artikel geben würde. Einige häufige Anwendungsfälle umfassen Produktempfehlungen in Online-Einzelhandelsgeschäften, das Personalisieren von Newslettern, das Generieren von Empfehlungen für Musikwiedergabelisten oder sogar das Entdecken ähnlicher Inhalte in Online-Mediendiensten.

Aufgrund der Komplexität bei Modelltraining, Algorithmusauswahl und Plattformverwaltung kann es jedoch schwierig sein, ein effektives Empfehlungssystem zu erstellen. Amazon personalisieren ermöglicht es Entwicklern, die Kundenbindung durch personalisierte Produkt- und Inhaltsempfehlungen zu verbessern, ohne dass Fachwissen über maschinelles Lernen (ML) erforderlich ist. Entwickler können sofort mit der Kundenbindung beginnen, indem sie erfasste Daten zum Benutzerverhalten verwenden. Hinter den Kulissen untersucht Amazon Personalize diese Daten, identifiziert, was aussagekräftig ist, wählt die richtigen Algorithmen aus, trainiert und optimiert ein Personalisierungsmodell, das auf Ihre Daten zugeschnitten ist, und gibt Empfehlungen über einen API-Endpunkt.

Obwohl das Bereitstellen von Empfehlungen in Echtzeit dazu beitragen kann, das Engagement und die Zufriedenheit zu steigern, ist dies manchmal möglicherweise nicht erforderlich, und die Durchführung auf geplanter Basis kann einfach eine kostengünstigere und überschaubarere Option sein.

Dieser Beitrag zeigt Ihnen, wie Sie mit AWS-Services nicht nur Empfehlungen erstellen, sondern auch eine Batch-Empfehlungspipeline operationalisieren. Wir gehen die End-to-End-Lösung ohne eine einzige Codezeile durch. Wir diskutieren zwei Themen im Detail:

Lösungsüberblick

In dieser Lösung verwenden wir die Filmobjektiv Datensatz. Dieser Datensatz enthält 86,000 Bewertungen von Filmen von 2,113 Benutzern. Wir versuchen, diese Daten zu verwenden, um Empfehlungen für jeden dieser Benutzer zu generieren.

Die Datenvorbereitung ist sehr wichtig, um sicherzustellen, dass wir die Daten zum Kundenverhalten in einem Format erhalten, das für Amazon Personalize bereit ist. Die in diesem Beitrag beschriebene Architektur verwendet AWS Glue, einen serverlosen Datenintegrationsdienst, um die Umwandlung von Rohdaten in ein Format durchzuführen, das für Amazon Personalize bereit ist. Die Lösung verwendet Amazon Personalize, um Batch-Empfehlungen für alle Benutzer mithilfe einer Batch-Inferenz zu erstellen. Wir verwenden dann einen Step Functions-Workflow, damit der automatisierte Workflow ausgeführt werden kann, indem wir Amazon Personalize-APIs auf wiederholbare Weise aufrufen.

Das folgende Diagramm veranschaulicht diese Lösung.Architekturdiagramm

Wir werden diese Lösung mit den folgenden Schritten erstellen:

  1. Erstellen Sie einen Datentransformationsauftrag, um unsere Rohdaten mit AWS Glue zu transformieren.
  2. Erstellen Sie eine Amazon Personalize-Lösung mit dem transformierten Datensatz.
  3. Erstellen Sie einen Step Functions-Workflow, um die Generierung von Batch-Inferenzen zu orchestrieren.

Voraussetzungen:

Für diese exemplarische Vorgehensweise benötigen Sie Folgendes:

Erstellen Sie einen Datentransformationsauftrag, um Rohdaten mit AWS Glue zu transformieren

Bei Amazon Personalize müssen Eingabedaten ein bestimmtes Schema und Dateiformat haben. Daten aus Interaktionen zwischen Benutzern und Elementen müssen im CSV-Format mit bestimmten Spalten vorliegen, während die Liste der Benutzer, für die Sie Empfehlungen generieren möchten, im JSON-Format vorliegen muss. In diesem Abschnitt verwenden wir AWS Glue Studio, um rohe Eingabedaten in die erforderlichen Strukturen und Formate für Amazon Personalize umzuwandeln.

AWS Glue Studio bietet eine grafische Benutzeroberfläche, die für die einfache Erstellung und Ausführung von Extraktions-, Transformations- und Ladeaufträgen (ETL) ausgelegt ist. Sie können Datentransformations-Workloads durch einfache Drag-and-Drop-Vorgänge visuell erstellen.

Wir bereiten zunächst unsere Quelldaten in Amazon Simple Storage-Service (Amazon S3), dann transformieren wir die Daten ohne Code.

  1. Erstellen Sie auf der Amazon S3-Konsole einen S3-Bucket mit drei Ordnern: Raw, Transformed und Curated.
  2. Laden Sie die MovieLens-Datensatz und laden Sie die unkomprimierte Datei mit dem Namen user_ratingmovies-timestamp.dat in Ihren Bucket im Raw-Ordner hoch.
  3. Wählen Sie in der AWS Glue Studio-Konsole Jobs im Navigationsbereich.
  4. Auswählen Visuell mit Quelle und Ziel, Dann wählen Erstellen.
  5. Wählen Sie den ersten aufgerufenen Knoten aus Datenquelle – S3-Bucket. Hier geben wir unsere Eingabedaten an.
  6. Auf dem Datenquelleneigenschaften Registerkarte, wählen Sie S3 Standort und navigieren Sie zu Ihrer hochgeladenen Datei.
  7. Aussichten für Datei Format, wählen CSVUnd für Trennzeichen, wählen Tab.
    AWS Glue Studio – S3
  8. Wir können die Registerkarte Ausgabeschema auswählen, um zu überprüfen, ob das Schema die Spalten korrekt abgeleitet hat.
  9. Wenn das Schema nicht Ihren Erwartungen entspricht, wählen Sie aus Bearbeiten um das Schema zu bearbeiten.
    AWS Glue Studio – Felder

Als Nächstes transformieren wir diese Daten, um die Schemaanforderungen für Amazon Personalize zu erfüllen.

  1. Wähle die Transformieren – Zuordnung anwenden Knoten und auf der Transformieren Aktualisieren Sie auf der Registerkarte Zielschlüssel und Datentypen.
    Amazon Personalize erwartet mindestens die folgende Struktur für die Interaktionsdatensatz:
    • user_id (Zeichenfolge)
    • item_id (Zeichenfolge)
    • timestamp (lang, im Unix-Epochenzeitformat)
      AWS Glue Studio – Feldzuordnung

In diesem Beispiel schließen wir die schlecht bewerteten Filme im Datensatz aus.

  1. Entfernen Sie dazu den letzten Knoten namens S3-Bucket und fügen Sie einen Filterknoten hinzu Transformieren Tab.
  2. Auswählen Speichern Zustand und Daten herausfiltern, bei denen die Bewertung < 3.5 ist.
    AWS Glue Studio – Ausgabe

Wir schreiben nun die Ausgabe zurück an Amazon S3.

  1. Erweitern Sie die Target Menü und wählen Sie Amazon S3.
  2. Aussichten für S3-Zielort, wählen Sie den Ordner mit dem Namen transformed.
  3. Auswählen CSV als Format und Suffix Zielort mit interactions/.

Als Nächstes geben wir eine Liste von Benutzern aus, für die wir Empfehlungen erhalten möchten.

  1. Wähle die Zuordnung anwenden Knoten erneut, und erweitern Sie dann die Transformieren Menü und wählen Sie Zuordnung anwenden.
  2. Löschen Sie alle Felder außer für user_id und benennen Sie dieses Feld um in userId. Amazon Personalize erwartet, dass dieses Feld benannt wird Benutzeridentifikation.
  3. Erweitern Sie die Target Menü erneut und wählen Sie Amazon S3.
  4. Wählen Sie dieses Mal JSON als Format, und wählen Sie dann den transformierten S3-Ordner und fügen Sie ihm das Suffix hinzu batch_users_input/.

Dies erzeugt a JSON Liste der Benutzer als Eingabe für Amazon Personalize. Wir sollten jetzt ein Diagramm haben, das wie folgt aussieht.

AWS Glue Studio – Gesamter Arbeitsablauf

Wir sind jetzt bereit, unseren Transformationsjob auszuführen.

  1. Erstellen Sie in der IAM-Konsole eine Rolle namens glue-service-role und hängen Sie die folgenden verwalteten Richtlinien an:
    • AWSGlueServiceRole
    • AmazonS3FullAccess

Weitere Informationen zum Erstellen von IAM-Servicerollen finden Sie unter Erstellen einer Rolle zum Delegieren von Berechtigungen an einen AWS-Service.

  1. Navigieren Sie zurück zu Ihrem AWS Glue Studio-Auftrag und wählen Sie die aus Jobdetails Tab.
  2. Legen Sie den Jobnamen fest als batch-personalize-input-transform-job.
  3. Wählen Sie die neu erstellte IAM-Rolle aus.
  4. Behalten Sie für alles andere die Standardwerte bei.
    AWS Glue Studio – Auftragsdetails
  5. Auswählen Speichern.
  6. Wenn Sie bereit sind, wählen Sie Führen Sie und überwachen Sie den Job in der Läuft Tab.
  7. Navigieren Sie nach Abschluss des Auftrags zur Amazon S3-Konsole, um zu überprüfen, ob Ihre Ausgabedatei erfolgreich erstellt wurde.

Wir haben unsere Daten jetzt in das Format und die Struktur gebracht, die Amazon Personalize benötigt. Das transformierte Dataset sollte die folgenden Felder und das folgende Format haben:

  • Interaktionsdatensatz – CSV-Format mit Feldern USER_ID, ITEM_ID, TIMESTAMP
  • Benutzereingabedatensatz – JSON-Format mit Element userId

Erstellen Sie eine Amazon Personalize-Lösung mit dem transformierten Datensatz

Mit unserem Interaktionsdatensatz und den Benutzereingabedaten im richtigen Format können wir jetzt unsere Amazon Personalize-Lösung erstellen. In diesem Abschnitt erstellen wir unsere Dataset-Gruppe, importieren unsere Daten und erstellen dann einen Batch-Inferenz-Job. Eine Datensatzgruppe organisiert Ressourcen in Containern für Amazon Personalize-Komponenten.

  1. Wählen Sie in der Amazon Personalize-Konsole aus Erstellen Datensatzgruppe.
  2. Aussichten für DomainWählen Maßgeschneidert.
  3. Auswählen Datensatzgruppe erstellen und fortfahren.
    Amazon Personalize – Datensatzgruppe erstellen

Erstellen Sie als Nächstes das Interaktions-Dataset.

  1. Geben Sie einen Datensatznamen ein und wählen Sie aus Neues Schema erstellen.
  2. Auswählen Datensatz erstellen und fortfahren.
    Amazon Personalize – Interaktionsdatensatz erstellen

Wir importieren jetzt die zuvor erstellten Interaktionsdaten.

  1. Navigieren Sie zu dem S3-Bucket, in dem wir unseren CSV-Datensatz für Interaktionen erstellt haben.
  2. Auf dem Berechtigungen Fügen Sie auf der Registerkarte die folgende Bucket-Zugriffsrichtlinie hinzu, damit Amazon Personalize Zugriff hat. Aktualisieren Sie die Richtlinie so, dass sie Ihren Bucket-Namen enthält.
    {
       "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> /*"
             ]
          }
       ]
    }

Navigieren Sie zurück zu Amazon Personalize und wählen Sie aus Erstellen Sie Ihren Dataset-Importauftrag. Unser Interaktionsdatensatz sollte jetzt in Amazon Personalize importiert werden. Warten Sie, bis der Importauftrag mit dem Status „Aktiv“ abgeschlossen ist, bevor Sie mit dem nächsten Schritt fortfahren. Dies sollte ungefähr 8 Minuten dauern.

  1. Wählen Sie in der Amazon Personalize-Konsole aus Über uns im Navigationsbereich und wählen Sie Lösung erstellen.
    Amazon Personalize – Dashboard
  2. Geben Sie einen Lösungsnamen ein.
  3. Aussichten für Lösungstyp, wählen Artikelempfehlung.
  4. Aussichten für Rezept, wählen Sie das aws-user-personalization Rezept.
  5. Auswählen Lösung erstellen und trainieren.
    Amazon Personalize – Lösung erstellen

Die Lösung trainiert nun anhand des Interaktionsdatensatzes, der mit dem Benutzerpersonalisierungsrezept importiert wurde. Überwachen Sie den Status dieses Prozesses unter Lösungsversionen. Warten Sie, bis der Vorgang abgeschlossen ist, bevor Sie fortfahren. Dies sollte ungefähr 20 Minuten dauern.
Amazon Personalize – Status

Wir erstellen jetzt unseren Batch-Inferenz-Job, der Empfehlungen für jeden der in der JSON-Eingabe vorhandenen Benutzer generiert.

  1. Im Navigationsbereich unter Benutzerdefinierte Ressourcen, wählen Batch-Inferenz-Jobs.
  2. Geben Sie einen Jobnamen und für ein Lösung, wählen Sie die zuvor erstellte Lösung aus.
  3. Auswählen Erstellen Sie einen Batch-Inferenzjob.
    Amazon Personalize – Batch-Inferenz-Job erstellen
  4. Aussichten für Konfiguration der Eingangsdaten, geben Sie den S3-Pfad ein, in dem sich die batch_users_input Datei befindet sich.

Dies ist die JSON-Datei, die enthält userId.

  1. Aussichten für Ausgangsdatenkonfiguration Weg, wählen Sie den kuratierten Pfad in S3.
  2. Auswählen Erstellen Sie einen Batch-Inferenzjob.

Dieser Vorgang dauert etwa 30 Minuten. Wenn der Auftrag abgeschlossen ist, werden Empfehlungen für jeden der in der Benutzereingabedatei angegebenen Benutzer am S3-Ausgabespeicherort gespeichert.

Wir haben erfolgreich eine Reihe von Empfehlungen für alle unsere Benutzer generiert. Allerdings haben wir die Lösung bisher nur über die Konsole umgesetzt. Um sicherzustellen, dass diese Batch-Rückschlüsse regelmäßig mit den neuesten Daten ausgeführt werden, müssen wir einen Orchestrierungs-Workflow erstellen. Im nächsten Abschnitt zeigen wir Ihnen, wie Sie mit Step Functions einen Orchestrierungs-Workflow erstellen.

Erstellen Sie einen Step Functions-Workflow, um den Batch-Inferenz-Workflow zu orchestrieren

Führen Sie die folgenden Schritte aus, um Ihre Pipeline zu orchestrieren:

  1. Wählen Sie in der Step Functions-Konsole Zustandsmaschine erstellen.
  2. Auswählen Gestalten Sie Ihren Workflow visuell, Dann wählen Weiter.
    AWS Step Functions – Workflow erstellen
  3. Ziehen Sie die CreateDatasetImportJob Knoten von links (Sie können nach diesem Knoten im Suchfeld suchen) auf die Leinwand.
  4. Wählen Sie den Knoten aus, und Sie sollten die Konfigurations-API-Parameter auf der rechten Seite sehen. Notieren Sie den ARN.
  5. Geben Sie Ihre eigenen Werte in die ein API-Parameter Textfeld ein.

Das nennt die CreateDatasetImportJob API mit den von Ihnen angegebenen Parameterwerten.

AWS Step Functions-Workflow

  1. Ziehen Sie die CreateSolutionVersion Knoten auf die Leinwand.
  2. Aktualisieren Sie die API-Parameter mit dem notierten ARN der Lösung.

Dadurch wird eine neue Lösungsversion mit den neu importierten Daten erstellt, indem die aufgerufen wird CreateSolutionVersion API.

  1. Ziehen Sie die CreateBatchInferenceJob node auf die Zeichenfläche und aktualisieren Sie auf ähnliche Weise die API-Parameter mit den relevanten Werten.

Stellen Sie sicher, dass Sie die verwenden $.SolutionVersionArn Syntax, um den ARN-Parameter der Lösungsversion aus dem vorherigen Schritt abzurufen. Diese API-Parameter werden an die übergeben CreateBatchInferenceJob API.

AWS Step Functions-Workflow

Wir müssen eine Wartelogik im Step Functions-Workflow erstellen, um sicherzustellen, dass der Empfehlungs-Batch-Inferenz-Job beendet wird, bevor der Workflow abgeschlossen ist.

  1. Suchen Sie einen Wait-Knoten und ziehen Sie ihn hinein.
  2. In der Konfiguration für Wartezeit, geben Sie 300 Sekunden ein.

Dies ist ein willkürlicher Wert; Sie sollten diese Wartezeit entsprechend Ihrem spezifischen Anwendungsfall ändern.

  1. Wähle die CreateBatchInferenceJob Knoten erneut und navigieren Sie zu der Fehlerbehandlung Tab.
  2. Aussichten für Ringen Fehler, eingeben Personalize.ResourceInUseException.
  3. Aussichten für Fallback-Zustand, wählen Wartezeit.

Dieser Schritt ermöglicht es uns, den Status des Auftrags regelmäßig zu überprüfen, und er verlässt die Schleife nur, wenn der Auftrag abgeschlossen ist.

  1. Aussichten für Ergebnispfad, eingeben $.errorMessage.

Dies bedeutet effektiv, dass der Job beim Empfang der Ausnahme „Ressource in Verwendung“ x Sekunden wartet, bevor er es erneut mit denselben Eingaben versucht.

AWS Step Functions-Workflow

  1. Auswählen Speichernund dann wählen Starten Sie die Ausführung.

Wir haben unsere Batch-Empfehlungspipeline für Amazon Personalize erfolgreich orchestriert. Als optionalen Schritt können Sie verwenden Amazon EventBridge um einen Trigger dieses Workflows regelmäßig zu planen. Weitere Einzelheiten finden Sie unter EventBridge (CloudWatch Events) für Änderungen des Ausführungsstatus von Step Functions.

Aufräumen

Um zukünftige Gebühren zu vermeiden, löschen Sie die Ressourcen, die Sie für diese exemplarische Vorgehensweise erstellt haben.

Zusammenfassung

In diesem Beitrag haben wir gezeigt, wie Sie eine Batch-Empfehlungspipeline erstellen, indem Sie eine Kombination aus AWS Glue, Amazon Personalize und Step Functions verwenden, ohne eine einzige Codezeile oder ML-Erfahrung zu benötigen. Wir haben AWS Glue verwendet, um unsere Daten in das Format vorzubereiten, das Amazon Personalize benötigt. Dann haben wir Amazon Personalize verwendet, um die Daten zu importieren, eine Lösung mit einem Benutzerpersonalisierungsrezept zu erstellen und einen Batch-Inferenzjob zu erstellen, der basierend auf früheren Interaktionen standardmäßig 25 Empfehlungen für jeden Benutzer generiert. Wir haben diese Schritte dann mithilfe von Step Functions orchestriert, damit wir diese Jobs automatisch ausführen können.

Für die nächsten Schritte ist die Benutzersegmentierung eines der neueren Rezepte in Amazon Personalize, das Sie vielleicht erkunden möchten, um Benutzersegmente für jede Zeile der Eingabedaten zu erstellen. Weitere Einzelheiten finden Sie unter Abrufen von Batch-Empfehlungen und Benutzersegmenten.


Über den Autor

Maxine Wee

Maxine Wee ist ein AWS Data Lab-Lösungsarchitekt. Maxine arbeitet mit Kunden an ihren Anwendungsfällen, entwirft Lösungen zur Lösung ihrer Geschäftsprobleme und führt sie durch den Aufbau skalierbarer Prototypen. Vor ihrer Reise zu AWS half Maxine Kunden bei der Implementierung von BI-, Data Warehousing- und Data Lake-Projekten in Australien.

Zeitstempel:

Mehr von AWS Maschinelles Lernen