

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

# Amazon Personalize ドメインレコメンダーの評価
<a name="evaluating-recommenders"></a>

 オフラインおよびオンラインのメトリクスを使用して、ソリューションバージョンのパフォーマンスを評価できます。*オンラインメトリクス*は、リアルタイムのレコメンデーションを使用して、ユーザーのインタラクションで観察される経験的な結果です。例えば、ユーザーがカタログを閲覧するときのユーザーのクリック率を記録できます。オンラインメトリクスの生成および記録は、ユーザーの責任において行われます。

 *オフラインメトリクス*は、レコメンダーを作成するときに Amazon Personalize が生成するメトリクスです。オフラインメトリクスを使用して、レコメンダーを裏付けるモデルのパフォーマンスを評価できます。レコメンダーの設定を変更する効果を表示し、同じデータセットグループ内の*同じデータ*で異なるユースケースでトレーニングされたレコメンダーの結果を比較できます。

異なるデータでトレーニングされた異なるレコメンダーのメトリクスを比較しないでください。メトリクスの違いは、モデルのパフォーマンスではなく、データの違いにある可能性があります。例えば、ユーザーごとにスパース `purchase` イベントデータを持つデータセットグループと、堅牢な `view` イベントデータを持つデータセットグループがあるとします。`precision at K` などのメトリクスに基づくと、ビューイベントデータでトレーニングされたレコメンダーは、インタラクションの数が多いため、誤ってパフォーマンスが向上しているように見える可能性があります。

 パフォーマンスメトリクスを取得するために、Amazon Personalize は、入力インタラクションデータをトレーニングセットとテストセットの 2 つのセットに分割します。トレーニングセットは、ユーザーとそのインタラクションデータの 90% で設定されています。テストセットは、ユーザーとそのインタラクションデータの残りの 10% で設定されています。

 その後、Amazon Personalize は、トレーニングセットを使用してレコメンダーを作成します。トレーニングが完了すると、Amazon Personalize は、テストセットからの各ユーザーのデータの最も古い 90% を入力として提供します。その後、Amazon Personalize は、レコメンダーが生成するレコメンデーションを、テストセットからの各ユーザーのデータの最新の 10% における実際のインタラクションと比較することにより、メトリクスを計算します。

**Topics**
+ [メトリクスの取得](#retrieving-recommender-metrics)
+ [メトリクスの定義](#metric-definitions-recommenders)
+ [例](#working-with-recommender-metrics-example)
+ [その他のリソース](#additional-metrics-resources-recommenders)

## メトリクスの取得
<a name="retrieving-recommender-metrics"></a>

レコメンダーがアクティブになったら、Amazon Personalize コンソールでレコメンダーのメトリックスを表示したり、[DescribeRecommender](API_DescribeRecommender.md) オペレーションを呼び出してメトリックスを取得したりできます。

**Topics**
+ [メトリクスの表示 (コンソール)](#retrieving-recommender-metrics-console)
+ [メトリクスの取得 (AWS CLI)](#retrieving-recommender-metrics-cli)
+ [メトリクスの取得 (AWS SDKs)](#retrieving-recommender-metrics-sdk)

### メトリクスの表示 (コンソール)
<a name="retrieving-recommender-metrics-console"></a>

レコメンダーメトリクスをコンソールに表示するには、レコメンダーの詳細ページに移動します。

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

1. **[データセットグループ]** のページで、ドメインデータセットグループを選択します。

1. ナビゲーションペインから、**[レコメンダー]** を選択します。

1. レコメンダーのリストから、メトリクスを表示するレコメンダーを選択します。

### メトリクスの取得 (AWS CLI)
<a name="retrieving-recommender-metrics-cli"></a>

次のコードは、 AWS CLIを使用してレコメンダー向けのメトリクスを取得する方法を示しています。

```
aws personalize describe-recommender \
--recommender-arn {{recommender arn}}
```

VIDEO\_ON\_DEMAND ドメインの *Top picks for You* ユースケース用に作成されたレコメンダーからのメトリクスを出力する例を次に示します。

```
{
    "recommender": {
        "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName",
        "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName",
        "name": "name123",
        "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks",
        "modelMetrics": {
            "coverage": 0.27,
            "mean_reciprocal_rank_at_25": 0.0379,
            "normalized_discounted_cumulative_gain_at_5": 0.0405,
            "normalized_discounted_cumulative_gain_at_10": 0.0513,
            "normalized_discounted_cumulative_gain_at_25": 0.0828,
            "precision_at_5": 0.0136,
            "precision_at_10": 0.0102,
            "precision_at_25": 0.0091,
        }
        "recommenderConfig": {},
        "creationDateTime": "2022-05-06T10:11:24.589000-07:00",
        "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00",
        "status": "ACTIVE",
    }
}
```

### メトリクスの取得 (AWS SDKs)
<a name="retrieving-recommender-metrics-sdk"></a>

次のコードは、SDK for Python (Boto3) を使用してレコメンダー用にメトリクスを取得する方法を示しています。

```
import boto3

personalize = boto3.client('personalize')

response = personalize.describe_recommender(
    recommenderArn = '{{recommender_arn}}'
)
print(response['recommender']['modelMetrics'])
```

VIDEO\_ON\_DEMAND ドメイン用の *Top picks for you* ユースケース用に作成されたレコメンダーからのメトリクスを出力する例を次に示します。

```
{
    "recommender": {
        "recommenderArn": "arn:aws:personalize:region:acct-id:recommender/recommenderName",
        "datasetGroupArn": "arn:aws:personalize:region:acct-id:dataset-group/dsGroupName",
        "name": "name123",
        "recipeArn": "arn:aws:personalize:::recipe/aws-vod-top-picks",
        "modelMetrics": {
            "coverage": 0.27,
            "mean_reciprocal_rank_at_25": 0.0379,
            "normalized_discounted_cumulative_gain_at_5": 0.0405,
            "normalized_discounted_cumulative_gain_at_10": 0.0513,
            "normalized_discounted_cumulative_gain_at_25": 0.0828,
            "precision_at_5": 0.0136,
            "precision_at_10": 0.0102,
            "precision_at_25": 0.0091,
        }
        "recommenderConfig": {},
        "creationDateTime": "2022-05-06T10:11:24.589000-07:00",
        "lastUpdatedDateTime": "2022-05-06T10:34:33.270000-07:00",
        "status": "ACTIVE",
    }
}
```

## メトリクスの定義
<a name="metric-definitions-recommenders"></a>

Amazon Personalize がレコメンダー向けに生成するメトリックスは、以下の用語を使用して説明されています。
+ *関連レコメンデーション*とは、ユーザーが実際にインタラクションを行ったアイテムのレコメンデーションです。これらのアイテムは、テストセットからの各ユーザーのインタラクションデータの最新の 10% からのものです。
+ *ランク*は、レコメンデーションリスト内の推奨される事項の順位を示しています。順位 1 (リストの上位) は、ユーザーにとって最も高い関連事項であると推定されます。

各メトリクスでは、数字が大きい (1 に近い) ほど優良です。さらに詳しく調べるには、「[その他のリソース](#additional-metrics-resources-recommenders)」に記載されているリソースを参照してください。

**カバレッジ**  
 *カバレッジ*の値は、インタラクションデータセットとアイテムデータセットに含まれるユニークなアイテムの総数のうち、Amazon Personalize がお勧めするユニークなアイテムの割合を示しています。カバレッジスコアが高いほど、Amazon Personalize は、異なるユーザーに同じ少数のアイテムを繰り返し推奨するのではなく、より多くのアイテムを推奨します。*Top picks for you* (VIDEO\_ON\_DEMAND) や、*おすすめ* (eコマース) など、アイテム探索を特徴とするユースケースは、そうでないユースケースよりもカバー率が高くなります。

**25 での平均逆ランク**  
このメトリクスは、あるモデルがランキングの上位で関連するレコメンデーションを生成できるかどうかを示します。あるユーザーに関連する検索結果を生成していて、ユーザーがリストの下位にある項目を選択することを期待していない場合、*25 での平均逆ランク*が高いモデルを選択できます。例えば、ユーザーは検索結果の最初の料理レシピを選ぶことがよくあります。  
 Amazon Personalize は、レコメンデーションのリクエストの平均逆ランクスコアを使用してこのメトリックスを計算します。それぞれの相互ランクスコアは次のように計算されます。`1 / the rank of the highest item interacted with by the user`、ここで可能なランキングの合計は 25 です。ユーザーが操作するその他のランクの低いアイテムは無視されます。ユーザーが最初のアイテムを選択した場合、スコアは 1 です。アイテムを何も選択しなかった場合、スコアは 0 です。  
 例えば、3 人の異なるユーザーに、それぞれ 25 件のレコメンデーションを表示するとします。  
+ *ユーザー 1 がランク *4* のアイテムとランク *10* のアイテムをクリックした場合、両者の相互ランクスコアは 1/4 になります。*
+ ユーザー 2 がランク *2* のアイテム、ランク *4* のアイテム、ランク *12* のアイテムをクリックした場合、相互のランクスコアは 1/2 になります。
+ ユーザー 3 がランク 6 のアイテムを 1 つクリックした場合、相互のランクスコアは *1/6* になります。
 すべてのレコメンデーションのリクエスト (この場合は 3) の平均逆ランクは、`(1/4 + 1/2 + 1/6) / 3 = .3056` として計算されます。  


**K (5、10、または 25) での正規化減損累積利得 (NDCG)**  
このメトリクスは、モデルがどの程度うまくレコメンデーションをランク付けしているかを教えてくれます。ここで、K は 5、10、25 のレコメンデーションのサンプルサイズです。このメトリクスは、最もランクの高い項目だけでなく、レコメンデーションのランキングにもっとも関心がある場合に役立ちます (これについては、「`mean reciprocal rank at 25`」を参照してください)。例えば、1 つのカルーセルに同時に最大 10 本の映画を表示するアプリケーションでは、`NDCG at 10` のスコアが役に立ちます。  
Amazon Personalize は、テストセット内の各ユーザーのランキング順位に基づいてレコメンデーションに重みを付けることで NDCG を計算します。各レコメンデーションはそれぞれの順位による要因で割引 (低い分量の付与) されます。最後のメトリックスは、テストセットに含まれる全ユーザーの平均です。K での正規化された割引累積利益は、リストの下位にあるレコメンデーションが、リストの上位にあるレコメンデーションよりも関連性が低いことを想定しています。  
Amazon Personalize は、リストの上位が順位 `1` である `1/log(1 + position)` の重量要素を使用します。

**precision at K**  
K (5、10、25) の推奨サンプルサイズに基づいて、モデルのレコメンデーションがどの程度関連しているかを示すメトリクス。  
 Amazon Personalize では、このメトリクスは、上位 K 個のレコメンデーションのうち、関連するレコメンデーションの数を K で割った数に基づいて計算されます (K は 5、10、または 25 です)。最後のメトリクスは、テストセットに含まれる全ユーザーの平均です。  
例えば、あるユーザーに 10 個のアイテムをレコメンドし、ユーザーがそのうちの 3 個とインタラクションした場合、K での精度は、正しく予測された 3 個のアイテムを、合計 10 個のレコメンデーションアイテムで割った値、つまり `3 / 10 = .30` です。  
このメトリクスでは、関連事項の正確なレコメンデーションが評されます。スコアが 1 に近いほど、モデルの精度は高くなります。

## 例
<a name="working-with-recommender-metrics-example"></a>

以下は、特定のユーザー向けのレコメンデーションのリストを作成するレコメンダーの簡単な例です。2 番目と 5 番目のレコメンデーションは、このユーザーのテストデータのレコードと一致します。これらは関連するレコメンデーションです。`K` が `5` に設定されている場合、次のメトリクスがユーザーに生成されます。

**reciprocal\_rank**  
計算: 1/2  
結果: 0.5000

**normalized\_discounted\_cumulative\_gain\_at\_5**  
計算: (1/log(1 \+ 2) \+ 1/log(1 \+ 5)) / (1/log(1 \+ 1) \+ 1/log(1 \+ 2))  
結果: 0.6241

**precision\_at\_5**  
計算: 2/5  
結果: 0.4000

## その他のリソース
<a name="additional-metrics-resources-recommenders"></a>

レコメンダーシステムのさまざまなメトリクスについて詳しくは、以下の外部リソースを参照してください。
+ [MRR と MAP と NDCG の比較:ランクに応じた評価メトリクスとそれをいつ使うべきか](https://medium.com/swlh/rank-aware-recsys-evaluation-metrics-5191bba16832/)
+  [割引後の累積利益:知っておくべきランキングメトリクス](https://medium.com/@maeliza.seymour/discounted-cumulative-gain-the-ranking-metrics-you-should-know-about-e1d1623f8cd9) 
+  [レコメンダーシステムの k での再現率と精度](https://medium.com/@bond.kirill.alexandrovich/precision-and-recall-in-recommender-systems-and-some-metrics-stuff-ca2ad385c5f8) 
+  [レコメンダーシステムのランク付け評価メトリクス](https://towardsdatascience.com/ranking-evaluation-metrics-for-recommender-systems-263d0a66ef54) 