イベントの記録 - Amazon Personalize

イベントの記録

Amazon Personalize は、「開始方法」ガイドに示しているように、インポートされた履歴データのみに基づいてレコメンデーションを行うことができます。また、Amazon Personalize は、Amazon Personalize イベント取り込み SDK を使用して、リアルタイムのイベントデータのみ、または両者の組み合わせに基づいてレコメンデーションを行うこともできます。

履歴データとは異なり、キャンペーンが作成されると、キャンペーンからレコメンデーションを取得するときは新しく記録されたイベントデータが自動的に使用されます。

注記

モデルをトレーニングするための最小データ要件は次のとおりです。

  • 組み合わされたやり取りデータの 1000 レコード (eventType および eventValueThreshold が指定されている場合は、それらを使用したフィルタリング後)

  • 少なくともそれぞれ 2 つのやり取りを持つ 25 人の一意のユーザー

イベント取り込み SDK には、ウェブクライアントアプリケーションのイベントを記録するための JavaScript ライブラリが含まれています。また、SDK にはサーバーコードのイベントを記録するためのライブラリも含まれています。

イベントを記録するには、以下が必要です。

  • Interactions データセットを含むデータセットグループ。これは空の場合があります。

  • イベントトラッカー。

  • PutEvents オペレーションの呼び出し。

Amazon Personalize 事前定義されたレシピは、PutEvents API と互換性があります。これには、これらのレシピにセッションを認識させる、必須の sessionId パラメータが含まれます。

PutEvents オペレーションを使用して新しい顧客データを記録および実装する方法を示す Jupyter ノートブックのサンプルについては、amazon-personalize-samples GitHub リポジトリの「Using the PutEvents API with Personalize」を参照してください。

データセットグループの作成

開始方法 ガイドを完了した場合は、作成したものと同じデータセットグループを使用できます。データセットとデータセットグループを作成する Python の例については、「データのインポート」を参照してください。

追跡 ID の取得

追跡 ID は、イベントとデータセットグループを関連付け、Amazon Personalize へのデータの送信を許可します。トラッキング ID を生成するには、CreateEventTracker API を呼び出し、データセットグループ ARMを提供します。

注記

データセットグループに関連付けることができるイベントトラッカーは 1 つのみです。既存のイベントトラッカーと同じデータセットグループを使用して CreateEventTracker を呼び出すと、エラーが発生します。​

Python
import boto3 personalize = boto3.client('personalize') response = personalize.create_event_tracker( name='MovieClickTracker', datasetGroupArn='arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieClickGroup' ) print(response['eventTrackerArn']) print(response['trackingId'])
AWS CLI
aws personalize create-event-tracker \ --name MovieClickTracker \ --dataset-group-arn arn:aws:personalize:us-west-2:acct-id:dataset-group/MovieClickGroup

イベントトラッカーの ARN と追跡 ID が表示されます。次に例を示します。

{ "eventTrackerArn": "arn:aws:personalize:us-west-2:acct-id:event-tracker/MovieClickTracker", "trackingId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" }

Event-Interactions データセット

Amazon Personalize でイベントトラッカーを作成すると、そのイベントトラッカーに関連付けられているデータセットグループに新しいイベントインタラクションのデータセットも作成されます。Event-Interactions データセットには、PutEvents のイベントデータが保存されています。データセットの内容は、ユーザーには使用できません。

データセットのプロパティを表示するには、ListDatasets API を呼び出して、データセットグループの ARN を提供します。データセットの詳細については、EVENT_INTERACTIONS データセットのデータセット ARN を使用して DescribeDataset API を呼び出します。以下に、ListDatasets からのレスポンス例を示します。

{ "datasets": [ { "name": "ratings-dsgroup/EVENT_INTERACTIONS", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieClickGroup/EVENT_INTERACTIONS", "datasetType": "EVENT_INTERACTIONS", "status": "ACTIVE", "creationDateTime": 1554304597.806, "lastUpdatedDateTime": 1554304597.806 }, { "name": "ratings-dataset", "datasetArn": "arn:aws:personalize:us-west-2:acct-id:dataset/MovieClickGroup/INTERACTIONS", "datasetType": "INTERACTIONS", "status": "ACTIVE", "creationDateTime": 1554299406.53, "lastUpdatedDateTime": 1554299406.53 } ], "nextToken": "..." }

PutEvents オペレーション

イベントを記録するには、PutEvents オペレーションを呼び出します。次の例は、必要最小限の情報を含む 1 つのイベントを渡す PutEvents コールを示します。対応する Interactions スキーマが表示され、Interactions データセットから行の例が表示されます。

セッション ID はアプリケーション独自のものです。イベントリストは Event オブジェクトの配列です。properties キーは、イベント固有のデータの文字列マップ (キーと値のペア) です。この場合は、アイテム ID のみを指定します。

InteractionsuserIditemIdsentAt パラメータは、対応する履歴データセットの USER_ID、ITEM_ID、TIMESTAMP フィールドにマップされます。詳細については、「データセットとスキーマ」を参照してください。

注記

AWS Amplify を使用してイベントデータを Amazon Personalize に送信することもできます。詳細については、「Amplify - Analytics」を参照してください。

Interactions schema: USER_ID, ITEM_ID, TIMESTAMP Interactions dataset: user123, item-xyz, 1543631760
Python
import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'USER_ID', sessionId = 'session_id', eventList = [{ 'sentAt': TIMESTAMP, 'eventType': 'EVENT_TYPE', 'properties': "{\"itemId\": \"ITEM_ID\"}" }] )
AWS CLI
aws personalize-events put-events \ --tracking-id tracking_id \ --user-id USER_ID \ --session-id session_id \ --event-list '[{ "sentAt": "TIMESTAMP", "eventType": "EVENT_TYPE", "properties": "{\"itemId\": \"ITEM_ID\"}" }]'

この例を終了したら、必要なプロパティのみを使用してモデルのトレーニングに進みます。このトレーニングでは、eventValue プロパティを使用しません。このプロパティはイベントに含まれていないためです。

次の例は、イベント値でトレーニングするデータを送信する方法を示しています。また、異なる種類 ('like' と 'rating') の複数のイベントが渡される様子も示します。この場合は、CreateSolution オペレーションでトレーニングするイベントタイプを指定する必要があります (次の 「イベントとソリューション」を参照)。また、一部のレシピでメタデータとして使用される追加のプロパティ (numRatings) の記録も示しています。

Interactions schema: USER_ID, ITEM_ID, TIMESTAMP, EVENT_TYPE, EVENT_VALUE, NUM_RATINGS Interactions dataset: user123, movie_xyz, 1543531139, rating, 5, 12 user321, choc-ghana, 1543531760, like, true user111, choc-fake, 1543557118, like, false
Python
import boto3 import json personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'user555', sessionId = 'session1', eventList = [{ 'eventId': 'event1', 'sentAt': '1553631760', 'eventType': 'like', 'properties': json.dumps({ 'itemId': 'choc-panama', 'eventValue': 'true' }) }, { 'eventId': 'event2', 'sentAt': '1553631782', 'eventType': 'rating', 'properties': json.dumps({ 'itemId': 'movie_ten', 'eventValue': '4', 'numRatings': '13' }) }] )
AWS CLI
aws personalize-events put-events \ --tracking-id tracking_id \ --user-id user555 \ --session-id session1 \ --event-list '[{ "eventId": "event1", "sentAt": "1553631760", "eventType": "like", "properties": "{\"itemId\": \"choc-panama\", \"eventValue\": \"true\"}" }, { "eventId": "event2", "sentAt": "1553631782", "eventType": "rating", "properties": "{\"itemId\": \"movie_ten\", \"eventValue\": \"4\", \"numRatings\": \"13\"}" }]'
注記

プロパティキーは、Interactions スキーマのフィールドと一致するキャメルケース名を使用します。たとえば、フィールド 'ITEM_ID'、'EVENT_VALUE'、'NUM_RATINGS' が Interactions スキーマで定義されている場合、プロパティキーは itemId, eventValue, and numRatings になります。

イベントメトリクス

Amazon Personalize に送信されるイベントのタイプと数をモニタリングするには、Amazon CloudWatch メトリクスを使用します。詳細については、「Amazon Personalize のモニタリング」を参照してください。

イベントとソリューション

イベントデータを使用するモデルをトレーニングする場合、CreateSolution オペレーションの 2 つのパラメータが関連します。eventType パラメータは、複数のイベントタイプを記録するときに指定する必要があります。eventType は、Amazon Personalize でモデルのトレーニングでラベルとして使用されるイベントのタイプを示します。

SolutionConfig オブジェクトの eventValueThreshold パラメータは、イベントフィルターを作成します。このパラメータを指定すると、しきい値以上の値を持つイベントのみがモデルのトレーニングに使用されます。eventValueThreshold を使用するときはイベントタイプを指定する必要があります。