レコメンダーの評価

重要

Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。

2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。

ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。

レコメンダー モデルの予測の正確度を評価します

カテゴリ: Machine Learning/ Evaluate

注意

適用対象: Machine Learning Studio (クラシック) のみ

類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。

モジュールの概要

この記事では、Machine Learning Studio (クラシック) の Evaluate Recommender モジュールを使用して、推奨モデルによって行われた予測の精度を測定する方法について説明します。 このモジュールを使用すると、4 種類のレコメンデーションを評価できます。

  • 特定のユーザーと項目に対して予測された評価

  • 特定のユーザーに対して推奨された項目

  • 特定のユーザーに関連すると考えられるユーザーの一覧

  • 特定の項目に関連すると考えられる項目の一覧

推奨モデルを使用して予測を作成した場合、サポートされているこれらの予測タイプごとに、返される結果が若干異なります。 Evaluate Recommender モジュール は、スコア付けされたデータセットの列形式から予測の種類を計算します。 たとえば、スコア付け されたデータセットには次の情報が 含まれる場合があります。

  • ユーザー、項目、評価を表す 3 つの要素
  • ユーザーと、そのユーザーに対して推奨された項目
  • ユーザーとその関連ユーザー
  • 項目とその関連項目

また、このモジュールでは、実行される予測の種類に基づいて、適切なパフォーマンス メトリックが適用されます。

ヒント

このチュートリアルでは、.NET 開発チームからレコメンド システムを構築するエンドツーエンドのエクスペリエンスについて知る必要があるすべてのことを説明します。 アプリケーションからアプリケーションを呼び出す方法のサンプル コードMachine Learning説明します。

を使用した .NET アプリケーションのレコメンMachine Learning

Evaluate Recommender を構成する方法

Evaluate Recommender モジュールでは、推奨モデルによって出力された予測が、対応する "グラウンド トゥルース" データと比較されます。 たとえば、 Matchbox Recommender のスコア付けモジュールでは、Evaluate Recommender を使用して分析できるスコア付 けされたデータセットが生成されます

要件

Evaluate Recommender には 、入力として次のデータセットが必要です。

テスト データセット

テスト データセットには 、ユーザーと項目の評価の 3 つの形式の "真相" データが含まれます

ユーザー項目評価のトリプルを含むデータセットが既にある場合は、RecommenderSplit オプションを使用してデータの分割モジュールを適用して、既存のデータセットからトレーニング データセットと関連するテスト セットを作成できます。

スコア付けされたデータセット

スコア付けされたデータセットには、推奨モデルによって生成された予測が含まれています。

この 2 つ目のデータセットに含まれる列は、スコアリング時に実行した予測の種類によって決まります。 たとえば、スコア付けされたデータセットには、次のいずれかが含まれる可能性があります。

  • ユーザー、項目、およびユーザーが項目に対して与えると思われる評価
  • 推奨されるユーザーと項目の一覧
  • 類似している可能性のあるユーザーを含むユーザーの一覧
  • 項目の一覧と、より多くの項目

メトリック

モデルのパフォーマンス メトリックは、入力の種類に基づいて生成されます。 詳細については、次のセクションを参照してください。

予測された評価を評価する

予測された評価を評価する場合、スコア付けされたデータセット (Evaluate Recommender への 2 番目の入力) には、ユーザー、項目、評価を表す 3 つの要素が含まれていて、次の要件を満たしている必要があります。

  • データセットの最初の列に、ユーザー識別子が含まれている。

  • 2 番目の列に、項目の識別子が含まれている。

  • 3 番目の列に、対応するユーザーと項目の評価が含まれている。

重要

評価を成功させるには、列名をそれぞれ UserItemRating とする必要があります。

Evaluate Recommender は、グラウンド トゥルース データセット内の評価を、スコア付きデータセットの予測済み評価と比較し、平均絶対誤差 (MAE) と 二乗平均平方根誤差 (RMSE) を計算します。

Evaluate Recommender の他のパラメーター は、評価予測の評価には影響しません。

項目のレコメンデーションを評価する

項目のレコメンデーションを評価する際には、各ユーザーに対して推奨された項目が含まれている、スコア付きデータセットを使用します。

  • データセットの最初の列には、ユーザー識別子が含まれている必要があります。

  • 後続のすべての列には、対応する推奨項目識別子が、項目とユーザーの関連度順で含まれている必要があります。

    このデータセットを接続する前に、最も関連度の高い項目が先頭に表示されるように、データセットを並べ替えることをお勧めします。

Evaluate Recommender の他のパラメーターは 、項目のレコメンダーの評価には影響しません。

重要

Evaluate Recommender を機能するには、列名が UserItem 1Item 2Item 3などである必要があります。

Evaluate Recommender は 、平均正規化割引累積利益 (NDCG) を計算し、出力データセットで返します。

推奨された項目に対する実際の "グラウンド トゥルース" を知ることができないため、Evaluate Recommender では NDCG を計算する際、テスト データセットに含まれるユーザーと項目の評価が、利得として使用されます。 評価を実行するには、レコメンダーのスコアリング モジュールで、(テスト データセット内に) グラウンド トゥルースの評価がある項目についてのみ、レコメンデーションを生成する必要があります。

関連ユーザーの予測を評価する

関連ユーザーの予測を評価する場合は、関心のある各ユーザーの関連ユーザーを含むスコア付けされたデータセットを使用します。

  • 最初の列には、関心のある各ユーザーの識別子が含まれている必要があります。

  • 後続のすべての列には、予測された関連ユーザーの識別子が含まれます。 関連ユーザーは、現実性の強さ (最も関連するユーザーが最初に) 順に並べらされます。

  • Evaluate Recommender を機能するには、列名が UserRelated User 1Related User 2Related User 3、などである必要があります。

ヒント

目的のユーザーとその関連ユーザーの間で共通している必要がある項目の最小数を設定することで、評価に影響を与えることができます。

レコメンダーの評価は、マンハッタン (L1 Sim NDCG) 距離とユークリッド (L2 Sim NDCG) 距離に基づいて平均の正規化減損累積利得 (NDCG) を計算し、両方の値を出力データセットで返します。 Evaluate Recommender は、関連するユーザーに対する実際の真相はないので、次の手順を使用して平均 NDCG を計算します。

スコア付けされたデータセット内の目的の各ユーザー:

  1. 目的のユーザーと検討中の関連ユーザーの両方によって評価された、テスト データセット内のすべての項目を検索します。

  2. これらの項目の評価から 2 つのベクトルを作成します。1 つは関心のあるユーザー用、もう 1 つは検討中の関連ユーザー用です。

  3. ゲインを、生成される 2 つの評価ベクトルの類似性として、そのマンハッタン (L1) 距離またはユークリッド (L2) 距離の単位で計算します。

  4. すべての関連ユーザーのゲインを使用して、L1 Sim NDCG および L2 Sim NDCG を計算します。

  5. スコア付けされたデータセット内のすべてのユーザーの NDCG 値を平均します。

言い換えると、利益は、関心のあるユーザー (スコア付けされたデータセットの最初の列のエントリ) と特定の関連ユーザー (スコア付けされたデータセットの n 番目の列のエントリ) との間の類似性 (正規化されたスクリアージ距離または Eucliclicli distances) として計算されます。 このユーザー ペアのゲインは、両方の項目が元のデータ (テスト セット) で評価されているすべての項目を使用して計算されます。 その後、NDCG は、対数割引を使用して、関心のある 1 人のユーザーとすべての関連ユーザーの個々の利益を集計することで計算されます。 つまり、関心のあるユーザーごとに 1 つの NDCG 値が計算されます (スコア付けされたデータセット内の各行)。 最終的に報告される数値は、スコア付けされたデータセット (つまり、その行) に関心を持つすべてのユーザーに対する算術平均です。

そのため、評価するために、推奨者スコアリング モジュールでは、(テスト データセット内の) グラウンド の真相評価を持つ項目を持つ関連ユーザーのみを予測する必要があります。

関連項目の予測を評価する

関連項目の予測を評価する場合は、対象の各項目の関連項目を含むスコア付けされたデータセットを使用します。

  • 最初の列には、関心のある項目の識別子が含まれている必要があります。

  • 後続のすべての列には、予測された関連項目の識別子を、関心のある項目 (最も関連する項目の最初) に関連付けられた順序で含む必要があります。

  • Evaluate Recommender を機能するには、列名が ItemRelated Item 1Related Item 2Related Item 3、などである必要があります。

ヒント

目的の項目とその関連項目の間で共通している必要があるユーザーの最小数を設定することで、評価に影響を与えることができます。

Evaluate Recommender は、大都市部 (L1 Sim NDCG) とユークリッド (L2 Sim NDCG) の距離に基づいて平均正規化割引累積利益 (NDCG) を計算し、出力データセット内の両方の値を返します。 関連項目に対する実際の真相はないので、 Evaluate Recommender は平均 NDCG を次のように計算します。

スコア付けされたデータセット内の目的の各項目:

  1. 目的の項目と検討中の関連項目の両方によって評価された、テスト データセット内のすべてのユーザーを検索します。

  2. これらのユーザーの評価から、2 つのベクトル (1 つは目的の項目用、1 つは検討中の関連項目用) を作成します。

  3. ゲインを、生成される 2 つの評価ベクトルの類似性として、そのマンハッタン (L1) 距離またはユークリッド (L2) 距離の単位で計算します。

  4. すべての関連項目のゲインを使用して、L1 Sim NDCG および L2 Sim NDCG を計算します。

  5. スコア付けされたデータセット内のすべての関心項目の NDCG 値を平均します。

言い換えると、利益は、関心のある項目 (スコア付けされたデータセットの最初の列のエントリ) と特定の関連項目 (スコア付けされたデータセットの n 番目の列のエントリ) との間の類似性 (正規化されたスクリアージ距離または Eucliclicli distances) として計算されます。 この項目ペアのゲインは、元のデータ (テスト セット) でこれらの項目の両方を評価したすべてのユーザーを使用して計算されます。 その後、NDCG は、対数割引を使用して、関心のある単一の項目とそのすべての関連項目の個別の利益を集計することで計算されます。 つまり、関心のある項目 (スコア付けされたデータセット内の各行) ごとに 1 つの NDCG 値が計算されます。 最終的に報告される数値は、スコア付けされたデータセット (つまり、その行) のすべての関心のある項目に対する算術平均です。

したがって、評価するには、推奨者スコアリング モジュールは、(テスト データセット内の) グラウンド の真相評価を使用して関連項目のみを予測する必要があります。

推奨モデルを使用する方法の例については、次のMachine Learningを参照Azure AI Gallery

  • 映画レコメンダー サンプル: レコメンド モデルを使用してトレーニング、評価、スコア付けを行う方法を示します。

  • Machine Learning を使用した .NET アプリケーションのレコメンド エンジンの構築: このブログでは、映画のレコメンド モデルを構築する方法の詳細な説明を提供します。

想定される入力

名前 説明
テスト データセット データ テーブル テスト データセット
スコア付けされたデータセット データ テーブル スコア付けされたデータセット

モジュールのパラメーター

名前 Range Type Default 説明
クエリ ユーザーと関連ユーザーに共通して評価する必要がある項目の最小数 >=1 Integer 2 クエリ ユーザーと関連ユーザーの両方で評価される必要がある項目の最小数を指定します

このパラメーターは省略可能です
クエリ項目と関連項目を共通で評価する必要があるユーザーの最小数 >=1 Integer 2 クエリ項目と関連項目の両方を評価する必要があるユーザーの最小数を指定します

このパラメーターは省略可能です

出力

名前 説明
メトリック データ テーブル 評価メトリックのテーブル

例外

例外 説明
エラー 0022 入力データセットで選択された列の数が、予想される数と等しくない場合、例外が発生します。
エラー 0003 1 つまたは複数の入力が null または空の場合、例外が発生します。
エラー 0017 指定した 1 つ以上の列の型が現在のモジュールでサポートされていない場合に、例外が発生します。
エラー 0034 特定のユーザーと項目のペアに対して複数の評価が存在する場合、例外が発生します。
エラー 0018 入力データセットが有効でない場合、例外が発生します。
エラー 0002 1 つまたは複数のパラメーターを解析できない場合、または指定された型からターゲット メソッドで必要な型に変換できない場合、例外が発生します。

Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください

API の例外の一覧については、「エラー コードMachine Learning REST API参照してください

こちらもご覧ください

マッチボックス レコメンダーのトレーニング
マッチボックス レコメンダーのスコアリング