Score SVD Recommender

この記事では、Azure Machine Learning デザイナーで SVD レコメンダーのスコアリング コンポーネントを使用する方法について説明します。 このコンポーネントを使用すると、単一値分解 (SVD) アルゴリズムに基づくトレーニング済みのレコメンデーション モデルを使用して、予測を作成できます。

SVD レコメンダーでは、次の 2 種類の予測を生成できます。

2 番目の種類の予測を作成する場合は、次のいずれかのモードを利用できます。

  • 運用モードでは、すべてのユーザーまたは項目が考慮されます。 これは通常、Web サービスで使用されます。

    トレーニング中に確認されたユーザーだけでなく、新しいユーザーのスコアも作成できます。 詳しくは、テクニカル ノートをご覧ください。

  • 評価モードは、評価できるユーザーや項目を絞り込んだうえで動作します。 これは通常、パイプライン処理中に使用されます。

SVD レコメンダー アルゴリズムの詳細については、リサーチ ペーパー「レコメンダー システムの行列因子分解手法」を参照してください。

Score SVD Recommender を構成する方法

このコンポーネントでは、2 種類の予測がサポートされており、それぞれで要件が異なります。

評価の予測

評価を予測する場合は、指定されたトレーニング データに基づいて、ユーザーが特定のアイテムにどのように反応するかが計算されます。 そのため、スコアリング用の入力データには、ユーザーと評価する項目の両方を指定する必要があります。

  1. トレーニング済みの推奨モデルをパイプラインに追加し、それを [Trained SVD recommender]\(トレーニング済み SVD レコメンダー\) に接続します。 モデルは、SVD レコメンダーのトレーニング コンポーネントを使用して作成する必要があります。

  2. [Recommender prediction kind]\(レコメンダーの予測の種類\) には、 [Rating Prediction]\(評価の予測\) を選択します。 これ以外のパラメーターを指定する必要はありません。

  3. 予測の対象とするデータを追加し、それを [Dataset to score]\(スコアリングするデータセット\) に接続します。

    モデルが評価を予測するには、入力データセットにユーザーと項目のペアが含まれている必要があります。

    データセットの 3 列目に、ユーザーと項目のペア (1 列目と 2 列目) に対する評価を含めることもできます。 もっとも、この 3 列目は予測に際して無視されます。

  4. パイプラインを送信します。

評価予測の結果

出力データセットにはユーザー、項目、各入力のユーザーと項目について予測される評価の 3 つの列が含まれています。

ユーザーに対する推奨項目の提示

ユーザーに対して項目を推奨するには、ユーザーと項目の一覧を入力として指定します。 このデータを基に、モデルは既存の項目とユーザーに関するナレッジを使用して、各ユーザーにとって魅力のある項目のリストを生成します。 返される推奨項目の数はカスタマイズできます。 また、項目を推奨するのに必要な過去の推奨件数に関してしきい値を設定することもできます。

  1. トレーニング済みの推奨モデルをパイプラインに追加し、それを [Trained SVD recommender]\(トレーニング済み SVD レコメンダー\) に接続します。 モデルは、SVD レコメンダーのトレーニング コンポーネントを使用して作成する必要があります。

  2. 特定のユーザー リストに対して項目を推奨するには、 [Recommender prediction kind]\(レコメンダーの予測の種類\)[Item Recommendation]\(項目の推奨\) に設定します。

  3. [Recommended item selection]\(推奨項目の選択\) では、スコアリング コンポーネントを運用環境で使用するのか、それともモデルの評価に使用するのかを指定します。 値は次のいずれかを指定してください。

    • [From All Items]\(すべての項目から\) :Web サービスや運用環境で使用するパイプラインを設定する場合は、このオプションを選択します。 このオプションを選択すると、"運用モード" が有効になります。 コンポーネントは、トレーニング中に確認されたすべての項目を基に、レコメンデーションを生成します。

    • [From Rated Items (for model evaluation)]\(評価された項目から (モデル評価用)\) :モデルが開発中またはテスト中の場合は、このオプションを選択します。 このオプションを選択すると、"評価モード" が有効になります。 コンポーネントは、評価された入力データセット内の項目だけを基に、推奨項目を作成します。

    • [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) : このオプションは、コンポーネントにトレーニング データセット内のまだ評価されていない項目だけを基に推奨項目を作成してほしい場合に選択します。

  4. 予測の対象となるデータセットを追加し、それを [Dataset to score]\(スコア付けするデータセット\) に接続します。

    • [From All Items]\(すべての項目から\) の場合には、入力データセットの構成が 1 列になっている必要があります。 これには、推奨項目の提示を受けるユーザーの識別子が含まれます。

      データセットに追加で項目の識別子と評価の 2 列を含めることもできますが、それら 2 つの列は無視されます。

    • [From Rated Items (for model evaluation)]\(評価された項目から (モデル評価用)\) の場合には、入力データセットがユーザーと項目のペアで構成されている必要があります。 1 列目にはユーザー識別子が含まれている必要があります。 2 列目には、対応する項目の識別子が含まれている必要があります。

      データセットの 3 列目にユーザーと項目の評価を含めることもできますが、その列は無視されます。

    • [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) の場合には、入力データセットがユーザーと項目のペアで構成されている必要があります。 1 列目にはユーザー識別子が含まれている必要があります。 2 列目には、対応する項目の識別子が含まれている必要があります。

    データセットの 3 列目にユーザーと項目の評価を含めることもできますが、その列は無視されます。

  5. [Maximum number of items to recommend to a user]\(ユーザーに推奨される項目の最大数\) :各ユーザーについて返される項目の数を入力します。 既定では、コンポーネントは 5 つの項目を推奨します。

  6. [Minimum size of the recommendation pool per user]\(ユーザーごとのレコメンデーション プールの最小サイズ\) :過去に何回推奨されている必要があるかを示す値を入力します。 既定では、このパラメーターが 2 に設定されています。これは、その項目が少なくとも他の 2 人のユーザーによって推奨されている必要があることを意味します。

    このオプションは、評価モードでスコアリングする場合にのみ使用してください。 [From All Items]\(すべての項目から\) または [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) を選択した場合、このオプションは使用できません。

  7. [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) の場合は、Training Data という名前の 3 つ目の入力ポートを使用して、既に評価済みの項目を予測結果から削除します。

    このフィルターを適用するには、元のトレーニング データセットを入力ポートに接続します。

  8. パイプラインを送信します。

項目のレコメンデーション結果

SVD レコメンダーのスコアリングによって返されたスコア付きのデータセットには、各ユーザーに対して推奨される項目の一覧が示されます。

  • 1 列目には、ユーザーの識別子が含まれます。
  • それ以降の列は、 [Maximum number of items to recommend to a user]\(ユーザーに推奨する項目の最大数\) で設定した値に応じて生成されます。 各列には、推奨される項目が含まれます (識別子順)。 推奨項目の順序は、ユーザーと項目のアフィニティに基づいて決まります。 アフィニティが最も高い項目が、 [項目 1] の列に配置されます。

テクニカル ノート

この SVD レコメンダーを使ったパイプラインがある場合に、モデルを運用環境に移行する際には、レコメンダーを評価モードで使用する場合と運用モードで使用する場合との間に大きな違いがあることに注意してください。

評価を行うには、本来、テスト セット内のグラウンド トゥルースに照らして検証できる予測が必要になります。 レコメンダーを評価する際には、テスト セット内の評価済み項目のみを予測する必要があります。 これにより、予測される値が制限されることになります。

モデルを運用化する場合には、最適な予測結果を得るために、予測モードを変更し、考えられるすべての項目に基づいてレコメンデーションを実行するのが通常の流れです。 これらの予測の多くについては、対応するグラウンド トゥルースがありません。 そのため、レコメンデーションの精度をパイプライン操作中と同じ方法で検証することはできません。

次のステップ

Azure Machine Learning で使用できる一連のコンポーネントを参照してください。