ステップ 4: メトリクスを使用してソリューションバージョンを評価する - Amazon Personalize

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

ステップ 4: メトリクスを使用してソリューションバージョンを評価する

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

オフラインメトリクスは、ソリューションバージョンをトレーニングするときに Amazon Personalize が生成するメトリクスです。キャンペーンを作成してレコメンデーションを提供する前に、オフラインメトリクスを使用してモデルのパフォーマンスを評価できます。オフラインメトリクスを使用すると、ソリューションのハイパーパラメータを変更した場合の効果を表示したり、同じデータでトレーニングしたモデルの結果を比較したりできます。このセクションの残りの部分では、メトリクスという用語はオフラインメトリクスをいいます。

パフォーマンスメトリクスを取得するために、Amazon Personalize は、入力インタラクションデータをトレーニングセットとテストセットに分割します。分割は、選択したレシピの種類によって異なります。

  • USER_SEGMENTATION レシピの場合、トレーニングセットは各ユーザーのインタラクションデータの 80% で構成され、テストセットは各ユーザーのインタラクションデータの 20% で構成されます。

  • 他のすべてのレシピタイプでは、トレーニングセットは 90% のユーザーとそのインタラクションデータで設定されています。テストセットは、残りの 10% のユーザーとそのインタラクションデータで設定されています。

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

比較のためのベースラインを生成するには、最も人気のある上位 K 個のアイテムを推奨する Popularity-Count レシピを使用することをお勧めします。

重要

Amazon Personalize がソリューションバージョンメトリクスを生成するには、入力データセットグループに少なくとも 10 個のデータポイントが必要です。

メトリクスの取得

GetSolutionMetrics を呼び出して、特定のソリューションバージョンのメトリクスを取得します。

AWS Python SDK を使用したメトリクスの取得

  1. ソリューションバージョンを作成します。詳細については、「ソリューションの作成」を参照してください。

  2. メトリクスを取得するには、次のコードを使用します。

    import boto3 personalize = boto3.client('personalize') response = personalize.get_solution_metrics( solutionVersionArn = 'solution version arn') print(response['metrics'])

次に示すのは、追加の最適化目標を持つ ユーザーパーソナライゼーション レシピを使用して作成されたソリューションバージョンからの出力の例です。

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/MovieSolution/<version-id>", "metrics": { "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, "average_rewards_at_k": 0.653 } }

上記のメトリクスは次の用語を使用して下に説明されています。

  • 関連する推奨事項 は、特定のユーザーのテストデータ内の値に一致する推奨事項を示しています。

  • ランク は、推奨事項リスト内の推奨される事項の順位を示しています。順位 1 (リストの上位) は、ユーザーにとって最も高い関連事項であると推定されます。

  • クエリ は、GetRecommendations 呼び出しに内部的に相当するものを示しています。

各メトリクスでは、数字が大きいほど優良です。

カバレッジ

Interactions データセットと Items データセットにある一意のアイテムの総数から、Amazon Personalize がモデルの使用を推奨する可能性のある個別製品の割合を示す評価メトリクス。Amazon Personalize により多くの製品を推奨するには、カバレッジスコアが高いモデルを使用します。User-Personalization など、アイテム探索を特徴とするレシピは、popularity-count など、そうでないレシピよりもカバー率が高くなります。

25 での平均逆ランク

最高ランクモデルのレコメンデーションの関連性を評価する評価メトリクス。Amazon Personalize では、すべての推奨事項リクエストの上位 25 件のうち、最も関連性の高い推奨事項をランク付けする際に、モデルの平均精度を使用してこのメトリックを計算します。

このメトリクスは、最上位にランク付けされた単一のレコメンデーションに関心がある場合に有益です。

K (5/10/25) での正規化減損累積利得 (NCDG)

モデルの上位にランク付けされたレコメンデーションの関連性を示す評価メトリクス。ここで、K は 5、10、25 のレコメンデーションのサンプルサイズです。Amazon Personalize では、ランク付けされたリストでの掲載順位に基づいて推奨事項に重みを割り当てることにより、この値を計算します。この場合、各推奨は、その順位に応じた係数によって割り引きされます (重みが低くなる)。K での正規化された割引累積利益は、リストの下位にある推奨事項が、リストの上位にある推奨事項よりも関連性が低いことを想定しています。

Amazon Personalize は、リストの上位が順位 1 である 1/log(1 + position) の重量要素を使用します。

リストの上位は通常注目度がより高くなるため、このメトリクスでは上位付近に表示される関連する項目が評されます。

precision at K

K (5、10、25) の推奨サンプルサイズに基づいて、モデルのレコメンデーションがどの程度関連しているかを示す評価メトリクス。Amazon Personalize では、この指標は、上位 K 個の推奨事項のうち、関連する推奨事項の数を K で割った数に基づいて計算されます (K は 5、10、または 25 です)。

このメトリクスでは、関連事項の正確な推奨事項が評されます。

average_rewards_at_k

最適化の目的を持つソリューションのソリューションバージョンを作成する (モデルをトレーニングする) と、Amazon Personalize は average_rewards_at_k メトリクスを生成します。average_rewards_at_k のスコアは、ソリューションバージョンが目的を達成する上でどれだけよく機能するかを示します。このメトリクスを計算するために、Amazon Personalize は各ユーザーについての報酬を次のように計算します。

rewards_per_user = total rewards from the user's interactions with their top 25 reward generating recommendations / total rewards from the user's interactions with recommendations

最終的な average_rewards_at_k は、1 以下 0 超の 10 進値に正規化されたすべての rewards_per_user の平均です。値が 1 に近いほど、レコメンデーションから期待できるユーザーあたりの平均利益が大きくなります。

例えば、クリックから得られる収益を最大化することが目的の場合、Amazon Personalize は、ユーザーが上位 25 位の最も高額なレコメンデーションからクリックしたアイテムによって生成された合計収益を、ユーザーがクリックしたすべての推奨アイテムからの収益で除することにより、各ユーザースコアを計算します。その後、Amazon Personalize は、すべてのユーザースコアの正規化された平均を返します。average_rewards_at_k が 1 に近いほど、レコメンデーションから得られるユーザーあたりの平均収益が増大することが期待できます。

詳細については、「」を参照してください。追加の目的のためのソリューションの最適化

hit (K でヒット)

USER_SEGMENTATION レシピを使用してソリューションバージョンをトレーニングした場合、予測された上位関連 K 件の結果に含まれる実際のユーザーと一致するユーザーの平均数。実際のユーザーとは、テストセット内の項目を実際に操作したユーザーです。Kは最も関連性の高いユーザーの上位 1% です。値が高いほど、予測の精度が高くなります。

リコール (Kでリコール)

USER_SEGMENTATION レシピを使用してソリューションバージョンをトレーニングした場合、予測された上位関連 K 件の結果における予測ユーザーの平均パーセンテージは、実際のユーザーと一致します。実際のユーザーとは、テストセット内の項目を実際に操作したユーザーです。Kは最も関連性の高いユーザーの上位 1% です。値が高いほど、予測の精度が高くなります。

以下に示しているのは、メトリクスを生成するために、ソリューションバージョンから特定のユーザー用にレコメンデーションのリストを作成するシンプルな例です。2 番目と 5 番目のレコメンデーションは、このユーザーのテストデータのレコードと一致します。これらは関連するレコメンデーションです。K5 に設定されている場合、次のメトリクスがユーザーに生成されます。

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

ソリューションバージョンを評価できたら、最適なソリューションバージョンでキャンペーンを作成します。詳細については、キャンペーンの作成を参照してください。