

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

# User-Personalization レシピ
<a name="native-recipe-new-item-USER_PERSONALIZATION"></a>

**重要**  
[User-Personalization-v2](native-recipe-user-personalization-v2.md) レシピを使用することをお勧めします。トレーニングを高速化して最大 500 万アイテムを検討し、レイテンシーを低くしてより関連性の高いレコメンデーションを生成できます。

User-Personalization (aws-user-personalization) レシピは、すべてのパーソナライズされたレコメンデーションシナリオ向けに最適化されています。ユーザーが操作する可能性が最も高いアイテムを予測します。User-Personalization を使用して、ストリーミングアプリケーションのパーソナライズされた映画レコメンデーションを生成したり、小売アプリケーションのパーソナライズされた製品レコメンデーションを生成したりできます。

User-Personalization を使用すると、Amazon Personalize は主にアイテムインタラクションデータセット内のユーザーアイテムインタラクションデータに基づいてレコメンデーションを生成します。また、Items データセットおよび Users データセット内の任意のアイテムとユーザーメタデータを使用することもできます。使用するデータの詳細については、「[必須およびオプションのデータセット](#user-personalization-datasets)」を参照してください。

**Topics**
+ [レシピ機能](#user-personalization-features)
+ [必須およびオプションのデータセット](#user-personalization-datasets)
+ [プロパティおよびハイパーパラメータ](#bandit-hyperparameters)
+ [User-Personalization レシピを使用したトレーニング (コンソール)](#training-user-personalization-recipe-console)
+ [User-Personalization レシピを使用したトレーニング (Python SDK)](#training-user-personalization-recipe)
+ [レコメンデーションの取得とインプレッションの記録 (SDK for Python (Boto3))](#user-personalization-get-recommendations-recording-impressions)
+ [サンプル Jupyter ノートブック](#bandits-sample-notebooks)

## レシピ機能
<a name="user-personalization-features"></a>

User-Personalization は、アイテムのレコメンデーションを生成するときに次の Amazon Personalize レシピ機能を使用します。
+ リアルタイムのパーソナライゼーション — Amazon Personalize はリアルタイムのパーソナライゼーションを使用して、ユーザーの関心の高まりに応じてアイテムのレコメンデーションを更新および調整します。詳細については、「[リアルタイムパーソナライゼーション](use-case-recipe-features.md#about-real-time-personalization)」を参照してください。
+ 探索 — 探索では、レコメンデーションには新しいアイテムやインタラクションデータの少ないアイテムが含まれます。これにより、カタログの内容の変更が早い場合、またはニュース記事やプロモーションなどの新しいアイテムとユーザーとの関連性が高い場合、それらのアイテムの鮮度が高い状態であるときに、アイテムの検出とエンゲージメントが向上します。探索の詳細については、「[探査](use-case-recipe-features.md#about-exploration)」を参照してください。
+ 自動更新 — Amazon Personalize は自動更新を使用して、2 時間ごとに最新モデル (ソリューションバージョン) を自動的に更新し、探索を介し新しいアイテムをレコメンデーションの対象として考慮します。詳細については、「[自動更新](use-case-recipe-features.md#automatic-updates)」を参照してください。

## 必須およびオプションのデータセット
<a name="user-personalization-datasets"></a>

User-Personalization を使用するには、[アイテムインタラクションデータセット](interactions-datasets.md)を作成し、少なくとも 1,000 個のアイテムインタラクションをインポートする必要があります。Amazon Personalize は、主にアイテムインタラクションデータに基づいてレコメンデーションを生成します。

User-Personalization を使用する場合、Amazon Personalize は以下を含むアイテムインタラクションデータを使用できます。
+ イベントタイプとイベント値データ — Amazon Personalize は、クリックや視聴イベントタイプなどのイベントタイプデータを使用して、ユーザーの行動のあらゆるパターンを通じてユーザーの意図と関心を識別します。また、イベントタイプとイベント値データを使用して、トレーニング前にレコードをフィルタリングすることもできます。詳細については、「[イベントタイプとイベント値のデータ](interactions-datasets.md#event-type-and-event-value-data)」を参照してください。
+ コンテキストメタデータ — コンテキストメタデータは、場所やデバイスのタイプなど、イベント時にユーザーの環境で収集するインタラクションデータです。詳細については、「[コンテキストメタデータ](interactions-datasets.md#interactions-contextual-metadata)」を参照してください。
+ インプレッションデータ — インプレッションは、ユーザーが特定のアイテムを操作 (クリック、視聴、購入など) したときに表示されたアイテムのリストです。詳細については、「[インプレッションデータ](interactions-datasets.md#interactions-impressions-data)」を参照してください。

 次のデータセットはオプションであり、レコメンデーションを改善できます。
+ Users データセット — Amazon Personalize は、ユーザーとその関心についてよりよく理解するために、Users データセット内のデータを使用できます。Users データセットのデータを使用して、レコメンデーションをフィルタリングすることもできます。インポートできるユーザーデータについては、「[ユーザーメタデータ](users-datasets.md)」を参照してください。
+ Items データセット — Amazon Personalize は、Items データセット内のデータを使用して、アイテムの動作の関連性とパターンを識別します。これにより、Amazon Personalize はユーザーとその関心について理解しやすくなります。Items データセットのデータを使用して、アクションのレコメンデーションをフィルタリングすることもできます。インポートできるアイテムデータについては、「[アイテムメタデータ](items-datasets.md)」を参照してください。

## プロパティおよびハイパーパラメータ
<a name="bandit-hyperparameters"></a>

User-Personalization レシピには、次のプロパティがあります。
+  **名前** – `aws-user-personalization`
+  **レシピ Amazon リソースネーム (ARN)** – `arn:aws:personalize:::recipe/aws-user-personalization`
+  **アルゴリズム ARN** – `arn:aws:personalize:::algorithm/aws-user-personalization`

詳細については、「[レシピの選択](working-with-predefined-recipes.md)」を参照してください。

以下の表では、User-Personalization レシピのハイパーパラメータを示しています。*ハイパーパラメータは*、モデルパフォーマンスを向上させるために調整できるアルゴリズムパラメータです。アルゴリズムのハイパーパラメータは、モデルの実行方法を制御します。特徴化のハイパーパラメータは、トレーニングで使用するデータのフィルタリング方法を制御します。ハイパーパラメータに最適な値を選択するプロセスは、ハイパーパラメータの最適化 (HPO) と呼ばれます。詳細については、「[ハイパーパラメータおよび HPO](customizing-solution-config-hpo.md)」を参照してください。

このテーブルには、各ハイパーパラメータに関する以下の情報が含まれています。
+ **範囲**: [下限、上限]
+ **値のタイプ**: 整数、連続 (浮動小数点)、カテゴリ別 (ブール値、リスト、文字列)
+ **HPO 調整可能**: パラメータが HPO に参加できますか?


<table>
<thead>
  <tr><th>名前</th><th>説明</th></tr>
</thead>
<tbody>
  <tr><td colspan="2">アルゴリズムのハイパーパラメータ</td></tr>
  <tr><td>hidden\_dimension</td><td>モデルで使用される非表示変数の数。*非表示の変数*は、ユーザーの購入履歴と商品統計を再作成して、ランキングスコアを生成します。アイテムインタラクションデータセットにより複雑なパターンが含まれている場合は、より多くの非表示ディメンションを指定します。使用する非表示のディメンションが多くなると、データセットが大きくなり、処理時間が長くなります。最適な値を決定するには、HPO を使用します。HPO を使用するには、[CreateSolution](API_CreateSolution.md) オペレーション [CreateSolutionVersion](API_CreateSolutionVersion.md) とオペレーションを呼び出すときに `performHPO` を `true` に設定します。<br />デフォルト値: 149<br />範囲: [32, 256]<br />値の型: 整数<br />HPO 調整可能: はい</td></tr>
  <tr><td>bptt</td><td>通し時間のバックプロパゲーションの手法を使用するかどうかを決定します。*通し時間のバックプロパゲーション*は、再帰的なニューラルネットワークベースのアルゴリズムの重みを更新する手法です。遅延報酬を早期イベントに接続するには、長期クレジットに `bptt` を使用します。例えば、遅延報酬には、数回のクリック後に行われる購入を指定できます。早期イベントは、最初のクリックにすることができます。クリックなどの同じイベントタイプ内であっても、長期的な効果を考慮し、合計報酬を最大化することをお勧めします。長期的な効果を考慮するには、より大きい `bptt` 値を使用します。大きな `bptt` 値を使用するには、より大きいデータセットと長い処理時間が必要です。<br />デフォルト値: 32<br />範囲: [2, 32]<br />値の型: 整数<br />HPO 調整可能: はい</td></tr>
  <tr><td>recency\_mask</td><td>モデルがアイテムインタラクションデータセットの最新の人気傾向を考慮する必要があるかどうかを決定します。最新の人気トレンドには、インタラクションイベントの基盤となるパターンの突然の変化が含まれる可能性があります。最近のイベントにより多くの重みを置くモデルをトレーニングするには、`recency_mask` を `true` に設定します。過去のすべてのインタラクションを均等に重み付けするモデルをトレーニングするには、`recency_mask` を `false` に設定します。同じ重みを使用して適切なレコメンデーションを取得するには、より大きなトレーニングデータセットが必要になる場合があります。<br />デフォルト値: `True`<br />範囲: `True` または `False`<br />値の型: ブール値<br />HPO 調整可能: はい</td></tr>
  <tr><td colspan="2">特徴化のハイパーパラメータ</td></tr>
  <tr><td>min\_user\_history\_length\_percentile</td><td>モデルのトレーニングに含めるユーザー履歴の長さの最小パーセンタイル。*履歴の長さ* は、ユーザーに関するデータの合計量です。履歴の長さが短いある割合のユーザーを除外するには、`min_user_history_length_percentile` を使用します。履歴が短いユーザーは、多くの場合、ユーザーの個人的なニーズや希望ではなく、アイテムの人気に基づくパターンを表示します。それらを削除すると、データの基盤となるパターンに重点を置いてモデルをトレーニングできます。ヒストグラムまたは同様のツールを使用して、ユーザー履歴の長さを確認した後で適切な値を選択します。大部分のユーザーを保持し、エッジケースを削除する値を設定することをお勧めします。<br /> 例えば、`min_user_history_length_percentile to 0.05` と `max_user_history_length_percentile to 0.95` を設定すると、履歴の長さが下位または上位 5% であるユーザーを除くすべてのユーザーが含まれます。<br />デフォルト値: 0.0<br />範囲: [0.0, 1.0]<br />値の型: 浮動小数点<br />HPO 調整可能: いいえ</td></tr>
  <tr><td>max\_user\_history\_length\_percentile</td><td>モデルのトレーニングに含めるユーザー履歴の長さの最大パーセンタイル。*履歴の長さ* は、ユーザーに関するデータの合計量です。`max_user_history_length_percentile` を使用して、ある割合の履歴の長さが長いユーザーを除外します。これらのユーザーのデータにはノイズが含まれる傾向があるためです。例えば、ロボットに自動化されたインタラクションの長いリストがあるとします。これらのユーザーを削除することで、トレーニングのノイズが制限されます。ヒストグラムまたは同様のツールを使用して、ユーザー履歴の長さを確認した後で適切な値を選択します。大部分のユーザーを保持し、エッジケースを削除する値を設定することをお勧めします。<br />例えば、`min_user_history_length_percentile to 0.05` と `max_user_history_length_percentile to 0.95` を設定すると、履歴の長さが下位または上位 5% であるユーザーを除くすべてのユーザーが含まれます。<br />デフォルト値: 0.99<br />範囲: [0.0, 1.0]<br />値の型: 浮動小数点<br />HPO 調整可能: いいえ</td></tr>
  <tr><td colspan="2">アイテム探索キャンペーン設定ハイパーパラメータ</td></tr>
  <tr><td>exploration\_weight</td><td>アイテムインタラクションデータまたは関連性が少ないアイテムをレコメンデーションに含める頻度を決定します。値が 1.0 に近くなるほど、探索が多くなります。ゼロでは、探索は行われず、レコメンデーションは現在のデータに基づきます (関連性)。詳細については、「[CampaignConfig](API_CampaignConfig.md)」を参照してください。<br />デフォルト値: 0.3<br />範囲: [0.0, 1.0]<br />値の型: 浮動小数点<br />HPO 調整可能: いいえ</td></tr>
  <tr><td>exploration\_item\_age\_cut\_off</td><td>アイテムインタラクションデータセット内のすべてのアイテムについて、最新のインタラクションからの日数で、アイテムが存在するようになってからの最長期間を指定します。これにより、アイテムの経過時間に基づいてアイテム探索の範囲が定義されます。Amazon Personalize は、作成タイムスタンプ、または作成タイムスタンプデータがない場合はアイテムインタラクションデータに基づいてアイテムの年齢を決定します。Amazon Personalize が商品の年齢を決定する方法の詳細については、「[作成のタイムスタンプデータ](items-datasets.md#creation-timestamp-data)」を参照してください。<br />Amazon Personalize が探索中に考慮するアイテムの数を増やすには、より大きな値を入力します。デフォルトは 30 日 で、最短は 1 日 です。レコメンデーションには、指定したアイテムの期間制限より古いアイテムが含まれる場合があります。これは、これらのアイテムがユーザーに関連しており、それらを特定するために探索が必要ではなかったことによります。<br />デフォルト値: 30.0<br />範囲: 正の浮動小数点<br />値の型: 浮動小数点<br />HPO 調整可能: いいえ</td></tr>
</tbody>
</table>


## User-Personalization レシピを使用したトレーニング (コンソール)
<a name="training-user-personalization-recipe-console"></a>

User-Personalization レシピを使用してコンソールでレコメンデーションを生成するには、最初にレシピを使用して新しいソリューションバージョンをトレーニングします。その後、ソリューションバージョンを使用してキャンペーンをデプロイし、キャンペーンを使用してレコメンデーションを取得します。

**User-Personalization レシピを使用した新しいソリューションバージョンのトレーニング (コンソール)**

1. [https://console.aws.amazon.com/personalize/home](https://console.aws.amazon.com/personalize/home) で Amazon Personalize コンソールを開き、アカウントにサインインします。

1. 新しいスキーマを使用してカスタムデータセットグループを作成し、インプレッションデータを含むデータセットをアップロードします。オプションで、[CREATION\_TIMESTAMP]() と [非構造化テキストメタデータ](items-datasets.md#text-data) データを Items データセットに含めて、Amazon Personalize がアイテムが存在するようになってからの期間をより正確に計算し、コールドアイテムを識別できるようにします。

   データのインポートの詳細については、「[Amazon Personalize データセットへのトレーニングデータのインポート](import-data.md)」を参照してください。

1. **[Dataset groups]** (データセット) グループページで、インプレッションデータを含む 1 つまたは複数のデータセットを含む新しいデータセットグループを選択します。

1. ナビゲーションペインで、**[Solutions and recipes]** (ソリューションとレシピ)、**[Create solution]** (ソリューションを作成) の順に選択します。

1. **[Create solution]** (ソリューションを作成) のページの **[Solution name]** (ソリューション名) で、新しいソリューションの名前を入力します。

1. **[Solution type]** (ソリューションタイプ) で、**[Item recommendation]** (アイテムのレコメンデーション) を選択して、ユーザーのアイテムのレコメンデーションを取得します。

1. **[Recipe]** (レシピ) で、**aws-user-personalization** を選択します。**[Solution configuration]** (ソリューション設定) のセクションが表示され、いくつかの設定オプションが提供されます。

1. **[イベント設定]** で、アイテムインタラクションデータセットに EVENT\_TYPE 列または EVENT\_TYPE 列と EVENT\_VALUE 列の両方がある場合は、オプションで **[イベントタイプ]** と **[イベント値のしきい値]** のフィールドを使用して、モデルのトレーニング時に Amazon Personalize が使用するアイテムインタラクションデータを選択します。詳細については、「[トレーニングに使用するアイテムインタラクションデータの選択](event-values-types.md)」を参照してください。

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

1. オプションで、ソリューションのハイパーパラメータを設定します。User-Personalization レシピのプロパティとハイパーパラメータのリストについては、「[プロパティおよびハイパーパラメータ](#bandit-hyperparameters)」を参照してください。

1. **[Create and train solution]** (ソリューションを作成およびトレーニング) を選択して、トレーニングを開始します。**[Dashboard]** (ダッシュボード) のページが表示されます。

   ソリューションの詳細のページに移動して、**[Solution versions]** (ソリューションバージョン) のセクションでトレーニングの進捗状況を追跡できます。トレーニングが完了すると、ステータスは **[Active]** (アクティブ) となります。

**キャンペーンの作成とレコメンデーションの取得 (コンソール)**

 ソリューションバージョンのステータスが **[Active]** (アクティブ) になると、次のように、キャンペーンを作成してレコメンデーションを取得する準備が完了します。

1. ソリューションの詳細のページまたは **[Campaigns]** (キャンペーン) のページで、**[Create new campaign]** (新しいキャンペーンを作成) を選択します。

1.  **[Create new campaign]** (新しいキャンペーンを作成) ページの **[Campaign details]** (キャンペーンの詳細) で、次の情報を入力します。
   + **Campaign name** (キャンペーン名): キャンペーンの名前を入力します。ここで入力したテキストは、[Campaign] (キャンペーン) ダッシュボードと詳細のページに表示されます。
   + **Solution** (ソリューション): 先ほど作成したソリューションを選択します。
   + **Solution version ID** (ソリューションバージョン ID): 作成したソリューションバージョンの ID を選択します。
   + **Minimum provisioned transactions per second** (1 秒あたりの最小プロビジョンドトランザクション): Amazon Personalize がサポートしている 1 秒あたりの最小プロビジョンドトランザクションを設定します。詳細については、[CreateCampaign](API_CreateCampaign.md) オペレーションを参照してください。

1. **[Campaign configuration]** (キャンペーン設定) で、次の情報を入力してください。
   + **Exploration weight:** (探索の重み): 探索する量を設定します。指定する探索が多いほど、レコメンデーションには、アイテムインタラクションデータや関連性が少ないアイテムがより頻繁に含まれます。値が 1 に近くなるほど、探索が多くなります。ゼロでは、探索は行われず、レコメンデーションは現在のデータに基づきます (関連性)。
   + **Exploration item age cut off** (探索アイテムが存在するようになってからの期間のカットオフ): アイテム探索の範囲を定義するために、最新のインタラクションからの日数で、アイテムが存在するようになってからの最長期間を入力します。Amazon Personalize が探索中に考慮するアイテムの数を増やすには、より大きな値を入力します。

      例えば、10 と入力すると、データセット内の最新のインタラクションから 10 日間のアイテムインタラクションデータを含むアイテムのみが探索時に考慮されます。
**注記**  
レコメンデーションには、この時間枠外のアイテムインタラクションデータのないアイテムが含まれる場合があります。これは、これらのアイテムがユーザーの興味に関連しており、それらを特定するために探索が必要ではなかったことによります。

1. **[キャンペーンの作成]** を選択します。

1. キャンペーンの詳細のページで、キャンペーンのステータスが **[Active]** (アクティブ) の場合、キャンペーンを使用してレコメンデーションを取得し、インプレッションを記録できます。詳細については、「開始方法」の「[ステップ 5: レコメンデーションを取得する](getting-started-console.md#getting-started-console-get-recommendations)」を参照してください。

    Amazon Personalize は、2 時間ごとに最新のソリューションバージョンを自動的に更新して、新しいデータを含めます。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。詳細については、「[自動更新](use-case-recipe-features.md#automatic-updates)」を参照してください。

   キャンペーンを手動で更新するには、最初に、`trainingMode` を `update` に設定した状態で、コンソールまたは [CreateSolutionVersion](API_CreateSolutionVersion.md) 操作を使用して、新しいソリューションバージョンを作成およびトレーニングします。その後、コンソールの **[Campaign]** (キャンペーン) ページで、または [UpdateCampaign](API_UpdateCampaign.md) 操作を使用して、キャンペーンを手動で更新します。
**注記**  
 Amazon Personalize は、2020 年 11 月 17 日より前に作成したソリューションバージョンを自動的に更新しません。

## User-Personalization レシピを使用したトレーニング (Python SDK)
<a name="training-user-personalization-recipe"></a>

データセットグループを作成し、インプレッションデータを含むデータセットをアップロードしたら、User-Personalization レシピを使用してソリューションをトレーニングできます。オプションで、[CREATION\_TIMESTAMP]() と [非構造化テキストメタデータ](items-datasets.md#text-data) データを Items データセットに含めて、Amazon Personalize がアイテムが存在するようになってからの期間をより正確に計算し、コールドアイテムを識別できるようにします。データセットグループの作成とトレーニングデータのアップロードの詳細については、「[Amazon Personalize スキーマのスキーマ JSON ファイルの作成](how-it-works-dataset-schema.md)」を参照してください。

**AWS SDK を使用して User-Personalization レシピでソリューションをトレーニングするには**

1. `create_solution` メソッドを使用して新しいソリューションを作成します。

   `solution name` をソリューション名に置き換えます。また、`dataset group arn` をデータセットグループの Amazon リソースネーム (ARN) に置き換えます。

   ```
   import boto3
   
   personalize = boto3.client('personalize')
   
   print('Creating solution')
   create_solution_response = personalize.create_solution(name = '{{solution name}}', 
                               recipeArn = 'arn:aws:personalize:::recipe/aws-user-personalization', 
                               datasetGroupArn = '{{dataset group arn}}',
                               )
   solution_arn = create_solution_response['solutionArn']
   print('solution_arn: ', solution_arn)
   ```

   aws-user-personalization レシピのプロパティとハイパーパラメータのリストについては、「[プロパティおよびハイパーパラメータ](#bandit-hyperparameters)」を参照してください。

1. 更新されたトレーニングデータを使用して新しい *solution version* (ソリューションバージョン) を作成し、次のコードスニペットを使用して `trainingMode` を `FULL` に設定します。`solution arn` をソリューションの ARN に置き換えます。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
           
   create_solution_version_response = personalize.create_solution_version(solutionArn = '{{solution arn}}', 
                                                                  trainingMode='FULL')
   
   new_solution_version_arn = create_solution_version_response['solutionVersionArn']
   print('solution_version_arn:', new_solution_version_arn)
   ```

1. Amazon Personalize がソリューションバージョンの作成を終了したら、次のパラメータを使用してキャンペーンを作成します。
   + 新しい `campaign name` と、ステップ 2 で生成された `solution version arn` を入力します。
   + `explorationWeight` アイテム探索設定ハイパーパラメータを変更して、探索する量を設定します。アイテムインタラクションデータまたは関連性が少ないアイテムは、値が 1.0 に近いほど頻繁に推奨されます。デフォルト値は 0.3 です。
   + `explorationItemAgeCutOff` アイテム探索設定ハイパーパラメータパラメータを変更して、アイテム探索の対象期間とする、最新のインタラクションとの関係においての最長期間 (日) を指定します。値が大きいほど、探索中に考慮されるアイテムが多くなります。

   次の Python スニペットを使用して、30 日で探索をカットオフする探索に重点を置いた新しいキャンペーンを作成します。キャンペーンの作成には通常数分かかります。ただし、1 時間以上かかる場合もあります。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
   
   create_campaign_response = personalize.create_campaign(
       name = '{{campaign name}}',
       solutionVersionArn = '{{solution version arn}}',
       minProvisionedTPS = 1,
       campaignConfig = {"itemExplorationConfig": {"explorationWeight": "{{0.3}}", "explorationItemAgeCutOff": "{{30}}"}}
   )
   
   campaign_arn = create_campaign_response['campaignArn']
   print('campaign_arn:', campaign_arn)
   ```

    User-Personalization を使用すると、Amazon Personalize は、2 時間ごとにソリューションバージョンを自動的に更新して、新しいデータを含めます。キャンペーンでは、更新されたソリューションバージョンが自動的に使用されます。詳細については、「[自動更新](use-case-recipe-features.md#automatic-updates)」を参照してください。

   キャンペーンを手動で更新するには、最初に、`trainingMode` を `update` に設定した状態で、コンソールまたは [CreateSolutionVersion](API_CreateSolutionVersion.md) 操作を使用して、新しいソリューションバージョンを作成およびトレーニングします。その後、コンソールの **[Campaign]** (キャンペーン) ページで、または [UpdateCampaign](API_UpdateCampaign.md) 操作を使用して、キャンペーンを手動で更新します。
**注記**  
 Amazon Personalize は、2020 年 11 月 17 日より前に作成したソリューションバージョンを自動的に更新しません。

## レコメンデーションの取得とインプレッションの記録 (SDK for Python (Boto3))
<a name="user-personalization-get-recommendations-recording-impressions"></a>

キャンペーンが作成されると、それを使用してユーザーのレコメンデーションを取得し、インプレッションを記録できます。 AWS SDKs「」を参照してください[バッチ推論ジョブ (AWS SDKsの作成](creating-batch-inference-job.md#batch-sdk)。



**レコメンデーションを取得してインプレッションを記録するには**

1. `get_recommendations` メソッドを呼び出します。`campaign arn` を新しいキャンペーンの ARN に変更します。また、`user id` をユーザーの userId に変更します。

   ```
   import boto3
               
   rec_response = personalize_runtime.get_recommendations(campaignArn = '{{campaign arn}}', userId = '{{user id}}')
   print(rec_response['recommendationId'])
   ```

1. PutEvents リクエストを送信するための新しいイベントトラッカーを作成します。`event tracker name` をイベントトラッカーの名前に置き換えます。また、`dataset group arn` をデータセットグループの ARN に置き換えます。

   ```
   import boto3
           
   personalize = boto3.client('personalize')
   
   event_tracker_response = personalize.create_event_tracker( 
       name = '{{event tracker name}}',
       datasetGroupArn = '{{dataset group arn}}'
   )
   event_tracker_arn = event_tracker_response['eventTrackerArn']
   event_tracking_id = event_tracker_response['trackingId']
   print('eventTrackerArn:{},\n eventTrackingId:{}'.format(event_tracker_arn, event_tracking_id))
   ```

1.  ステップ 1 の `recommendationId` とステップ 2 の `event tracking id` を使用して、新しい `PutEvents` リクエストを作成します。このリクエストは、ユーザーのセッションからの新しいインプレッションデータをログに記録します。`user id` をユーザーの ID に変更します。

   ```
   import boto3
               
   personalize_events.put_events(
        trackingId = '{{event tracking id}}',
        userId= '{{user id}}',
        sessionId = '1',
        eventList = [{
        'sentAt': datetime.now().timestamp(),
        'eventType' : 'click',
        'itemId' : rec_response['itemList'][0]['itemId'],        
        'recommendationId': rec_response['{{recommendationId}}'],
        'impression': [item['itemId'] for item in rec_response['itemList']],
        }]
   )
   ```

## サンプル Jupyter ノートブック
<a name="bandits-sample-notebooks"></a>

User-Personalization レシピの使用方法を示すサンプル Jupyter ノートブックについては、「[探索での User Personalization](https://github.com/aws-samples/amazon-personalize-samples/blob/master/next_steps/core_use_cases/user_personalization/user-personalization-with-exploration.ipynb)」を参照してください。