翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
トレーニング用のアイテムインタラクションデータの準備
アイテムインタラクションは、ユーザーとカタログ内のアイテムの間のポジティブなインタラクションイベントです。例えば、映画を見ているユーザー、出品しているユーザー、靴を購入しているユーザーなどです。ユーザーとアイテムとのインタラクションに関するデータをアイテムインタラクションデータセットにインポートします。クリック、視聴、購入など、複数のイベントタイプを記録できます。
例えば、ユーザーが特定のアイテムをクリックしてからそのアイテムに「いいね!」をした場合、Amazon Personalize にこれらのイベントをトレーニングデータとして使用させることができます。各イベントについて、ユーザーの ID、タイムスタンプ (Unix 時間エポック形式)、ならびにイベントタイプ (クリックおよび「いいね」) を記録します。その後、両方のアイテムインタラクションイベントをアイテムインタラクションデータセットに追加します。
すべてのドメインユースケースとカスタムレシピでは、バルクアイテムインタラクションデータは CSV ファイルにある必要があります。各行は、ユーザーと項目間の単一のインタラクションを表す必要があります。データの準備が完了したら、スキーマJSONファイルを作成する準備が整います。このファイルは、データの構造を Amazon Personalize に伝えます。詳細については、「Amazon Personalize スキーマのスキーマJSONファイルの作成」を参照してください。
以下のセクションでは、Amazon Personalize のアイテムインタラクションデータを準備する方法について詳しく説明します。すべてのタイプのデータに関するバルクデータ形式のガイドラインについては、「バルクデータ形式のガイドライン」を参照してください。
アイテムインタラクションデータの要件
以下のセクションでは、Amazon Personalize のアイテムインタラクションデータ要件を一覧表示します。その他のクォータについては、「」を参照してくださいAmazon Personalize エンドポイントとクォータ。
最小トレーニング要件
すべてのドメインユースケースとカスタムレシピについて、バルクアイテムインタラクションデータには次のものが必要です。
-
カタログ内のアイテムを操作したユーザーからのアイテムインタラクションレコードが少なくとも 1000 件ある。これらのインタラクションは、一括インポート、ストリーミングイベント、あるいはその両方からのものである。
-
それぞれに少なくとも 2 つのアイテムインタラクションIDsを持つ、少なくとも 25 人の一意のユーザー。
質の高いレコメンデーションを行うには、1,000 人以上のユーザーからのアイテムインタラクションが少なくとも 50,000 件あり、それぞれ 2 回以上のアイテムインタラクションがあることが推奨されます。
レコメンダーまたはカスタムソリューションを作成するには、少なくともアイテムインタラクションデータセットを作成する必要があります。
列の要件
アイテムインタラクションデータには、次の列が必要です。
-
USER_ID – 項目を操作したユーザーの一意の識別子。すべてのイベントには USER_ID が必要です。
string
最大長が 256 文字の である必要があります。 -
ITEM_ID – ユーザーが操作した項目の一意の識別子。すべてのイベントには項目 ID が必要です。
string
最大長が 256 文字の である必要があります。 -
TIMESTAMP – イベントが発生した時刻 (Unix エポック時間形式、秒単位)。すべてのインタラクションには が必要ですTIMESTAMP。詳細については、「タイムスタンプのデータ」を参照してください。
-
EVENT_TYPE – クリック、視聴、購入など、アイテムインタラクションイベントの性質。ドメインレコメンダーの場合、イベントタイプ列が必要であり、すべてのインタラクションにイベントタイプが必要です。すべてのカスタムレシピでは、EVENT_TYPE 列が推奨されますが、オプションです。追加する場合、すべてのイベントにイベントタイプが必要です。詳細については、「イベントタイプとイベント値のデータ」を参照してください。
ユースケースとデータに応じて、カスタム列を自由に追加できます。オプションのメタデータ列の最大数は 5 です。これらの列には、空/null 値を含めることができます。これらの列は 70% 以上完了することをお勧めします。
タイムスタンプのデータ
タイムスタンプデータは Unix エポック時間形式を秒単位で指定する必要があります。例えば、2020 年 7 月 31 日の日付のエポックタイムスタンプ (秒) は 1596238243 です。日付を Unix エポックタイムスタンプに変換するには、エポックコンバータ - Unix タイムスタンプコンバータ
Amazon Personalize はタイムスタンプデータを使用して、最新性を計算し、時間ベースのパターンを特定します。これは、Amazon Personalize がユーザーの進化する好み up-to-date に合わせてレコメンデーションを維持するのに役立ちます。
イベントタイプとイベント値のデータ
アイテムインタラクションデータセットは、インタラクションごとにイベントタイプとイベント値データを保存できます。カスタムリソースのみがイベント値データを使用します。
イベントタイプデータ
アイテムインタラクションのイベントタイプは、その性質と重要性に関するコンテキストを提供します。イベントタイプの例には、クリック、視聴、購入などがあります。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 件のうちの評価である場合があります。カスタムソリューションを作成する場合は、_ 列とVALUE EVENT_TYPE EVENT列のデータに基づいて、トレーニングに使用されるレコードを選択できます。ドメインレコメンダーでは、Amazon Personalize はイベント値データを使用しないため、トレーニング前にイベントをフィルタリングすることはできません。
タイプと値に基づいてレコードを選択するには、イベントのイベントタイプとイベント値データを記録します。すべてのイベントにイベント値が必要なわけではありません。各イベントで選択する値は、除外するデータや記録するイベントタイプによって異なります。例えば、視聴イベントタイプでは、ユーザーが視聴した動画の割合などのユーザーアクティビティを一致させることができます。
ソリューションを設定する際には、トレーニングからレコードを除外するためのしきい値として特定の値を設定します。例えば、Watch の EVENT_VALUE を持つイベントの EVENT_TYPE データが、ユーザーが視聴した動画の割合である場合、イベント値のしきい値を 0.5 に設定し、 を視聴するイベントタイプを設定すると、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 .....
ドメインデータセットグループでは、以下のレコメンダーユースケースでコンテキストメタデータを使用できます。
カスタムリソースについては、コンテキストメタデータを使用するレシピには次のものが含まれます。
レコメンデーションを取得するときにコンテキストを含める方法については、「」を参照してくださいコンテキストメタデータを使用したレコメンデーションの関連性の向上。コンテキストメタデータの使用方法を示すエンドツーエンドの例については、以下を参照してください。 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 を使用して、いずれかのユーザーに対してレコメンデーションをリクエストしますGetRecommendationsAPI。
-
Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、APIレスポンスで返します。
-
推奨される靴のうち、在庫がある靴のみをユーザーに表示します。
-
リアルタイムの増分データインポートでは、ユーザーが靴のペアを操作する (クリックするなど) ときに、 への呼び出しで選択を記録PutEventsAPIし、
impression
パラメータに在庫がある推奨アイテムを一覧表示します。コードサンプルについては、「インプレッションデータを使用したアイテムインタラクションイベントの記録」を参照してください。履歴アイテムインタラクションデータにインプレッションをインポートするために、明示的なインプレッションを csv ファイルにリストし、各アイテムを「|」文字で区切ることができます。縦棒文字は 1,000 文字の制限に含まれます。例については、「明示的なインプレッションのフォーマット」を参照してください。
-
Amazon Personalize は、インプレッションデータを使用して探索をガイドします。将来のレコメンデーションには、インタラクションデータまたは関連性が少ない新しい靴が含まれます。
明示的なインプレッションのフォーマット
CSV ファイルに明示的なインプレッションを含めるには、 IMPRESSION列を追加します。アイテムインタラクションごとに、縦棒「|」で itemIds 区切られた のリストを追加します。バーティカルバーは、インプレッションデータの 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 列を含める必要はありません。代わりに、 RecommendationId
( GetRecommendationsおよび GetPersonalizedRankingオペレーションによって返された) をPutEventsリクエストに含めます。Amazon Personalize は、レコメンデーションデータに基づいて暗黙的なインプレッションを派生させます。
例えば、ストリーミング動画に関するレコメンデーションを提供するアプリケーションがあるとします。暗黙的なインプレッションを使用するレコメンデーションワークフローは次のようになります。
-
Amazon Personalize GetRecommendationsAPIオペレーションを使用して、いずれかのユーザーの動画レコメンデーションをリクエストします。
-
Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、APIレスポンス
recommendationId
で とともに返します。 -
アプリケーションでユーザーに動画のレコメンデーションを表示します。
-
ユーザーがビデオを操作する (クリックするなど) ときは、 への呼び出しで選択内容を記録PutEventsAPIし、 をパラメータ
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
イベントで、値はユーザーが視聴した動画の割合です。は、映画の購入が行われた Unix エポック時間TIMESTAMP
を表します。
データの準備が完了したら、スキーマ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" }