

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

# トレーニング用のアイテムインタラクションデータの準備
<a name="interactions-datasets"></a>

 *アイテムインタラクション*は、ユーザーとカタログ内のアイテムとのポジティブなインタラクションイベントです。例えば、ユーザーが映画を見たり、リストを表示したり、靴を購入したりする場合です。ユーザーとアイテムとのインタラクションに関するデータをアイテムインタラクションデータセットにインポートします。***クリック*、*視聴*、または*購入*など、複数のイベントタイプを記録できます。

例えば、ユーザーが特定のアイテムを*クリック*してからそのアイテムに「*いいね！*」をした場合、Amazon Personalize にこれらのイベントをトレーニングデータとして使用させることができます。各イベントについて、ユーザーの ID、タイムスタンプ (Unix 時間エポック形式)、ならびにイベントタイプ (*クリック*および「*いいね*」) を記録します。その後、両方のアイテムインタラクションイベントをアイテムインタラクションデータセットに追加します。**

すべてのドメインユースケースとカスタムレシピでは、バルクアイテムインタラクションデータは CSV ファイルにある必要があります。各行は、ユーザーとアイテム間の単一のインタラクションを表す必要があります。データの準備が完了したら、スキーマ JSON ファイルを作成する準備が整います。このファイルは、データの構造を Amazon Personalize に伝えます。詳細については、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」を参照してください。

以下のセクションでは、Amazon Personalize のアイテムインタラクションデータを準備する方法について詳しく説明します。すべてのタイプのデータの、バルクデータフォーマットのガイドラインについては、「[バルクデータフォーマットのガイドライン](preparing-training-data.md#general-formatting-guidelines)」を参照してください。

**Topics**
+ [アイテムインタラクションデータの要件](#item-interaction-requirements)
+ [タイムスタンプのデータ](#timestamp-data)
+ [イベントタイプとイベント値のデータ](#event-type-and-event-value-data)
+ [コンテキストメタデータ](#interactions-contextual-metadata)
+ [インプレッションデータ](#interactions-impressions-data)
+ [インタラクションデータの例](#interactions-data-schema-example)

## アイテムインタラクションデータの要件
<a name="item-interaction-requirements"></a>

以下のセクションでは、Amazon Personalize のアイテムインタラクションデータの要件を一覧表示します。追加のクォータについては、「[Amazon Personalize エンドポイントとクォータ](limits.md)」を参照してください。



### 最小トレーニング要件
<a name="item-interaction-min"></a>

すべてのドメインユースケースとカスタムレシピにおいて、バルクアイテムインタラクションデータには以下が必要です。
+ カタログ内のアイテムを操作したユーザーからのアイテムインタラクションレコードが少なくとも 1000 件ある。これらのインタラクションは、一括インポート、ストリーミングイベント、あるいはその両方からのものである。
+ それぞれに 2 回以上のアイテムインタラクションを伴う 25 個以上のユニークユーザー ID。

 質の高いレコメンデーションを行うには、1,000 人以上のユーザーからのアイテムインタラクションが少なくとも 50,000 件あり、それぞれ 2 回以上のアイテムインタラクションがあることが推奨されます。

 レコメンダーまたはカスタムソリューションを作成するには、少なくともアイテムインタラクションデータセットを作成する必要があります。**

### 列の要件
<a name="item-interaction-columns"></a>

アイテムインタラクションデータには、次の列が必要です。
+ USER\_ID — アイテムを操作したユーザーの一意の識別子。すべてのイベントには USER\_ID が必要です。最大長が 256 文字の `string` である必要があります。
+ ITEM\_ID — ユーザーが操作したアイテムの一意の識別子。すべてのイベントにはアイテム ID が必要です。最大長が 256 文字の `string` である必要があります。
+ TIMESTAMP — イベントが発生した時刻 (Unix エポック時間形式、秒単位)。すべてのインタラクションには TIMESTAMP が必要です。詳細については、「[タイムスタンプのデータ](#timestamp-data)」を参照してください。
+ EVENT\_TYPE — *クリック*、*視聴*、*購入*など、アイテムインタラクションイベントの性質。ドメインレコメンダーの場合、イベントタイプの列と、すべてのインタラクションにイベントタイプが必要です。すべてのカスタムレシピでは、EVENT\_TYPE 列が推奨されますが、オプションです。追加する場合、すべてのイベントにイベントタイプが必要です。詳細については、「[イベントタイプとイベント値のデータ](#event-type-and-event-value-data)」を参照してください。

ユースケースとデータに応じて、さらにカスタム列を追加することができます。オプションのメタデータ列の最大数は 5 です。これらの列には、空/null 値を含めることができます。これらの列は、少なくとも 70% 完成していることをお勧めします。

## タイムスタンプのデータ
<a name="timestamp-data"></a>

 タイムスタンプデータは Unix エポック時刻形式 (秒単位) である必要があります。例えば、2020 年 7 月 31 日の日付のエポックタイムスタンプ (秒) は 1596238243 です。日付を Unix エポックタイムスタンプに変換するには、[[エポックコンバーター — Unix タイムスタンプコンバーター]](https://www.epochconverter.com) を使用します。

Amazon Personalize はタイムスタンプデータを使用して、レイテンシーを計算し、時間ベースのパターンを特定します。これは、Amazon Personalize がユーザーの変化する好みによりレコメンデーションを最新の状態に保つのに役立ちます。

## イベントタイプとイベント値のデータ
<a name="event-type-and-event-value-data"></a>

アイテムインタラクションデータセットは、各インタラクションのイベントタイプとイベント値データを保存できます。カスタムリソースのみがイベント値データを使用します。

### イベントタイプデータ
<a name="item-interact-event-type"></a>

アイテムインタラクションのイベントタイプは、その性質と重要性に関するコンテキストを提供します。イベントタイプの例には、*クリック*、*視聴*、*購入*などがあります。Amazon Personalize は、*クリック*や*購入*データなどのイベントタイプデータを使用して、ユーザーの意図と関心を特定します。アイテムインタラクションデータセット内のオプションのメタデータ列の合計数と組み合わされた、個別のイベントタイプの最大数は 10 です。

ドメインレコメンダーの場合、イベントタイプの列と、すべてのインタラクションにイベントタイプが必要です。すべてのカスタムレシピでは、EVENT\_TYPE 列が推奨されますが、オプションです。追加する場合、すべてのイベントにイベントタイプが必要です。

カスタムリソースを作成する場合は、イベントタイプ別にトレーニングに使用するイベントを選択できます。データセットの EVENT\_TYPE 列に複数のイベントタイプがあり、カスタムソリューションを設定するときにイベントタイプを指定しない場合、Amazon Personalize は、タイプにかかわらず、すべてのアイテムインタラクションデータを同じ重みでトレーニングに使用します。詳細については、「[トレーニングに使用するアイテムインタラクションデータの選択](event-values-types.md)」を参照してください。

複数のイベントタイプがあり、User-Personalization-v2 レシピまたは Personalized-Ranking-v2 レシピを使用する場合、カスタムソリューションを設定するときに、タイプごとに異なる重みを指定できます。例えば、click イベントよりも purchase イベントに重みを付けるようにソリューションを設定できます。詳細については、「[イベント設定によるソリューションの最適化](optimizing-solution-events-config.md)」を参照してください。

次のユースケースには、特定のイベントタイプ要件があります。

VIDEO\_ON\_DEMAND ドメインユースケース
+ X を視聴するには、少なくとも 1000 個の `Watch` イベントが必要です。
+ 最も人気のある場合には、少なくとも 1000 個の `Watch` イベントが必要です。

ECOMMERCE ドメインユースケース
+ ほとんどの表示では、少なくとも 1000 個の `View` イベントが必要です。
+ ベストセラーには、少なくとも 1000 個の `Purchase` イベントが必要です。

#### ポジティブおよびネガティブのイベントタイプ
<a name="negative-event-types"></a>

 Amazon Personalize は、すべてのインタラクションがポジティブなインタラクションであることを前提としています。*嫌い*などのネガティブなイベントタイプとのインタラクションは、必ずしもユーザーの将来のレコメンデーションにアイテムが表示されないようにするわけではありません。

以下は、ネガティブなイベントやユーザーの無関心な影響に関するレコメンデーションを作成する方法です。
+  すべてのドメインユースケースと [User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) レシピで、Amazon Personalize はインプレッションデータを使用できます。アイテムがインプレッションデータに表示され、ユーザーが選択しない場合、そのアイテムがレコメンデーションに表示される可能性は低くなります。詳細については、「[インプレッションデータ](#interactions-impressions-data)」を参照してください。
+ カスタムリソースを使用してポジティブなイベントタイプとネガティブなイベントタイプをインポートする場合、ポジティブなイベントタイプのみをトレーニングし、ユーザーがネガティブに操作したアイテムを除外できます。詳細については、「[トレーニングに使用するアイテムインタラクションデータの選択](event-values-types.md)」および「[レコメンデーションとユーザーセグメントのフィルタリング](filter.md)」を参照してください。

### イベント値データ (カスタムリソース)
<a name="event-value-data"></a>

 イベント値データは、ユーザーが視聴した映画の割合 (%)、または 10 点満点での評価である場合があります。カスタムソリューションを作成する場合は、EVENT\_TYPE 列と EVENT\_VALUE 列のデータに基づいて、トレーニングに使用されるレコードを選択できます。ドメインレコメンダーの場合、Amazon Personalize はイベント値データを使用しません。また、トレーニング前にイベントをフィルタリングすることはできません。

タイプと値に基づいてレコードを選択するには、イベントのイベントタイプとイベント値データを記録します。すべてのイベントにイベント値を指定する必要はありません。各イベントで選択する値は、除外するデータや記録するイベントタイプによって異なります。例えば、*視聴*イベントタイプでは、ユーザーが視聴した動画の割合などのユーザーアクティビティを一致させることができます。

 ソリューションを設定する際には、トレーニングからレコードを除外するためのしきい値として特定の値を設定します。例えば、EVENT\_TYPE が *[watch]* (視聴) のイベントの EVENT\_VALUE データが、ユーザーが視聴した動画のパーセンテージ (%) である場合であって、イベント値のしきい値を 0.5 に、イベントタイプを *[watch]* (視聴) に設定する場合、Amazon Personalize は、EVENT\_VALUE が 0.5 以上の *[watch]* (視聴) インタラクションイベントのみを使用してモデルをトレーニングします。

 詳細については、[トレーニングに使用するアイテムインタラクションデータの選択](event-values-types.md)を参照してください。

## コンテキストメタデータ
<a name="interactions-contextual-metadata"></a>

 特定のレシピやレコメンデーションユースケースでは、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
.....
```

ドメインデータセットグループでは、以下のレコメンダーユースケースでコンテキストメタデータを使用できます。
+ [おすすめ](ECOMMERCE-use-cases.md#recommended-for-you-use-case) (eコマースドメイン)
+ [上位のおすすめ](VIDEO_ON_DEMAND-use-cases.md#top-picks-use-case) (VIDEO\_ON\_DEMAND ドメイン)

 カスタムリソースについては、コンテキストメタデータを使用するレシピには次のものが含まれます。
+  [User-Personalization-v2](native-recipe-user-personalization-v2.md) および [User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) 
+  [Personalized-Ranking-v2](native-recipe-personalized-ranking-v2.md) および [Personalized-Ranking](native-recipe-search.md)

レコメンデーションの取得時にコンテキストを含める方法については、「[コンテキストメタデータを使用したレコメンデーションの関連性の向上](contextual-metadata.md)」を参照してください。コンテキストメタデータの使用方法を示すエンドツーエンドの例については、次の「AWS 機械学習ブログ記事」の「[Increasing the relevance of your Amazon Personalize recommendations by leveraging contextual information](https://aws.amazon.com/blogs/machine-learning/increasing-the-relevance-of-your-amazon-personalize-recommendations-by-leveraging-contextual-information/)」を参照してください。

## インプレッションデータ
<a name="interactions-impressions-data"></a>

インプレッションは、ユーザーが特定のアイテムを操作した (例えば、クリックや視聴した) ときに表示されたアイテムのリストです。パーソナライゼーションまたは [User-Personalization](native-recipe-new-item-USER_PERSONALIZATION.md) レシピを提供するドメインユースケースを使用する場合、Amazon Personalize はインプレッションデータを使用して探索をガイドできます。

 探索では、新しいアイテムまたはアクション、インタラクションがほとんどないアイテムまたはアクション、以前の行動に基づいてユーザーに関連性が低いアイテムまたはアクションなど、通常はユーザーにレコメンデーションされる可能性が低いアイテムまたはアクションがレコメンデーションに含まれます。インプレッションデータでアイテムが頻繁に発生するほど、Amazon Personalize がそのアイテムを探索に含める可能性は低くなります。

 レコメンダーまたはソリューションを作成する場合、Amazon Personalize は常にインプレッションデータをトレーニングから除外します。これは、Amazon Personalize がインプレッションデータを使用してモデルをトレーニングしないためです。代わりに、ユーザーの探索をガイドするレコメンデーションを取得するときに使用します。

 インプレッションの値は最大 1,000 文字 (縦棒文字を含む) まで入力できます。ドメインデータセットグループでは、以下のレコメンダーユースケースでインプレッションデータを使用できます。
+ [おすすめ](ECOMMERCE-use-cases.md#recommended-for-you-use-case) (eコマースドメイン)
+ [上位のおすすめ](VIDEO_ON_DEMAND-use-cases.md#top-picks-use-case) (VIDEO\_ON\_DEMAND ドメイン)

探索の詳細については、「[探査](use-case-recipe-features.md#about-exploration)」を参照してください。Amazon Personalize は、[暗黙的なインプレッション](#implicit-impressions-info) および [明示的なインプレッション](#explicit-impressions-info) といった 2 種類のインプレッションをモデル化できます。

### 明示的なインプレッション
<a name="explicit-impressions-info"></a>

*明示的なインプレッション*とは、手動で記録して Amazon Personalize に送信するインプレッションです。明示的なインプレッションを使用して、Amazon Personalize の結果を操作します。アイテムの順序はいかなる影響も及ぼしません。

 例えば、靴に関するレコメンデーションを提供するショッピングアプリケーションがあるとします。現在在庫のある靴のみをお勧めする場合は、明示的なインプレッションを使用してこれらのアイテムを指定できます。明示的なインプレッションを使用するレコメンデーションワークフローは次のようになります。

1. Amazon Personalize の [GetRecommendations](API_RS_GetRecommendations.md) API を使用して、いずれかのユーザー向けにレコメンデーションをリクエストします。

1. Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、それらを API 応答で返します。

1. 推奨される靴のうち、在庫がある靴のみをユーザーに表示します。

1. リアルタイムの増分データインポートについては、ユーザーが 1 組の靴を操作する (例えば、クリックする) ときに、[PutEvents](API_UBS_PutEvents.md) API に対するコールで選択を記録し、在庫がある推奨アイテムを `impression` パラメータでリストします。コードサンプルについては、「[インプレッションデータを使用したアイテムインタラクションイベントの記録](putevents-including-impressions-data.md)」を参照してください。

   履歴アイテムインタラクションデータにインプレッションをインポートするために、明示的なインプレッションを csv ファイルにリストし、各アイテムを「\|」文字で区切ることができます。縦棒文字は 1,000 文字の制限に含まれます。例については、「[明示的なインプレッションのフォーマット](#data-prep-including-explicit-impressions)」を参照してください。

1. Amazon Personalize は、インプレッションデータを使用して探索をガイドします。将来のレコメンデーションには、インタラクションデータまたは関連性が少ない新しい靴が含まれます。

#### 明示的なインプレッションのフォーマット
<a name="data-prep-including-explicit-impressions"></a>

CSV ファイルに明示的なインプレッションを含めるには、IMPRESSION 列を追加します。アイテムインタラクションごとに、バーティカルバー「\|」文字で区切られた itemId のリストを追加します。バーティカルバーは、インプレッションデータの 1,000 文字の上限に含まれます。[PutEvents](API_UBS_PutEvents.md) オペレーションに明示的なインプレッションを含める場合は、文字列の配列にアイテムを指定します。

`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` に推奨される頻度が低くなります。

### 暗黙的なインプレッション
<a name="implicit-impressions-info"></a>

*暗黙的なインプレッション*は、Amazon Personalize から取得した、ユーザーに表示するレコメンデーションです。暗黙的なインプレッションを使用する場合は、CSV ファイルに IMPRESSION または RECOMMENDATION\_ID 列を含める必要はありません。代わりに、[PutEvents](API_UBS_PutEvents.md) リクエストに `RecommendationId` ([GetRecommendations](API_RS_GetRecommendations.md) および [GetPersonalizedRanking](API_RS_GetPersonalizedRanking.md) オペレーションによって返される) を含めます。Amazon Personalize は、レコメンデーションデータに基づいて暗黙的なインプレッションを派生させます。

 例えば、ストリーミング動画に関するレコメンデーションを提供するアプリケーションがあるとします。暗黙的なインプレッションを使用するレコメンデーションワークフローは次のようになります。

1. Amazon Personalize の [GetRecommendations](API_RS_GetRecommendations.md) API 操作を使用して、いずれかのユーザー向けに動画のレコメンデーションをリクエストします。

1. Amazon Personalize は、モデル (ソリューションバージョン) を使用してユーザー向けのレコメンデーションを生成し、それらを `recommendationId` とともに API 応答で返します。

1. アプリケーションでユーザーに動画のレコメンデーションを表示します。

1. ユーザーが動画を操作する (例えば、クリックする) 際に、[PutEvents](API_UBS_PutEvents.md) API に対するコールで選択内容を記録し、パラメータとして `recommendationId` を含めます。コードサンプルについては、「[インプレッションデータを使用したアイテムインタラクションイベントの記録](putevents-including-impressions-data.md)」を参照してください。

1. Amazon Personalize は、`recommendationId` を使用して以前の動画のレコメンデーションからインプレッションデータを導き出し、その後にインプレッションデータを使用して探索をガイドします。将来のレコメンデーションには、インタラクションデータまたは関連性が少ない新しい動画が含まれます。

   暗黙的なインプレッションデータを使用したイベントの記録の詳細については、「[インプレッションデータを使用したアイテムインタラクションイベントの記録](putevents-including-impressions-data.md)」を参照してください。

## インタラクションデータの例
<a name="interactions-data-schema-example"></a>

次のインタラクションデータは、動画ストリーミングウェブサイトからの過去のユーザーアクティビティを表しています。このデータを使用して、ユーザーのインタラクションデータに基づいておすすめの映画を提供するモデルをトレーニングできます。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 ファイルの作成](how-it-works-dataset-schema.md)」を参照してください。これは、サンプルデータに対してスキーマ 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"
}
```