

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

# イベント設定によるソリューションの最適化
<a name="optimizing-solution-events-config"></a>

**重要**  
デフォルトでは、すべての新しいソリューションで自動トレーニングが使用されます。自動トレーニングでは、ソリューションがアクティブな間はトレーニングコストが発生します。不要なコストを避けるために、完了したら[ソリューションを更新](updating-solution.md)して自動トレーニングを無効にすることができます。トレーニングのコストの詳細については、「[Amazon Personalize の料金](https://aws.amazon.com/personalize/pricing/)」を参照してください。

 User-Personalization-v2 レシピまたは Personalized-Ranking-v2 レシピを使用する場合は、イベント設定を使用して Amazon Personalize ソリューションを最適化できます。

 アイテムレコメンデーションレシピを備えた Amazon Personalize の主な目的は、履歴およびリアルタイムのアイテムインタラクションデータに基づいて、ユーザーにとって最も関連性の高いアイテムを予測することです。ただし、インタラクションには、ユーザーが特定のアイテムをクリックまたは購入したかどうかなどの追加情報が含まれる場合があります。これを記録するには、イベントのタイプ ([イベントタイプとイベント値のデータ](interactions-datasets.md#event-type-and-event-value-data)) を記録します。ソリューションを設定すると、ソリューションで、異なるインタラクションイベントタイプに異なる重みを与えることができます。例えば、`click` イベントよりも `purchase` イベントに重みを付けるようにソリューションを設定できます。

ソリューションでイベントタイプごとに異なる重みを与えるには、ソリューションのイベント設定でイベントタイプとそれに対応する重みを指定します。さらに、イベント値のしきい値を設定して、そのしきい値を下回るイベント値を持つインタラクションを除外できます。例えば、EVENT\_TYPE が [watch] (視聴) のイベントの EVENT\_VALUE データが、ユーザーが視聴した動画のパーセンテージ (%) である場合であって、イベント値のしきい値を 0.5 に、イベントタイプを [watch] (視聴) に設定する場合、Amazon Personalize は、EVENT\_VALUE が 0.5 以上の [watch] (視聴) インタラクションイベントのみを使用してモデルをトレーニングします。

 イベントタイプに関連付けられた重みによって重要度が決まります。重みが高いイベントタイプでは、トレーニングされたモデルがそのイベントタイプとやり取りされるアイテムを推奨する可能性が高くなります。例えば、「クリック」よりも高い重みで「購入」を指定し、ユーザーがアイテム B をクリックするか、インタラクション履歴があるアイテム C を購入することをモデルが知った場合、モデルはアイテム C をより上位にランク付けします。

イベント設定を使用してソリューションを最適化するには、User-Personalization-v2 レシピまたは Personalized-Ranking-v2 レシピを使用して新しいソリューションを作成し、イベント設定を指定します。イベント設定を使用して既存のソリューション ([ソリューションを更新して自動トレーニング設定を変更する](updating-solution.md)) を更新することもできます。

Amazon Personalize コンソール、AWS Command Line Interface (AWS CLI)、または AWS SDK を使用できます。Amazon Personalize コンソールの使用の詳細については、「[ソリューションの作成 (コンソール)](create-solution.md#configure-solution-console)」を参照してください。

**Topics**
+ [ガイドラインと要件](#optimize-event-config-guidelines-req)
+ [イベントの重み設定によるパフォーマンスの測定](#optimize-event-configuration-measuring-performance)
+ [ソリューションの最適化 (AWS CLI)](#optimize-event-configuration-cli)
+ [ソリューションの最適化 (AWS SDK)](#optimize-event-configuration-sdk)

## ガイドラインと要件
<a name="optimize-event-config-guidelines-req"></a>

 イベント設定のガイドラインと要件は次のとおりです。
+ さまざまなイベントタイプの重みを設定するには、アイテムインタラクションデータセットに、EVENT\_TYPE 列とオプションの EVENT\_VALUE 列が必要です。
+ 設定でイベントパラメータのリストを指定できます。ソリューションの作成で検討対象となるすべてのイベントタイプを含めます。最大 10 個の異なるイベントタイプを指定できます。
+ イベントタイプごとにイベントの重みを指定できます。イベントの重みは 0.0～1.0 でなければなりません。イベントタイプ間の重みの比率のみが重要です。例えば、重みが 0.3 のイベントタイプ「購入」と重みが 0.1 のイベントタイプ「クリック」を設定すると、重みが 0.6 のイベントタイプ「購入」と重みが 0.2 のイベントタイプ「クリック」を設定するのと同じ効果があります。
+ [UpdateSolution](https://docs.aws.amazon.com/personalize/latest/dg/API_UpdateSolution.html) API オペレーションを使用して、既存のソリューションのイベント設定を更新できます。

## イベントの重み設定によるパフォーマンスの測定
<a name="optimize-event-configuration-measuring-performance"></a>

 イベント設定を持つソリューションのソリューションバージョンを作成する (モデルをトレーニングする) と、Amazon Personalize は `normalized_discounted_cumulative_gain_with_event_weights_at_k` メトリクスを生成します。`normalized_discounted_cumulative_gain_with_event_weights_at_k` のスコアは、各イベントタイプに設定したイベントの重みを考慮して、ソリューションバージョンのパフォーマンスを示します。

 K での正規化減損累積利得 (NDCG) に似ていますが、正しい予測ごとに報酬が重み付けされます。対照的に、K での元の NDCG では、正しい予測はすべて 1 の重みを持ちます。例えば、「購入」が重み 0.3、「クリック」が重み 0.1 の場合、アイテムの「購入」を正しく予測すると報酬が 1.5 になり、アイテムの「クリック」を予測すると報酬が 0.5 になります。

メトリクスの生成の詳細については、「[メトリクスを使用して Amazon Personalize ソリューションバージョンを評価する](working-with-training-metrics.md)」を参照してください。

## ソリューションの最適化 (AWS CLI)
<a name="optimize-event-configuration-cli"></a>

User-Personalization-v2 または Personalized-Ranking-v2 レシピを使用して、イベント設定で最適化を行うことができます。

 AWS CLI を使用してイベント設定でソリューションを最適化するには、新しいソリューションを作成し、`solutionConfig` オブジェクトの `eventsConfig` キーを使用してイベント設定の詳細を指定します。`eventsConfig` には、最大 10 個の eventParameters を指定できる `eventParametersList` のキーがあります。各 `eventParameter` には以下のフィールドがあります。
+ eventType: ソリューションの作成で検討対象となるイベントタイプを指定します。
+ eventValueThreshold: イベント値のしきい値を指定します。ソリューションの作成で、イベント値がこのしきい値以上のイベントのみが検討考慮となります。
+ weight: 各イベントタイプの重みを指定します。重みが大きいほど、作成されたソリューションのイベントタイプの重要度が高くなります。

create-solution AWS CLI コマンドの例を次に示します。`solution name`、`dataset group arn`、および `recipe arn` の値を独自の値に置き換えます。

```
aws personalize create-solution \
--name {{solution name}} \
--dataset-group-arn {{dataset group arn}} \
--recipe-arn {{recipe arn}} \
--solution-config "{\"eventsConfig\":{\"eventParametersList\":[{\"eventType\":\"Purchase\", \"eventValueThreshold\":0.1, \"weight\":0.3}, {\"eventType\":\"Click\", \"weight\":0.1}]}"
```

ソリューションの準備が整ったら、新しいソリューションバージョンを作成します (コマンドの例については、「[ソリューションの作成 (AWS CLI)](create-solution.md#configure-solution-cli)」を参照してください)。ソリューションバージョンを作成すると、ソリューションバージョンのメトリクスで最適化パフォーマンスを表示できます。「[最適化パフォーマンスの測定](optimizing-solution-for-objective.md#measuring-performance)」を参照してください。

## ソリューションの最適化 (AWS SDK)
<a name="optimize-event-configuration-sdk"></a>

User-Personalization-v2 または Personalized-Ranking-v2 レシピを使用して、イベント設定で最適化を行うことができます。

 AWS SDK を使用してイベント設定でソリューションを最適化するには、新しいソリューションを作成し、`solutionConfig` オブジェクトの `eventsConfig` キーを使用してイベント設定の詳細を指定します。`eventsConfig` には、最大 10 個の `eventParameters` を指定できる `eventParametersList` のキーがあります。各 `eventParameter` には以下のフィールドがあります。
+ eventType: ソリューションの作成で検討対象となるイベントタイプを指定します。
+ eventValueThreshold: イベント値のしきい値を指定します。ソリューションの作成で、イベント値がこのしきい値以上のイベントのみが検討考慮となります。
+ weight: 各イベントタイプの重みを指定します。重みが大きいほど、作成されたソリューションのイベントタイプの重要度が高くなります。

------
#### [ SDK for Python (Boto3) ]

```
import boto3

personalize = boto3.client('personalize')

create_solution_response = personalize.create_solution(
    name= '{{solution name}}', 
    recipeArn = '{{recipe arn}}', 
    datasetGroupArn = '{{dataset group arn}}',
    solutionConfig = {
       "eventsConfig": {
          "eventParametersList": [
             {"eventType":"Purchase", 
              "eventValueThreshold":0.1, 
              "weight":0.3}, 
             {"eventType":"Click", 
              "weight":0.1}
          ]
       }
    }
)
solution_arn = create_solution_response['solutionArn']
print('solution_arn: ', solution_arn)
```

------
#### [ SDK for Java 2.x ]

```
public static String createPersonalizeSolution(PersonalizeClient personalizeClient, 
							  String datasetGroupArn, 
							  String solutionName, 
							  String recipeArn,
							  ) {
    
try {
    EventsConfig eventsConfig = EventsConfig.builder()
        .eventsParameterList(eventsParameterList)
        .build();

    SolutionConfig solutionConfig = SolutionConfig.builder()
        .eventsConfig(eventsConfig)
        .build();

    CreateSolutionRequest solutionRequest = CreateSolutionRequest.builder()
        .name(solutionName)
        .datasetGroupArn(datasetGroupArn)
        .recipeArn(recipeArn)
        .solutionConfig(solutionConfig)
        .build();

    CreateSolutionResponse solutionResponse = personalizeClient.createSolution(solutionRequest);
    
    return solutionResponse.solutionArn();

} catch (PersonalizeException e) {
    System.err.println(e.awsErrorDetails().errorMessage());
    System.exit(1);
}
return "";
```

------

ソリューションの準備が整ったら、新しいソリューションバージョンを作成します (コマンドの例については、「[ソリューションの作成 (AWS SDK)](create-solution.md#configure-solution-sdk)」を参照してください)。ソリューションバージョンを作成すると、ソリューションバージョンのメトリクスで最適化パフォーマンスを表示できます。「[最適化パフォーマンスの測定](optimizing-solution-for-objective.md#measuring-performance)」を参照してください。