

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Generieren Sie mit Amazon Personalize personalisierte und neu eingestufte Empfehlungen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize"></a>

*Mason Cahill, Matthew Chasse und Tayo Olajide, Amazon Web Services*

## Zusammenfassung
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-summary"></a>

Dieses Muster zeigt Ihnen, wie Sie Amazon Personalize verwenden, um personalisierte Empfehlungen — einschließlich neu eingestufter Empfehlungen — für Ihre Benutzer zu generieren, die auf der Erfassung von Benutzerinteraktionsdaten in Echtzeit von diesen Benutzern basieren. Das in diesem Muster verwendete Beispielszenario basiert auf einer Website zur Adoption von Haustieren, die anhand ihrer Interaktionen Empfehlungen für ihre Benutzer generiert (z. B. welche Haustiere ein Benutzer besucht). Anhand des Beispielszenarios lernen Sie, Amazon Kinesis Data Streams zur Erfassung von Interaktionsdaten, AWS Lambda zur Generierung von Empfehlungen und zur Neurangierung der Empfehlungen und Amazon Data Firehose zum Speichern der Daten in einem Amazon Simple Storage Service (Amazon S3) -Bucket zu verwenden. Sie lernen auch, AWS Step Functions zu verwenden, um eine Zustandsmaschine zu erstellen, die die Lösungsversion (d. h. ein trainiertes Modell) verwaltet, die Ihre Empfehlungen generiert.

## Voraussetzungen und Einschränkungen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-prereqs"></a>

**Voraussetzungen**
+ Ein aktives [AWS-Konto](https://aws.amazon.com/premiumsupport/knowledge-center/create-and-activate-aws-account/) mit einem [Bootstrapping des AWS](https://docs.aws.amazon.com/cdk/v2/guide/bootstrapping.html) Cloud Development Kit (AWS CDK)
+ [AWS-Befehlszeilenschnittstelle (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) mit konfigurierten Anmeldeinformationen
+ [Python 3.9](https://www.python.org/downloads/release/python-390/)

**Produktversionen**
+ Python 3.9
+ AWS CDK 2.23.0 oder höher
+ AWS CLI 2.7.27 oder höher

## Architektur
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-architecture"></a>

**Technologie-Stack**
+ Amazon Data Firehose
+ Amazon Kinesis Data Streams
+ Amazon Personalize
+ Amazon Simple Storage Service (Amazon-S3)
+ AWS-Cloud-Entwicklungskit (AWS CDK)
+ AWS-Befehlszeilenschnittstelle (AWS Command Line Interface, AWS CLI)
+ AWS Lambda
+ AWS Step Functions

**Zielarchitektur**

Das folgende Diagramm zeigt eine Pipeline für die Aufnahme von Echtzeitdaten in Amazon Personalize. Die Pipeline verwendet diese Daten dann, um personalisierte und neu eingestufte Empfehlungen für Benutzer zu generieren.

![\[Architektur zur Datenaufnahme für Amazon Personalize\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/images/pattern-img/42eb193b-2347-408a-8b25-46beeb3b29ca/images/786dbd56-7d7f-41bb-90f6-d4485d73fe15.png)


Das Diagramm zeigt den folgenden Workflow:

1. Kinesis Data Streams nimmt Benutzerdaten in Echtzeit auf (z. B. Ereignisse wie besuchte Haustiere) zur Verarbeitung durch Lambda und Firehose.

1. Eine Lambda-Funktion verarbeitet die Datensätze aus Kinesis Data Streams und führt einen API-Aufruf durch, um die Benutzerinteraktion im Datensatz einem Event-Tracker in Amazon Personalize hinzuzufügen.

1. Eine zeitbasierte Regel ruft eine Step Functions Functions-Zustandsmaschine auf und generiert mithilfe der Ereignisse aus dem Event-Tracker in Amazon Personalize neue Lösungsversionen für die Empfehlungs- und Re-Ranking-Modelle.

1. Amazon Personalize [Personalize-Kampagnen](https://docs.aws.amazon.com/personalize/latest/dg/campaigns.html) werden von der State Machine aktualisiert, um die neue [Lösungsversion](https://docs.aws.amazon.com/personalize/latest/dg/creating-a-solution-version.html) zu verwenden.

1. Lambda ordnet die Liste der empfohlenen Artikel neu an, indem es die Amazon Personalize-Kampagne zur Neurangierung aufruft.

1. Lambda ruft die Liste der empfohlenen Artikel ab, indem es die Amazon Personalize Personalize-Empfehlungskampagne aufruft.

1. Firehose speichert die Ereignisse in einem S3-Bucket, wo sie als historische Daten abgerufen werden können.

## Tools
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-tools"></a>

**AWS-Tools**
+ Das [AWS Cloud Development Kit (AWS CDK)](https://docs.aws.amazon.com/cdk/latest/guide/home.html) ist ein Softwareentwicklungs-Framework, das Sie bei der Definition und Bereitstellung der AWS-Cloud-Infrastruktur im Code unterstützt.
+ [AWS Command Line Interface (AWS CLI)](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-welcome.html) ist ein Open-Source-Tool, mit dem Sie über Befehle in Ihrer Befehlszeilen-Shell mit AWS-Services interagieren können.
+ [Amazon Data Firehose](https://docs.aws.amazon.com/firehose/latest/dev/what-is-this-service.html) unterstützt Sie bei der Bereitstellung von [Echtzeit-Streaming-Daten](https://aws.amazon.com/streaming-data/) an andere AWS-Services, benutzerdefinierte HTTP-Endpunkte und HTTP-Endpunkte, die von unterstützten Drittanbietern betrieben werden.
+ [Amazon Kinesis Data Streams](https://docs.aws.amazon.com/streams/latest/dev/introduction.html) hilft Ihnen dabei, große Datenströme in Echtzeit zu sammeln und zu verarbeiten.
+ [AWS Lambda](https://docs.aws.amazon.com/lambda/latest/dg/welcome.html) ist ein Rechenservice, mit dem Sie Code ausführen können, ohne Server bereitstellen oder verwalten zu müssen. Er führt Ihren Code nur bei Bedarf aus und skaliert automatisch, sodass Sie nur für die tatsächlich genutzte Rechenzeit zahlen.
+ [Amazon Personalize](https://docs.aws.amazon.com/personalize/latest/dg/what-is-personalize.html) ist ein vollständig verwalteter Service für maschinelles Lernen (ML), mit dem Sie auf der Grundlage Ihrer Daten Artikelempfehlungen für Ihre Benutzer generieren können.
+ [AWS Step Functions](https://docs.aws.amazon.com/step-functions/latest/dg/welcome.html) ist ein serverloser Orchestrierungsservice, mit dem Sie Lambda-Funktionen und andere AWS-Services kombinieren können, um geschäftskritische Anwendungen zu erstellen.

**Andere Tools**
+ [pytest](https://docs.pytest.org/en/7.2.x/index.html) ist ein Python-Framework zum Schreiben kleiner, lesbarer Tests.
+ [Python](https://www.python.org/) ist eine Allzweck-Computerprogrammiersprache.

**Code**

Der Code für dieses Muster ist im GitHub [Animal Recommender-Repository](https://github.com/aws-samples/personalize-pet-recommendations) verfügbar. Sie können die CloudFormation AWS-Vorlage aus diesem Repository verwenden, um die Ressourcen für die Beispiellösung bereitzustellen.

**Anmerkung**  
Die Versionen der Amazon Personalize Personalize-Lösung, der Event Tracker und die Kampagnen werden durch [benutzerdefinierte Ressourcen](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/template-custom-resources.html) (innerhalb der Infrastruktur) unterstützt, die die systemeigenen CloudFormation Ressourcen erweitern.

## Epen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-epics"></a>

### Schaffen Sie die Infrastruktur
<a name="create-the-infrastructure"></a>


| Aufgabe | Description | Erforderliche Fähigkeiten | 
| --- | --- | --- | 
| Erstellen Sie eine isolierte Python-Umgebung. | **Mac/Linux-Setup**[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)**Windows-Setup**Um manuell eine virtuelle Umgebung zu erstellen, führen Sie den `% .venv\Scripts\activate.bat` Befehl von Ihrem Terminal aus. | DevOps Ingenieur | 
| Synthetisieren Sie die CloudFormation Vorlage. | [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/de_de/prescriptive-guidance/latest/patterns/generate-personalized-and-re-ranked-recommendations-using-amazon-personalize.html)`CDK_ENVIRONMENT`Bezieht sich in Schritt 2 auf die `config/{env}.yml` Datei. | DevOps Ingenieur | 
| Stellen Sie Ressourcen bereit und schaffen Sie eine Infrastruktur. | Führen Sie den `./deploy.sh` Befehl von Ihrem Terminal aus aus, um die Lösungsressourcen bereitzustellen.Dieser Befehl installiert die erforderlichen Python-Abhängigkeiten. Ein Python-Skript erstellt einen S3-Bucket und einen AWS Key Management Service (AWS KMS) -Schlüssel und fügt dann die Startdaten für die ersten Modellerstellungen hinzu. Schließlich wird das Skript ausgeführt, `cdk deploy` um die verbleibende Infrastruktur zu erstellen.Das anfängliche Modelltraining findet während der Stack-Erstellung statt. Es kann bis zu zwei Stunden dauern, bis der Stack fertig erstellt ist. | DevOps Ingenieur | 

## Zugehörige Ressourcen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-resources"></a>
+ [Tierempfehler](https://github.com/aws-samples/personalize-pet-recommendations) () GitHub
+ [AWS-CDK-Referenzdokumentation](https://docs.aws.amazon.com/cdk/api/v2/)
+ [Boto3-Dokumentation](https://boto3.amazonaws.com/v1/documentation/api/latest/index.html)
+ [Optimieren Sie personalisierte Empfehlungen für eine Geschäftskennzahl Ihrer Wahl mit Amazon Personalize](https://aws.amazon.com/blogs/machine-learning/optimize-personalized-recommendations-for-a-business-metric-of-your-choice-with-amazon-personalize/) (AWS Machine Learning Blog)

## Zusätzliche Informationen
<a name="generate-personalized-and-re-ranked-recommendations-using-amazon-personalize-additional"></a>

**Beispiele für Payloads und Antworten**

*Empfehlung Lambda-Funktion*

Um Empfehlungen abzurufen, senden Sie eine Anfrage an die Lambda-Empfehlungsfunktion mit einer Nutzlast im folgenden Format:

```
{
  "userId": "3578196281679609099",
  "limit": 6
}
```

Die folgende Beispielantwort enthält eine Liste von Tiergruppen:

```
[{"id": "1-domestic short hair-1-1"},
{"id": "1-domestic short hair-3-3"},
{"id": "1-domestic short hair-3-2"},
{"id": "1-domestic short hair-1-2"},
{"id": "1-domestic short hair-3-1"},
{"id": "2-beagle-3-3"},
```

Wenn Sie das `userId` Feld weglassen, gibt die Funktion allgemeine Empfehlungen zurück.

*Lambda-Funktion neu einordnen*

Um Re-Ranking zu verwenden, senden Sie eine Anfrage an die Lambda-Funktion zur Neurangierung. Die Payload enthält alle Elemente, `userId` die neu eingestuft werden IDs sollen, sowie deren Metadaten. In den folgenden Beispieldaten werden die Oxford Pets-Klassen für `animal_species_id` (1=Katze, 2=Hund) und die Ganzzahlen 1-5 für und verwendet: `animal_age_id` `animal_size_id`

```
{
   "userId":"12345",
   "itemMetadataList":[
      {
         "itemId":"1",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      },
      {
         "itemId":"2",
         "animalMetadata":{
            "animal_species_id":"1",
            "animal_primary_breed_id":"Egyptian_Mau",
            "animal_size_id":"1",
            "animal_age_id":"1"
         }
      },
      {
         "itemId":"3",
         "animalMetadata":{
            "animal_species_id":"2",
            "animal_primary_breed_id":"Saint_Bernard",
            "animal_size_id":"3",
            "animal_age_id":"2"
         }
      }
   ]
}
```

Die Lambda-Funktion ordnet diese Artikel neu ein und gibt dann eine geordnete Liste zurück, die den Artikel IDs und die direkte Antwort von Amazon Personalize enthält. Dies ist eine Rangliste der Tiergruppen, zu denen die Artikel gehören, und ihrer Punktzahl. Amazon Personalize verwendet Rezepte für [Benutzerpersonalisierung](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-new-item-USER_PERSONALIZATION.html) und [personalisiertes Ranking](https://docs.aws.amazon.com/personalize/latest/dg/native-recipe-search.html), um für jeden Artikel in den Empfehlungen eine Punktzahl anzugeben. Diese Werte stellen die relative Sicherheit dar, die Amazon Personalize darüber hat, welchen Artikel der Benutzer als Nächstes auswählen wird. Höhere Punktzahlen bedeuten eine größere Gewissheit.

```
{
   "ranking":[
      "1",
      "3",
      "2"
   ],
   "personalizeResponse":{
      "ResponseMetadata":{
         "RequestId":"a2ec0417-9dcd-4986-8341-a3b3d26cd694",
         "HTTPStatusCode":200,
         "HTTPHeaders":{
            "date":"Thu, 16 Jun 2022 22:23:33 GMT",
            "content-type":"application/json",
            "content-length":"243",
            "connection":"keep-alive",
            "x-amzn-requestid":"a2ec0417-9dcd-4986-8341-a3b3d26cd694"
         },
         "RetryAttempts":0
      },
      "personalizedRanking":[
         {
            "itemId":"2-Saint_Bernard-3-2",
            "score":0.8947961
         },
         {
            "itemId":"1-Siamese-1-1",
            "score":0.105204
         }
      ],
      "recommendationId":"RID-d97c7a87-bd4e-47b5-a89b-ac1d19386aec"
   }
}
```

*Amazon Kinesis Kinesis-Nutzlast*

Die an Amazon Kinesis zu sendende Nutzlast hat das folgende Format:

```
{
    "Partitionkey": "randomstring",
    "Data": {
        "userId": "12345",
        "sessionId": "sessionId4545454",
        "eventType": "DetailView",
        "animalMetadata": {
            "animal_species_id": "1",
            "animal_primary_breed_id": "Russian_Blue",
            "animal_size_id": "1",
            "animal_age_id": "2"
        },
        "animal_id": "98765"
        
    }
}
```

**Anmerkung**  
Das `userId` Feld für einen nicht authentifizierten Benutzer wurde entfernt.