翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トレーニング用のアイテムインタラクションデータの準備
アイテムインタラクションは、ユーザーとカタログ内のアイテムとのポジティブなインタラクションイベントです。例えば、ユーザーが映画を見たり、リストを表示したり、靴を購入したりする場合です。ユーザーとアイテムとのインタラクションに関するデータをアイテムインタラクションデータセットにインポートします。クリック、視聴、または購入など、複数のイベントタイプを記録できます。
例えば、ユーザーが特定のアイテムをクリックしてからそのアイテムに「いいね!」をした場合、Amazon Personalize にこれらのイベントをトレーニングデータとして使用させることができます。各イベントについて、ユーザーの ID、タイムスタンプ (Unix 時間エポック形式)、ならびにイベントタイプ (クリックおよび「いいね」) を記録します。その後、両方のアイテムインタラクションイベントをアイテムインタラクションデータセットに追加します。
すべてのドメインユースケースとカスタムレシピでは、バルクアイテムインタラクションデータは CSV ファイルにある必要があります。各行は、ユーザーとアイテム間の単一のインタラクションを表す必要があります。データの準備が完了したら、スキーマ JSON ファイルを作成する準備が整います。このファイルは、データの構造を Amazon Personalize に伝えます。詳細については、「Amazon Personalize スキーマのスキーマ JSON ファイルの作成」を参照してください。
以下のセクションでは、Amazon Personalize のアイテムインタラクションデータを準備する方法について詳しく説明します。すべてのタイプのデータの、バルクデータフォーマットのガイドラインについては、「バルクデータフォーマットのガイドライン」を参照してください。
アイテムインタラクションデータの要件
以下のセクションでは、Amazon Personalize のアイテムインタラクションデータの要件を一覧表示します。追加のクォータについては、「Amazon Personalize エンドポイントとクォータ」を参照してください。
最小トレーニング要件
すべてのドメインユースケースとカスタムレシピにおいて、バルクアイテムインタラクションデータには以下が必要です。
-
カタログ内のアイテムを操作したユーザーからのアイテムインタラクションレコードが少なくとも 1000 件ある。これらのインタラクションは、一括インポート、ストリーミングイベント、あるいはその両方からのものである。
-
それぞれに 2 回以上のアイテムインタラクションを伴う 25 個以上のユニークユーザー ID。
質の高いレコメンデーションを行うには、1,000 人以上のユーザーからのアイテムインタラクションが少なくとも 50,000 件あり、それぞれ 2 回以上のアイテムインタラクションがあることが推奨されます。
レコメンダーまたはカスタムソリューションを作成するには、少なくともアイテムインタラクションデータセットを作成する必要があります。
列の要件
アイテムインタラクションデータには、次の列が必要です。
-
USER_ID — アイテムを操作したユーザーの一意の識別子。すべてのイベントには USER_ID が必要です。最大長が 256 文字の
string
である必要があります。 -
ITEM_ID — ユーザーが操作したアイテムの一意の識別子。すべてのイベントにはアイテム ID が必要です。最大長が 256 文字の
string
である必要があります。 -
TIMESTAMP — イベントが発生した時刻 (Unix エポック時間形式、秒単位)。すべてのインタラクションには TIMESTAMP が必要です。詳細については、「タイムスタンプのデータ」を参照してください。
-
EVENT_TYPE — クリック、視聴、購入など、アイテムインタラクションイベントの性質。ドメインレコメンダーの場合、イベントタイプの列と、すべてのインタラクションにイベントタイプが必要です。すべてのカスタムレシピでは、EVENT_TYPE 列が推奨されますが、オプションです。追加する場合、すべてのイベントにイベントタイプが必要です。詳細については、「イベントタイプとイベント値のデータ」を参照してください。
ユースケースとデータに応じて、さらにカスタム列を追加することができます。オプションのメタデータ列の最大数は 5 です。これらの列には、空/null 値を含めることができます。これらの列は、少なくとも 70% 完成していることをお勧めします。
タイムスタンプのデータ
タイムスタンプデータは Unix エポック時刻形式 (秒単位) である必要があります。例えば、2020 年 7 月 31 日の日付のエポックタイムスタンプ (秒) は 1596238243 です。日付を Unix エポックタイムスタンプに変換するには、[エポックコンバーター — Unix タイムスタンプコンバーター]
Amazon Personalize はタイムスタンプデータを使用して、レイテンシーを計算し、時間ベースのパターンを特定します。これは、Amazon Personalize がユーザーの変化する好みによりレコメンデーションを最新の状態に保つのに役立ちます。
イベントタイプとイベント値のデータ
アイテムインタラクションデータセットは、各インタラクションのイベントタイプとイベント値データを保存できます。カスタムリソースのみがイベント値データを使用します。
イベントタイプデータ
アイテムインタラクションのイベントタイプは、その性質と重要性に関するコンテキストを提供します。イベントタイプの例には、クリック、視聴、購入などがあります。Amazon Personalize は、クリックや購入データなどのイベントタイプデータを使用して、ユーザーの意図と関心を特定します。アイテムインタラクションデータセット内のオプションのメタデータ列の合計数と組み合わされた、個別のイベントタイプの最大数は 10 です。
ドメインレコメンダーの場合、イベントタイプの列と、すべてのインタラクションにイベントタイプが必要です。すべてのカスタムレシピでは、EVENT_TYPE 列が推奨されますが、オプションです。追加する場合、すべてのイベントにイベントタイプが必要です。
カスタムリソースを作成する場合は、トレーニングに使用されるイベントをイベントタイプ別に選択できます。データセットの EVENT_TYPE 列に複数のイベントタイプがあり、カスタムソリューションを設定するときにイベントタイプを指定しない場合、Amazon Personalize は、タイプにかかわらず、すべてのアイテムインタラクションデータを同じ重みでトレーニングに使用します。詳細については、「トレーニングに使用するアイテムインタラクションデータの選択」を参照してください。
次のユースケースには、特定のイベントタイプ要件があります。
VIDEO_ON_DEMAND ドメインユースケース
-
X を視聴するには、少なくとも 1000 個の
Watch
イベントが必要です。 -
最も人気のある場合には、少なくとも 1000 個の
Watch
イベントが必要です。
ECOMMERCE ドメインユースケース
-
ほとんどの表示では、少なくとも 1000 個の
View
イベントが必要です。 -
ベストセラーには、少なくとも 1000 個の
Purchase
イベントが必要です。
ポジティブおよびネガティブのイベントタイプ
Amazon Personalize は、すべてのインタラクションがポジティブなインタラクションであることを前提としています。嫌いなどのネガティブなイベントタイプとのインタラクションは、必ずしもユーザーの将来のレコメンデーションにアイテムが表示されないようにするわけではありません。
以下は、ネガティブなイベントやユーザーの無関心な影響に関するレコメンデーションを作成する方法です。
-
すべてのドメインユースケースと User-Personalization レシピで、Amazon Personalize はインプレッションデータを使用できます。アイテムがインプレッションデータに表示され、ユーザーが選択しない場合、そのアイテムがレコメンデーションに表示される可能性は低くなります。詳細については、「インプレッションデータ」を参照してください。
-
カスタムリソースを使用してポジティブなイベントタイプとネガティブなイベントタイプをインポートする場合、ポジティブなイベントタイプのみをトレーニングし、ユーザーがネガティブに操作したアイテムを除外できます。詳細については、トレーニングに使用するアイテムインタラクションデータの選択およびレコメンデーションとユーザーセグメントのフィルタリングを参照してください。
イベント値データ (カスタムリソース)
イベント値データは、ユーザーが視聴した映画の割合 (%)、または 10 点満点での評価である場合があります。カスタムソリューションを作成する場合は、EVENT_TYPE 列と EVENT_VALUE 列のデータに基づいて、トレーニングに使用されるレコードを選択できます。ドメインレコメンダーの場合、Amazon Personalize はイベント値データを使用しません。また、トレーニング前にイベントをフィルタリングすることはできません。
タイプと値に基づいてレコードを選択するには、イベントのイベントタイプとイベント値データを記録します。すべてのイベントにイベント値を指定する必要はありません。各イベントで選択する値は、除外するデータや記録するイベントタイプによって異なります。例えば、視聴イベントタイプでは、ユーザーが視聴した動画の割合などのユーザーアクティビティを一致させることができます。
ソリューションを設定する際には、トレーニングからレコードを除外するためのしきい値として特定の値を設定します。例えば、EVENT_TYPE が [watch] (視聴) のイベントの EVENT_VALUE データが、ユーザーが視聴した動画のパーセンテージ (%) である場合であって、イベント値のしきい値を 0.5 に、イベントタイプを [watch] (視聴) に設定する場合、Amazon Personalize は、EVENT_VALUE が 0.5 以上の [watch] (視聴) インタラクションイベントのみを使用してモデルをトレーニングします。
詳細については、「トレーニングに使用するアイテムインタラクションデータの選択」を参照してください
コンテキストメタデータ
特定のレシピやレコメンデーションユースケースでは、Amazon Personalize は、ユーザーにとって最も関連性の高いアイテムを明らかにする基本的なパターンを識別する際に、コンテキストメタデータを使用できます。コンテキストメタデータは、場所やデバイスのタイプなど、イベント時にユーザーの環境で収集するインタラクションデータです。ユーザーのレコメンデーションを取得するときに、ユーザーのコンテキストを指定することもできます。
コンテキストメタデータを含めることで、ユーザーによりパーソナライズされたエクスペリエンスを提供し、新規ユーザーのコールドスタートフェーズを短縮できます。コールドスタートフェーズとは、履歴ユーザーデータがないためにレコメンデーションの関連性が低い場合のことです。
例えば、アイテムインタラクション CSV ファイルに tablet
と phone
の値を持つ DEVICE_TYPE 列が含まれている場合、Amazon Personalize は、顧客がさまざまなデバイスで異なる方法で購入する方法を学習できます。ユーザーのレコメンデーションを取得すると、ユーザーにインタラクション履歴がない場合でも、デバイスを指定でき、レコメンデーションの関連性が高まります。
以下は、DEVICE_TYPE 列をコンテキストメタデータとしてアイテムインタラクション CSV ファイルをフォーマットする方法を示しています。
ITEM_ID,USER_ID,TIMESTAMP,DEVICE_TYPE,EVENT_TYPE shoe12345,12,1428624000,Tablet,CLICK shoe12346,12,1420416000,Tablet,CLICK shoe12347,12,1410652800,Tablet,BUY shoe4444,13,1409961600,Phone,CLICK shoe4445,13,1402876800,Phone,BUY shoe4336,13,1402185600,Phone,CLICK .....
ドメインデータセットグループでは、以下のレコメンダーユースケースでコンテキストメタデータを使用できます。
カスタムリソースについては、コンテキストメタデータを使用するレシピには次のものが含まれます。
レコメンデーションの取得時にコンテキストを含める方法については、「コンテキストメタデータを使用したレコメンデーションの関連性の向上」を参照してください。コンテキストメタデータの使用方法を示すエンドツーエンドの例については、Machine AWS Machine Learning ブログ記事「コンテキスト情報を活用して Amazon Personalize のレコメンデーションの関連性を高める
インプレッションデータ
インプレッションは、ユーザーが特定のアイテムを操作した (例えば、クリックや視聴した) ときに表示されたアイテムのリストです。パーソナライゼーションまたは User-Personalization レシピを提供するドメインユースケースを使用する場合、Amazon Personalize はインプレッションデータを使用して探索をガイドできます。
探索では、新しいアイテムまたはアクション、インタラクションがほとんどないアイテムまたはアクション、以前の行動に基づいてユーザーに関連性が低いアイテムまたはアクションなど、通常はユーザーにレコメンデーションされる可能性が低いアイテムまたはアクションがレコメンデーションに含まれます。インプレッションデータでアイテムが頻繁に発生するほど、Amazon Personalize がそのアイテムを探索に含める可能性は低くなります。
レコメンダーまたはソリューションを作成する場合、Amazon Personalize は常にインプレッションデータをトレーニングから除外します。これは、Amazon Personalize がインプレッションデータを使用してモデルをトレーニングしないためです。代わりに、ユーザーの探索をガイドするレコメンデーションを取得するときに使用します。
インプレッションの値は最大 1,000 文字 (縦棒文字を含む) まで入力できます。ドメインデータセットグループでは、以下のレコメンダーユースケースでインプレッションデータを使用できます。
探索の詳細については、「探査」を参照してください。Amazon Personalize は、暗黙的なインプレッション および 明示的なインプレッション といった 2 種類のインプレッションをモデル化できます。
明示的なインプレッション
明示的なインプレッションとは、手動で記録して Amazon Personalize に送信するインプレッションです。明示的なインプレッションを使用して、Amazon Personalize の結果を操作します。アイテムの順序はいかなる影響も及ぼしません。
例えば、靴に関するレコメンデーションを提供するショッピングアプリケーションがあるとします。現在在庫のある靴のみをお勧めする場合は、明示的なインプレッションを使用してこれらのアイテムを指定できます。明示的なインプレッションを使用するレコメンデーションワークフローは次のようになります。
-
Amazon Personalize の GetRecommendations API を使用して、いずれかのユーザー向けにレコメンデーションをリクエストします。
-
Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、それらを API 応答で返します。
-
推奨される靴のうち、在庫がある靴のみをユーザーに表示します。
-
リアルタイムの増分データインポートについては、ユーザーが 1 組の靴を操作する (例えば、クリックする) ときに、PutEvents API に対するコールで選択を記録し、在庫がある推奨アイテムを
impression
パラメータでリストします。コードサンプルについては、「インプレッションデータを使用したアイテムインタラクションイベントの記録」を参照してください。履歴アイテムインタラクションデータにインプレッションをインポートするために、明示的なインプレッションを csv ファイルにリストし、各アイテムを「|」文字で区切ることができます。縦棒文字は 1,000 文字の制限に含まれます。例については、「明示的なインプレッションのフォーマット」を参照してください。
-
Amazon Personalize は、インプレッションデータを使用して探索をガイドします。将来のレコメンデーションには、インタラクションデータまたは関連性が少ない新しい靴が含まれます。
明示的なインプレッションのフォーマット
CSV ファイルに明示的なインプレッションを含めるには、IMPRESSION 列を追加します。アイテムインタラクションごとに、バーティカルバー「|」文字で区切られた itemId のリストを追加します。バーティカルバーは、インプレッションデータの 1,000 文字の上限に含まれます。PutEvents オペレーションに明示的なインプレッションを含める場合は、文字列の配列にアイテムを指定します。
IMPRESSION
列に明示的なインプレッションを含む CSV ファイルからの短い抜粋を次に示します。
EVENT_TYPE | IMPRESSION | ITEM_ID | TIMESTAMP | USER_ID |
---|---|---|---|---|
クリック |
73|70|17|95|96 |
73 |
1586731606 |
USER_1 |
クリック |
35|82|78|57|20|63|1|90|76|75|49|71|26|24|25|6 |
35 |
1586735164 |
USER_2 |
... | ... | ... | ... | ... |
アプリケーションは、ユーザーに対して、 USER_1
アイテム、73
、70
、17
、95
および 96
を表示し、ユーザーは最終的にアイテム 73
を選択しました。このデータに基づいて新しいソリューションバージョンを作成すると、アイテム 70
、17
、95
、および 96
がユーザー USER_1
に推奨される頻度が低くなります。
暗黙的なインプレッション
暗黙的なインプレッションは、Amazon Personalize から取得した、ユーザーに表示するレコメンデーションです。暗黙的なインプレッションを使用する場合は、CSV ファイルに IMPRESSION または RECOMMENDATION_ID 列を含める必要はありません。代わりに、PutEvents リクエストに RecommendationId
(GetRecommendations および GetPersonalizedRanking オペレーションによって返される) を含めます。Amazon Personalize は、レコメンデーションデータに基づいて暗黙的なインプレッションを派生させます。
例えば、ストリーミング動画に関するレコメンデーションを提供するアプリケーションがあるとします。暗黙的なインプレッションを使用するレコメンデーションワークフローは次のようになります。
-
Amazon Personalize の GetRecommendations API 操作を使用して、いずれかのユーザー向けに動画のレコメンデーションをリクエストします。
-
Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、それらを
recommendationId
とともに API 応答で返します。 -
アプリケーションでユーザーに動画のレコメンデーションを表示します。
-
ユーザーが動画を操作する (例えば、クリックする) 際に、PutEvents API に対するコールで選択内容を記録し、パラメータとして
recommendationId
を含めます。コードサンプルについては、「インプレッションデータを使用したアイテムインタラクションイベントの記録」を参照してください。 -
Amazon Personalize は、
recommendationId
を使用して以前の動画のレコメンデーションからインプレッションデータを導き出し、その後にインプレッションデータを使用して探索をガイドします。将来のレコメンデーションには、インタラクションデータまたは関連性が少ない新しい動画が含まれます。暗黙的なインプレッションデータを使用したイベントの記録の詳細については、「インプレッションデータを使用したアイテムインタラクションイベントの記録」を参照してください。
インタラクションデータの例
次のインタラクションデータは、動画ストリーミングウェブサイトからの過去のユーザーアクティビティを表しています。このデータを使用して、ユーザーのインタラクションデータに基づいておすすめの映画を提供するモデルをトレーニングできます。EVENT_VALUE の一部の値が null であることに注意してください。
USER_ID,ITEM_ID,EVENT_TYPE,EVENT_VALUE,TIMESTAMP 196,242,watch,.50,881250949 186,302,watch,.75,891717742 22,377,click,,878887116 244,51,click,,880606923 166,346,watch,.50,886397596 298,474,watch,.25,884182806 115,265,click,,881171488 253,465,watch,.50,891628467 305,451,watch,.75,886324817
Amazon Personalize には、USER_ID
、ITEM_ID
、および TIMESTAMP
列が必要です。USER_ID
は、アプリケーションのユーザーの識別子です。ITEM_ID
は映画の識別子です。EVENT_TYPE
と EVENT_VALUE
は、ユーザーインタラクションの識別子です。サンプルデータでは、イベントは watch
および click
イベント、値はユーザーが視聴した動画の割合です。TIMESTAMP
は、映画の購入が発生した Unix エポック時間を表します。
データの準備が完了したら、スキーマ JSON ファイルを作成する準備が整います。このファイルは、データの構造を Amazon Personalize に伝えます。詳細については、「Amazon Personalize スキーマのスキーマ JSON ファイルの作成」を参照してください。これは、サンプルデータに対してスキーマ JSON ファイルがどのように表示されるかを示しています。
{
"type": "record",
"name": "Interactions",
"namespace": "com.amazonaws.personalize.schema",
"fields": [
{
"name": "USER_ID",
"type": "string"
},
{
"name": "ITEM_ID",
"type": "string"
},
{ "name": "EVENT_TYPE",
"type": "string"
},
{
"name": "EVENT_VALUE",
"type": "float"
},
{
"name": "TIMESTAMP",
"type": "long"
}
],
"version": "1.0"
}