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

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

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

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

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

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

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

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

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

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

ソリューションバージョンのメトリクスの取得

ソリューションバージョンを作成すると、メトリクスを使用してそのパフォーマンスを評価できます。Amazon Personalize コンソール、 AWS Command Line Interface (AWS CLI)、および AWS SDKsを使用して、ソリューションバージョンのメトリクスを取得できます。

ソリューションバージョンのメトリクスの取得 (コンソール)

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

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

  2. データセットグループページで、カスタムデータセットグループを選択します。

  3. ナビゲーションペインから、[カスタムリソース] を選択し、[ソリューションとレシピ] を選択します。

  4. ソリューションを選択します。

  5. [ソリューションバージョン] で、ソリューションバージョンを選択してその詳細ページを表示します。メトリックは、下部のペインの [ソリューションバージョンメトリック] タブに一覧表示されます。メトリックの定義については、「メトリクスの定義」を参照してください。

    ソリューションバージョンを評価できたら、ユースケースの最高のメトリクスを使用してソリューションバージョンをデプロイすることで、キャンペーンを作成できます。ソリューションのデプロイの詳細については、「キャンペーンの作成」を参照してください。

ソリューションバージョンメトリクスの取得 (AWS CLI)

GetSolutionMetrics を呼び出して、特定のソリューションバージョンのメトリクスを取得します。次のコードは、 AWS CLIでメトリクスを取得する方法を説明しています。

personalize get-solution-metrics --solution-version-arn solution version ARN

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

{ "solutionVersionArn": "arn:aws:personalize:us-west-2:acct-id:solution/SolutionName/<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 } }

各メトリックの説明については、「メトリクスの定義」を参照してください。ソリューションバージョンを評価できたら、ユースケースの最高のメトリクスを使用してソリューションバージョンをデプロイすることで、キャンペーンを作成できます。ソリューションのデプロイの詳細については、「キャンペーンの作成」を参照してください。

ソリューションバージョンメトリクスの取得 (AWS SDKs)

GetSolutionMetrics を呼び出して、特定のソリューションバージョンのメトリクスを取得します。メトリクスを取得するには、次のコードを使用します。

SDK for Python (Boto3)
import boto3 personalize = boto3.client('personalize') response = personalize.get_solution_metrics( solutionVersionArn = 'solution version arn') print(response['metrics'])
SDK for Java 2.x
public static void getSolutionVersionMetrics(PersonalizeClient personalizeClient, String solutionVersionArn) { try { GetSolutionMetricsRequest request = GetSolutionMetricsRequest.builder() .solutionVersionArn(solutionVersionArn) .build(); Map<String, Double> metrics = personalizeClient.getSolutionMetrics(request).metrics(); metrics.forEach((key, value) -> System.out.println(key + " " + value)); } catch (PersonalizeException e ) { System.err.println(e.awsErrorDetails().errorMessage()); System.exit(1); } }

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

{ "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 } }

各メトリックの説明については、「メトリクスの定義」を参照してください。ソリューションバージョンを評価できたら、ユースケースの最高のメトリクスを使用してソリューションバージョンをデプロイすることで、キャンペーンを作成できます。ソリューションのデプロイの詳細については、「キャンペーンの作成」を参照してください。

メトリクスの定義

Amazon Personalize がソリューションバージョン用に生成するメトリクスは、以下の用語を使用して説明されています。

  • 関連レコメンデーションとは、ユーザーが実際に操作したアイテムに関するレコメンデーションです。これらのアイテムは、テストセットからの各ユーザーのインタラクションデータの最新の 10% からのものです。

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

各メトリクスでは、数字が大きい (1 に近い) ほど優良です。さらに詳しく調べるには、「追加リソース」に記載されているリソースを参照してください。

カバレッジ

カバレッジの値は、Amazon Personalize がデータセット内の一意のレコードの合計数のうち推奨する可能性のある一意のアイテム (アイテムレコメンデーションの場合)、アクション (アクションレコメンデーションの場合)、またはユーザー (ユーザーセグメントレコメンデーションの場合) の割合を示します。

カバレッジスコアが高いほど、Amazon Personalize は、同じレコードを繰り返し推奨するのではなく、より多くのアイテムを推奨します。User-Personalization など、アイテム探索を特徴とするレシピは、Similar-Items など、そうでないレシピよりもカバレッジが高くなります。

25 での平均逆ランク

このメトリクスは、あるモデルがランキングの上位で関連するアイテムレコメンデーションを生成できるかどうかを示します。

あるユーザーに関連する検索結果を生成していて、ユーザーがリストの下位にあるアイテムを選択することを期待していない場合、25 での平均逆ランクが高いモデルを選択できます。例えば、ユーザーは検索結果の最初の料理レシピを選ぶことがよくあります。Amazon Personalize は、PERSONALIZED_ACTIONS または USER_SEGMENTATION レシピでは、このメトリクスを生成しません。

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 を計算します。各レコメンデーションはそれぞれの順位による要因で割引 (低い分量の付与) されます。最後のメトリクスは、テストセットNDCG at K内のすべてのユーザーの平均です。は、リストの下位にあるレコメンデーションは、リストの上位にあるレコメンデーションよりも関連性が低いことをNDCG at 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 に近いほど、モデルの精度は高くなります。

precision

Next-Best-Action レシピを使用してソリューションバージョンをトレーニングすると、Amazon Personalize は precision at K の代わりに precision メトリクスを生成します。このメトリクスは、ユーザーが実際に実行するアクションを予測するうえで、モデルがどの程度優れているかを示します。

Amazon Personalize は、データセット内の各アクションについて、precision を計算するために、そのアクションを実行すると正しく予測されたユーザーの数を、アクションが推奨された合計回数で割って計算します。その後、Amazon Personalize はデータセット内のすべてのアクションの平均を計算します。

例えば、あるアクションが 100 人のユーザーに推奨され、60 人のユーザーがそのアクションを実行し、40 人のユーザーが実行しなかった場合、そのアクションの precision60 / 100 = .60 です。その後、Amazon Personalize はこの計算をすべてのアクションに適用し、平均を返します。

このメトリクスでは、関連するアクションの正確なレコメンデーションが評価されます。スコアが 1 に近いほど、モデルの精度は高くなります。

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 に近いほど、レコメンデーションから得られるユーザーあたりの平均収益が増大することが期待できます。

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

トレンド予測精度

ソリューションバージョンを トレンド-ナウ レシピでトレーニングした場合、モデルが推奨するアイテムの人気上昇率。トレンド予測の精度が高いほど (1 に近いほど)、モデルはトレンドのアイテムをより正確に特定できます。

人気の加速率を計算するために、Amazon Personalize では、すべてのおすすめ商品の人気の増加率を、トレンド商品の上位 25 件の合計人気上昇率で割ります。これらの項目は、テストセットでの実際のインタラクションに基づいています。

データ分布や [トレンド発見頻度] で何を選択したかによって、トレンド予測の精度の値は 0.0 になる場合があります。

ヒット (K でのヒット)

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

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

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

リコール

Next-Best-Action レシピを使用してソリューションバージョンをトレーニングした場合、このメトリクスは、ユーザーが操作するアクションを検出するうえで、ソリューションバージョンがどの程度優れているかを示します。

Amazon Personalize は、データセット内の各アクションについて、recall を計算するために、そのアクションを実行すると正しく予測されたユーザーの数を、テストセット内でアクションを実際に実行した合計ユーザー数で割って計算します。その後、Amazon Personalize はデータセット内のすべてのアクションの平均を計算します。

例えば、100 人のユーザーがテストセットでアクションを実行し、Amazon Personalize がこれらのユーザーのうち 50 人がアクションを実行すると予測した場合、アクションの recall50 / 100 = .50 です。その後、Amazon Personalize はこの計算をすべてのアクションに適用し、平均を返します。

曲線の下の面積 (AUC)

PERSONALIZED_ACTIONS レシピを使用してソリューションバージョンをトレーニングした場合、ソリューションバージョンの受信者操作特性曲線の下の面積。このメトリクスは、ユーザーが実行するアクションを正しく識別するうえで、ソリューションバージョンがどの程度効果があるかを示します。

受信者操作特性曲線は、ソリューションバージョンのパフォーマンスを表します。さまざまなしきい値における真陽性 (関連があると正しく予測されたアクション) と偽陽性 (関連があると誤って予測されたアクション) の率をプロットしています。曲線の下の面積 (AUC) は、ソリューションバージョンのパフォーマンスを曲線に基づいて集計したスコアです。

ソリューションバージョンの AUC は、0 から 1 までです。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

追加リソース

A/B テストによるソリューションバージョンの評価については、「A/B テストを使用して Amazon Personalize によって生成されたレコメンデーションの有効性を測定する」を参照してください。レコメンダーシステムのさまざまなメトリクスについて詳しくは、以下の外部リソースを参照してください。