イベントの記録 - Amazon Personalize

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

イベントの記録

Amazon Personalize は、リアルタイムのイベントデータのみ、インポートされたデータの履歴 (開始方法ガイドに記載)、またはその両方の混在に基づいてレコメンデーションを行うことができます。リアルタイムのイベントデータをインポートするにはAWS、Python AWS SDK、Amplify、または AWS CLI を使用してユーザーアクティビティ (イベント) をリアルタイムで記録します。

注記

AWS Amplify には、ウェブクライアントアプリケーションからのイベントを記録するための JavaScript ライブラリと、サーバーコードでイベントを記録するためのライブラリが含まれています。詳細については、「Amplify - https://aws-amplify.github.io/docs/js/analyticsAnalytics」を参照してください。

イベント記録の要件

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

  • Interactions データセットを含むデータセットグループ。これは空の場合があります。データセットグループとデータセットの作成については、「」データの準備とインポートを参照してください。

  • イベントトラッカー。

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

空のインタラクションデータセットから開始し、十分なデータを記録したら、新しく記録されたイベントのみを使用してモデルをトレーニングできます。モデルをトレーニングするための最小データ要件は次のとおりです。

  • 1000 結合されたインタラクションデータの レコード ( eventType および でフィルタリングされた後 eventValueThreshold(ある場合))

  • 25 少なくともそれぞれ 2 つのインタラクションを持つ一意のユーザー

記録されたイベントが推奨事項に与える影響

キャンペーンを作成すると、 はユーザーのレコメンデーションを生成する際に、既存のアイテム (最新モデルのトレーニングに使用したデータに含めたアイテム) に新しい記録済みのイベントデータAmazon Personalizeを自動的に使用します。これにはモデルを再トレーニングする必要はありません (SIMS または人気カウントのレシピを使用している場合を除きます)。

代わりに、新しく記録されたイベントデータがユーザーの履歴に追加されます。 Amazon Personalize は、ユーザー (およびこのユーザーのみ) の推奨事項を生成するときに、変更されたデータを使用します。

  • 新しいアイテム (モデルのトレーニングに使用したデータに含まれていないアイテム) について記録されたイベントの場合、ユーザーとパーソナライゼーションのレシピでモデル (ソリューションバージョン) をトレーニングすると、 は 2 時間ごとにモデルAmazon Personalizeを自動的に更新し、新しいアイテムの更新後、推奨事項に影響します。「ユーザーパーソナライゼーションレシピ」を参照してください。

    その他のレシピでは、新しいレコードのモデルを再トレーニングして推奨事項に影響を与える必要があります。 は、新しいアイテムについて記録されたイベントAmazon Personalizeを保存し、新しいソリューションバージョンを作成 (新しいモデルをトレーニング) すると、この新しいデータはユーザーのAmazon Personalize推奨事項に影響します。

  • 新規ユーザー (モデルのトレーニングに使用したデータに含まれていなかったユーザー) の記録されたイベントの場合、レコメンデーションは最初に人気アイテムにのみ使用されます。ユーザーにより多くのイベントを記録すると、レコメンデーションがより関連します。 は新しいユーザーデータAmazon Personalizeを保存するため、より関連性の高いレコメンデーションのためにモデルを再トレーニングすることもできます。

    新しい匿名ユーザー (userId のないユーザー) の場合、 は、ユーザーが Amazon Personalize オペレーションで渡sessionIdした PutEvents を使用して、ユーザーがログインする前にイベントをユーザーと関連付けます。これにより、ユーザーが匿名のときに発生したイベントを含む連続するイベント履歴が作成されます。

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

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

イベントトラッカーの作成

イベントトラッカーは、新しいイベントデータの送信先データセットグループを指定します。イベントトラッカーを作成するには、 CreateEventTracker API オペレーションを呼び出し、ターゲットインタラクションデータセットを含むデータセットグループの Amazon リソースネーム (ARN) をパラメータとして渡します。イベントトラッカーを作成すると、レスポンスに追跡 ID が含まれます。この ID はPutEvents オペレーションを使用するときにパラメータとして渡しますAmazon Personalize。次に、 は、イベントトラッカーで指定したデータセットグループのインタラクションデータセットに新しいイベントデータを追加します。

注記

データセットグループに関連付けることができるイベントトラッカーは 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" }

PutEvents オペレーション

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

ユーザーが最初にウェブサイトにアクセスしたとき、またはアプリケーションを使用したsessionIdときに、アプリケーションによって が生成されます。 はAmazon Personalize、 sessionId を使用して、ログイン (匿名) する前にイベントをユーザーと関連付けます。ユーザーがログインし、 を含むイベントを送信するとuserId、 は、以前に匿名であった履歴イベントデータを に一致Amazon Personalizeさせて にuserId関連付けますsessionId。これにより、ユーザーが匿名のときに発生したイベントを含む連続するイベント履歴が作成されます。

イベントリストは Event オブジェクトの配列です。イベントごとに eventType が必要ですが、この例ではeventType、データはスキーマに含まれていないため、トレーニングで使用されません。プレースホルダー値を指定して、要件を満たすことができます。properties キーは、イベント固有のデータの文字列マップ (キーと値のペア) です。この場合は、アイテム ID のみを指定します。

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

対応するインタラクションスキーマ

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\"}" }]'

この例を終了したら、必要なプロパティのみを使用してモデルのトレーニングに進みます。

次の例は、イベント値でトレーニングするデータを送信する方法を示しています。また、異なる種類 ('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, 4 user111, choc-fake, 1543557118, like, 3
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': 4, 'numRatings': 0 }) }, { 'eventId': 'event2', 'sentAt': '1553631782', 'eventType': 'rating', 'properties': json.dumps({ 'itemId': 'movie_ten', 'eventValue': 3, '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 になります。

表示データの記録

ユーザーパーソナライゼーション レシピを使用するとPutEvents オペレーションでインプレッションデータを記録できます。イメージは、ユーザーが特定のアイテムとやり取りした (たとえば、クリックまたは監視した) ときに表示されていたアイテムのリストです。 Amazon Personalize はインプレッションデータを使用して探索をガイドします。レコメンデーションには、インタラクションデータや関連性が少ないアイテムが含まれます。がモデル化できる暗示的および明示的なAmazon Personalizeインプレッションについては、「」イメージデータを参照してください。

重要

PutEvents リクエストで競合する暗示的および明示的なインプレッションデータを指定した場合、 Amazon Personalize はデフォルトで明示的なインプレッションを使用します。

ユーザーにインプレッションデータとして表示したAmazon Personalize推奨事項を記録するにはrecommendationId、リクエストPutEventsに を含め、推奨事項データに基づいて暗黙的なインプレッションAmazon Personalizeを取得します。

イベントのインプレッションデータを手動で記録するには、PutEventsコマンドimpressionの入力パラメータにインプレッションをリストします。次のコードサンプルはPutEvents オペレーションに recommendationIdimpression を含める方法を示しています。両方を含めると、 Amazon Personalize はデフォルトで明示的なインプレッションを使用します。

import boto3 personalize_events = boto3.client(service_name='personalize-events') personalize_events.put_events( trackingId = 'tracking_id', userId= 'userId', sessionId = 'sessionId', eventList = [{ 'eventId': 'event1', 'eventType': 'rating', 'sentAt': 1553631760, 'itemId': 'item id', 'recommendationId': 'recommendation id', 'impression': ['itemId1', 'itemId2', 'itemId3'] }] )

イベントメトリクス

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

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

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

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

Jupyter ノートブックのサンプル

イベントトラッカーと Amazon Personalize オペレーションを使用して でユーザーのリアルタイム動作PutEventsに対応する方法を示すサンプル Jupyter ノートブックについては、amazon-personalize-samples GitHub リポジトリの getting_started フォルダにある 2.View_Campaign_And_Interactions.ipynb を参照してください。