翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
イベントの記録
ドメインデータセットグループとカスタムデータセットグループの両方を使用すると、Amazon Personalize は、リアルタイムイベントデータのみ、履歴イベントデータのみ (「Amazon Personalize データセットへのデータの直接インポート」を参照)、または両方の組み合わせに基づいてレコメンデーションを作成できます。イベントをリアルタイムで記録して、Amazon Personalize がユーザーの最新のアクティビティから学習し、ユーザーがアプリケーションを使用するごとにレコメンデーションを更新できるようにします。これにより、インタラクションデータが最新の状態に保たれ、Amazon Personalize のレコメンデーションの関連性が向上します。
AWS SDK、AWS Amplify、または AWS Command Line Interface (AWS CLI) を使用して、リアルタイムのイベントを記録できます。イベントを記録すると、Amazon Personalize は、イベントデータをデータセットグループの Interactions データセットに追加します。まったく同じタイムスタンプで同じプロパティを持つ 2 つのイベントを記録した場合、Amazon Personalize はイベントの 1 つだけを保存します。
Apache Kafka を使用している場合は、Amazon Personalize の Kafka コネクタを使用して Amazon Personalize にリアルタイムでデータをストリーミングできます。詳細については、Github リポジトリの Amazon Personalize 用 Kafka コネクタを参照してください
AWSAmplify には、JavaScriptウェブクライアントアプリケーションからのイベントを記録するためのライブラリと、サーバーコードにイベントを記録するためのライブラリが含まれています。詳細については、「Amplify-分析
トピック
イベントの記録とモデルのトレーニングに関する要件
イベントを記録するには、以下が必要です。
-
Interactions
データセットを含むデータセットグループ。これは空の場合があります。はじめに ガイドを完了した場合は、作成したものと同じデータセットグループおよびデータセットを使用できます。データセットグループとデータセットの作成については、「ステップ 2: データの準備」を参照してください。 -
イベントトラッカー
-
PutEvents オペレーションの呼び出し。
空の Interactions データセットから始めて、十分なデータを記録したら、新しく記録されたイベントのみを使用してモデルをトレーニングできます。すべてのユースケース(ドメインデータセットグループ)とレシピ(カスタムデータセットグループ)について、トレーニングの前にインタラクションデータに次のものが必要です。
-
カタログ内のアイテムを操作したユーザーからのインタラクションを最低1000件記録します。これらのインタラクションは、一括インポート、ストリーミングイベント、あるいはその両方による可能性があります。
-
25以上のユニークなユーザーIDで、それぞれに少なくとも2つのインタラクションがあります。
品質を推奨するには、少なくとも1,000人のユーザーから50,000件以上のインタラクションがあり、それぞれ2回以上のインタラクションがあることをおすすめします。
リアルタイムイベントがレコメンデーションに与える影響
キャンペーン (カスタムソリューションの場合) またはレコメンダーの作成後、Amazon Personalize は、パーソナライズされたレコメンデーションを生成する際に、インポートから数秒以内に既存のアイテムに関して記録された新しいイベントデータを自動的に使用します。既存の項目は、最新のトレーニングで使用したデータに含まれていた項目です。
Amazon Personalize は、新しく記録されたイベントデータをユーザーの履歴に追加します。その後、Amazon Personalize は、ユーザー (およびこのユーザーのみ) 向けのレコメンデーションを生成するときに、変更されたデータを使用します。
関連商品、最も閲覧数の多い商品、人気上昇中の商品など、パーソナライズされていないレコメンデーションについては、モデルを再トレーニングするか、レコメンダーが自動的に更新されるまで待つ必要があります。
-
新しいアイテム (モデルのトレーニングに使用したデータに含めなかったアイテム) に関して記録されたイベントについては、[Top picks for you] (上位のおすすめ) および [Recommended for for you] (おすすめ商品) のユースケース (ドメインデータセットグループの場合) 向けにレコメンダーを作成したか、User-Personalization を使用してモデル (ソリューションバージョン) をトレーニングした場合、Amazon Personalize は、2 時間ごとにモデルを自動的に更新します。各更新が完了すると、新しいアイテムがレコメンデーションに影響を与えます。User-Personalization レシピの自動更新については、「User-Personalization レシピ」を参照してください。
その他のドメインのユースケースでは、Amazon Personalize は、レコメンダーの作成日から 7 日ごとにレコメンダー用の新しいモデルを自動的にトレーニングします。その他のカスタムレシピについては、新しいレコードがレコメンデーションに影響を与えることができるように、モデルを再トレーニングする必要があります。Amazon Personalize は、新しいアイテムに関して記録されたイベントを保存します。新しいソリューションバージョンを作成すると (新しいモデルをトレーニングすると)、この新しいデータは、ユーザー向けの Amazon Personalize のレコメンデーションに影響を与えます。
-
新規ユーザー (レコメンダーまたはソリューションバージョンの作成に使用したデータに含まれていなかったユーザー) に関して記録されたイベントについては、レコメンデーションは、最初は人気のあるアイテムのみについてのものとなります。ユーザーデータセットにユーザーに関するメタデータを指定し、メタデータを使用するレシピ(「ユーザー個人設定」や「パーソナライズランキング」など)を選択した場合、これらの人気アイテムはユーザーにとってより関連性が高くなります。
ユーザーのためにより多くのイベントを記録すると、レコメンデーションの関連性が高まります。Amazon Personalize は新しいユーザーデータを保存し、Amazon Personalize が自動更新を実行するとき、または新しいソリューションバージョンを手動でトレーニングするときにトレーニングに使用します。
新規の匿名ユーザー (userId を持たないユーザー) については、Amazon Personalize は、ユーザーがログインする前に、PutEvents 操作で渡した
sessionId
を使用してイベントをそのユーザーに関連付けます。詳細については、「匿名ユーザーのためにより多くのイベントを記録する」を参照してください。
以下のレシピとユースケースは、レコメンデーションのリアルタイム更新をサポートしています。ユーザーへのレコメンデーションは、アイテムとのインタラクションを記録すると更新されます。
-
User-Personalization レシピ
-
Personalized-Ranking レシピ
-
こんなあなたにおすすめ (Eコマースのユースケース)
-
おすすめ商品 (VIDEO_DEMAND のユースケース)
イベントトラッカーの作成
イベントトラッカーは、新しいイベントデータ用に宛先データセットグループを指定します。イベントトラッカーは、Amazon Personalize コンソールまたは CreateEventTracker API 操作を使用して作成します。ターゲットの Interactions データセットを含むデータセットグループの Amazon リソースネーム (ARN) をパラメータとして渡します。Amazon Personalize コンソールを使用してイベントトラッカーを作成する手順については、「イベントトラッカーの作成 (コンソール)」を参照してください。
イベントトラッカーには、PutEventsオペレーションを使用するときにパラメータとして渡す追跡 ID が含まれています。その後、Amazon Personalize は、イベントトラッカーで指定したデータセットグループの Interactions データセットに新しいイベントデータを追加します。
注記
データセットグループ用に作成できるイベントトラッカーは 1 つだけです。
PutEventsオペレーションによるイベントの記録
イベントを記録するには、PutEvents オペレーションを呼び出します。次の例は、1 PutEvents
つのイベントを渡す操作を示しています。対応する Interactions スキーマが表示され、Interactions データセットから行の例が表示されます。
アプリケーションは、ユーザーが最初にウェブサイトにアクセスしたとき、またはアプリケーションを使用したときに、sessionId
を生成します。Amazon Personalize は、sessionId
を使用して、ユーザーがログインする前にイベントをそのユーザーに関連付けます (匿名)。詳細については、匿名ユーザーのためにより多くのイベントを記録するを参照してください。
イベントリストは Event オブジェクトの配列です。各イベントについて eventType
が必要ですが、この例では、eventType
データはスキーマに含まれていないため、トレーニングでは使用されません。要件を満たすためにプレースホルダーの値を指定できます。
Interactions
の userId
、itemId
、sentAt
パラメータは、対応する履歴データセットの USER_ID、ITEM_ID、TIMESTAMP フィールドにマップされます。詳細については、「データセットとスキーマ」を参照してください。
対応するインタラクションスキーマ
Interactions schema: USER_ID, ITEM_ID, TIMESTAMP Interactions dataset: user123, item-xyz, 1543631760
コードサンプル
この例を終了したら、必要なプロパティのみを使用してモデルのトレーニングに進みます。
次の例は、イベント値でトレーニングするデータを送信する方法を示しています。また、異なる種類 ('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
注記
プロパティキーは、Interactions スキーマのフィールドと一致するキャメルケース名を使用します。例えば、フィールド「NUM_RATINGS」がインタラクションスキーマで定義されている場合、プロパティキーは numRatings
である必要があります。
匿名ユーザーのためにより多くのイベントを記録する
アカウントを作成する前に、ユーザーのイベントを記録できます。これにより、匿名ユーザー向けのレコメンデーションを取得できます。sessionId
userID
GetRecommendationsリクエストのとおりに提供できます。
匿名ユーザー向けにイベントを記録して、ログイン前とログイン後のイベントを含む継続的なイベント履歴を作成します。これにより、Amazon Personalize はユーザーに関するより多くのインタラクションデータを提供し、より関連性の高いレコメンデーションの生成に役立ちます。
ユーザーの継続的なイベント履歴を作成するには、匿名イベントのイベントと新しいイベントを含むイベントを少なくとも 1 userId
つ記録します。sessionId
その後、のイベントをいくつでも記録できますuserId
。sessionId
彼らは変わる可能性があります。次回の完全な再トレーニングでは、Amazon Personalize userId
はを追跡対象のイベント履歴とに関連付けます。sessionId
再トレーニングは、次にトレーニングモードを FULL に設定して新しいソリューションバージョンを作成するとき(カスタムデータセットグループ)、またはレコメンダー向けの次回の自動再トレーニング(ドメインデータセットグループ)で行うことができます。
再トレーニングが完了すると、匿名セッションからSessionIDに追跡されたアクティビティと、そのuserId で追跡されたイベントの両方に基づいて推奨が決定されます。
インプレッションデータの記録
User-Personalizationレシピを使用するか、ドメインデータセットグループのデータセットのスキーマに IMPRESSIONS フィールドを追加すると、操作中のインプレッションデータを記録できます。PutEventsインプレッションは、ユーザーが特定のアイテムを操作した (例えば、クリックや視聴した) ときに表示されたアイテムのリストです。Amazon Personalize は、インプレッションデータを使用して探索をガイドします。レコメンデーションには、インタラクションデータや関連性が少ないアイテムが含まれます。Amazon Personalize がモデル化できる暗黙的および明示的なインプレッションについては、「インプレッションデータ」を参照してください。
重要
PutEvents
リクエストで競合する暗黙的および明示的なインプレッションデータを提供する場合、Amazon Personalize は、デフォルトで明示的なインプレッションを使用します。
ユーザーに表示する Amazon Personalize のレコメンデーションをインプレッションデータとして記録するには、PutEvents リクエストに recommendationId
を含めます。Amazon Personalize は、レコメンデーションデータに基づいて暗黙的なインプレッションを派生させます。
イベントのインプレッションデータを手動で記録するには、PutEvents コマンドの impression
入力パラメータにインプレッションをリストします。次のコードサンプルは、Python 用 SDK (Boto3) または SDK for Java 2.x 用 SDK PutEvents のいずれかを使用してオペレーションに a と an impression
を含める方法を示しています。recommendationId
両方を含めると、Amazon Personalize は、デフォルトで明示的なインプレッションを使用します。
イベント指標とアトリビューションレポート
Amazon Personalize に送信されるイベントの種類と数をモニタリングするには、Amazon CloudWatch メトリクスを使用します。詳細については、「Amazon Personalize のモニタリング」を参照してください。
CloudWatchレコメンデーションの効果を示すレポートを生成するには、メトリクス・アトリビューションを作成し、ユーザーとのやりとりをリアルタイムでレコメンデーションで記録します。メトリックアトリビューションの作成については、を参照してくださいレコメンデーションの効果の測定。
イベントごとに、ユーザーに表示したおすすめのレコメンデーションIDを含めてください。または、サードパーティなどのイベントソースを含めてください。このデータをインポートして、さまざまなキャンペーン、レコメンダー、サードパーティを比較します。最大100のイベントアトリビューションソースをインポートできます。
-
を指定すると
recommendationId
、Amazon Personalize は自動的にソースキャンペーンまたはレコメンダーを特定し、EVENT_ATTRIBUTION_SOURCE 列のレポートで特定します。 -
両方の属性を指定した場合、Amazon Personalize
eventAttributionSource
はのみを使用します。 -
ソースを指定しない場合、Amazon Personalize
SOURCE_NAME_UNDEFINED
はレポートでソースにラベルを付けます。
次のコードは、eventAttributionSource
PutEventsオペレーション内のイベントにを指定する方法を示しています。
response = personalize_events.put_events( trackingId = '
eventTrackerId
', userId= 'userId
', sessionId = 'sessionId123
', eventList = [{ 'eventId': 'event1
', 'eventType': 'watch
', 'sentAt': '1667260945
', 'itemId': '123
', 'metricAttribution': { 'eventAttributionSource': 'thirdPartyServiceXYZ
' } }] ) statusCode = response['ResponseMetadata']['HTTPStatusCode'] print(statusCode)
次のコードは、recommendationId
PutEventsオペレーション内のイベントにを指定する方法を示しています。
response = personalize_events.put_events( trackingId = '
eventTrackerId
', userId= 'userId
', sessionId = 'sessionId123
', eventList = [{ 'eventId': 'event1
', 'eventType': 'watch
', 'sentAt': '1667260945
', 'itemId': '123
', 'recommendationId': 'RID-12345678-1234-1234-1234-abcdefghijkl
' }] ) statusCode = response['ResponseMetadata']['HTTPStatusCode'] print(statusCode)
サンプル Jupyter ノートブック
Amazon Personalize を使用して、PutEventsイベントトラッカーとオペレーションを使用するユーザーのリアルタイムの行動に対応する方法を示すサンプル Jupyter ノートブックについては、リポジトリの getting_started フォルダーにある 2.view_Campaign_and_Interactions.ipynb
サードパーティーのイベント追跡サービス
以下の顧客データプラットフォーム (CDP) は、アプリケーションからイベントデータを収集して Amazon Personalize に送信するのに役立ちます。
-
Amplitude — Amplitudeを使用すると、ユーザーの行動を追跡できるため、ユーザーの行動を把握しやすくなります。Amplitude と Amazon Personalize の使用方法については、AWSパートナーネットワーク (APN) の次のブログ記事「Amplitude と Amazon Personalize によるパーソナライズの効果の測定
」を参照してください。 -
mParticle — mParticle を使用してアプリからイベントデータを収集できます。mParticle と Amazon Personalize を使用してパーソナライズされた商品レコメンデーションを実装する方法を示す例については、「機械学習に CDP の力を活用する方法:
パート 2」を参照してください。 -
セグメント — セグメントを使用してデータを Amazon Personalize に送信できます。セグメントと Amazon Personalize の統合の詳細については、「Amazon Personalize デスティネーション」を参照してください。
サンプル実装
レコメンデーションを操作するユーザーからのイベントをストリーミングする方法を示す簡単な例については、Amazon Personalize サンプルリポジトリの streaming_events
Amazon Personalize リソースとクライアントアプリケーションの間に位置するリアルタイム API をデプロイするためのソースコードとサポートファイルを含む完全な例については、サンプルリポジトリの「リアルタイムパーソナライゼーション API
-
ユーザーコンテキストとユーザーイベント収集
-
レスポンスキャッシュ
-
アイテムのメタデータに基づくおすすめのデコレーション
-
A/B テスト
-
API 認証