Score SVD RecommenderScore SVD Recommender

この記事では、Azure Machine Learning デザイナー (プレビュー) で SVD レコメンダーのスコアリング モジュールを使用する方法について説明します。This article describes how to use the Score SVD Recommender module in Azure Machine Learning designer (preview). このモジュールを使用すると、単一値分解 (SVD) アルゴリズムに基づくトレーニング済みのレコメンデーション モデルを使用して、予測を作成できます。Use this module to create predictions by using a trained recommendation model based on the Single Value Decomposition (SVD) algorithm.

SVD レコメンダーでは、次の 2 種類の予測を生成できます。The SVD recommender can generate two different kinds of predictions:

2 番目の種類の予測を作成する場合は、次のいずれかのモードを利用できます。When you're creating the second type of predictions, you can operate in one of these modes:

  • 運用モードでは、すべてのユーザーまたは項目が考慮されます。Production mode considers all users or items. これは通常、Web サービスで使用されます。It's typically used in a web service.

    トレーニング中に確認されたユーザーだけでなく、新しいユーザーのスコアも作成できます。You can create scores for new users, not just users seen during training. 詳しくは、テクニカル ノートをご覧ください。For more information, see the technical notes.

  • 評価モードは、評価できるユーザーや項目を絞り込んだうえで動作します。Evaluation mode operates on a reduced set of users or items that can be evaluated. これは通常、パイプライン処理中に使用されます。It's typically used during pipeline operations.

SVD レコメンダー アルゴリズムの詳細については、リサーチ ペーパー「レコメンダー システムの行列因子分解手法」を参照してください。For more information on the SVD recommender algorithm, see the research paper Matrix factorization techniques for recommender systems.

Score SVD Recommender を構成する方法How to configure Score SVD Recommender

このモジュールでは、2 種類の予測がサポートされており、それぞれで要件が異なります。This module supports two types of predictions, each with different requirements.

評価の予測Prediction of ratings

評価を予測する場合は、指定されたトレーニング データに基づいて、ユーザーが特定のアイテムにどのように反応するかが計算されます。When you predict ratings, the model calculates how a user will react to a particular item, given the training data. そのため、スコアリング用の入力データには、ユーザーと評価する項目の両方を指定する必要があります。The input data for scoring must provide both a user and the item to rate.

  1. トレーニング済みの推奨モデルをパイプラインに追加し、それを [Trained SVD recommender](トレーニング済み SVD レコメンダー) に接続します。Add a trained recommendation model to your pipeline, and connect it to Trained SVD recommender. モデルは、SVD レコメンダーのトレーニング モジュールを使用して作成する必要があります。You must create the model by using the Train SVD Recommender module.

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

  3. 予測の対象とするデータを追加し、それを [Dataset to score](スコアリングするデータセット) に接続します。Add the data for which you want to make predictions, and connect it to Dataset to score.

    モデルが評価を予測するには、入力データセットにユーザーと項目のペアが含まれている必要があります。For the model to predict ratings, the input dataset must contain user-item pairs.

    データセットの 3 列目に、ユーザーと項目のペア (1 列目と 2 列目) に対する評価を含めることもできます。The dataset can contain an optional third column of ratings for the user-item pair in the first and second columns. もっとも、この 3 列目は予測に際して無視されます。But the third column will be ignored during prediction.

  4. パイプラインを実行します。Run the pipeline.

評価予測の結果Results for rating predictions

出力データセットにはユーザー、項目、各入力のユーザーと項目について予測される評価の 3 つの列が含まれています。The output dataset contains three columns: users, items, and the predicted rating for each input user and item.

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

ユーザーに対して項目を推奨するには、ユーザーと項目の一覧を入力として指定します。To recommend items for users, you provide a list of users and items as input. このデータを基に、モデルは既存の項目とユーザーに関するナレッジを使用して、各ユーザーにとって魅力のある項目のリストを生成します。From this data, the model uses its knowledge about existing items and users to generate a list of items with probable appeal to each user. 返される推奨項目の数はカスタマイズできます。You can customize the number of recommendations returned. また、項目を推奨するのに必要な過去の推奨件数に関してしきい値を設定することもできます。And you can set a threshold for the number of previous recommendations that are required to generate a recommendation.

  1. トレーニング済みの推奨モデルをパイプラインに追加し、それを [Trained SVD recommender](トレーニング済み SVD レコメンダー) に接続します。Add a trained recommendation model to your pipeline, and connect it to Trained SVD recommender. モデルは、SVD レコメンダーのトレーニング モジュールを使用して作成する必要があります。You must create the model by using the Train SVD Recommender module.

  2. 特定のユーザー リストに対して項目を推奨するには、 [Recommender prediction kind](レコメンダーの予測の種類)[Item Recommendation](項目の推奨) に設定します。To recommend items for a list of users, set Recommender prediction kind to Item Recommendation.

  3. [Recommended item selection](推奨項目の選択) では、スコアリング モジュールを運用環境で使用するのか、それともモデルの評価に使用するのかを指定します。For Recommended item selection, indicate whether you're using the scoring module in production or for model evaluation. 値は次のいずれかを指定してください。Choose one of these values:

    • [From All Items](すべての項目から) :Web サービスや運用環境で使用するパイプラインを設定する場合は、このオプションを選択します。From All Items: Select this option if you're setting up a pipeline to use in a web service or in production. このオプションを選択すると、"運用モード" が有効になります。This option enables production mode. モジュールは、トレーニング中に確認されたすべての項目を基に、推奨項目を生成します。The module makes recommendations from all items seen during training.

    • [From Rated Items (for model evaluation)](評価された項目から (モデル評価用)) :モデルが開発中またはテスト中の場合は、このオプションを選択します。From Rated Items (for model evaluation): Select this option if you're developing or testing a model. このオプションを選択すると、"評価モード" が有効になります。This option enables evaluation mode. モジュールは、評価された入力データセット内の項目だけを基に、推奨項目を作成します。The module makes recommendations only from those items in the input dataset that have been rated.

    • [From Unrated Items (to suggest new items to users)](評価されていない項目から (ユーザーに新しい項目を提案する)) :このオプションは、モジュールにトレーニング データセット内のまだ評価されていない項目だけを基に推奨項目を作成してほしい場合に選択します。From Unrated Items (to suggest new items to users): Select this option if you want the module to make recommendations only from those items in the training dataset that have not been rated.

  4. 予測の対象となるデータセットを追加し、それを [Dataset to score](スコア付けするデータセット) に接続します。Add the dataset for which you want to make predictions, and connect it to Dataset to score.

    • [From All Items](すべての項目から) の場合には、入力データセットの構成が 1 列になっている必要があります。For From All Items, the input dataset should consist of one column. これには、推奨項目の提示を受けるユーザーの識別子が含まれます。It contains the identifiers of users for which to make recommendations.

      データセットに追加で項目の識別子と評価の 2 列を含めることもできますが、それら 2 つの列は無視されます。The dataset can include an extra two columns of item identifiers and ratings, but these two columns are ignored.

    • [From Rated Items (for model evaluation)](評価された項目から (モデル評価用)) の場合には、入力データセットがユーザーと項目のペアで構成されている必要があります。For From Rated Items (for model evaluation), the input dataset should consist of user-item pairs. 1 列目にはユーザー識別子が含まれている必要があります。The first column should contain the user identifier. 2 列目には、対応する項目の識別子が含まれている必要があります。The second column should contain the corresponding item identifiers.

      データセットの 3 列目にユーザーと項目の評価を含めることもできますが、その列は無視されます。The dataset can include a third column of user-item ratings, but this column is ignored.

    • [From Unrated Items (to suggest new items to users)](評価されていない項目から (ユーザーに新しい項目を提案する)) の場合には、入力データセットがユーザーと項目のペアで構成されている必要があります。For From Unrated Items (to suggest new items to users), the input dataset should consist of user-item pairs. 1 列目にはユーザー識別子が含まれている必要があります。The first column should contain the user identifier. 2 列目には、対応する項目の識別子が含まれている必要があります。The second column should contain the corresponding item identifiers.

    データセットの 3 列目にユーザーと項目の評価を含めることもできますが、その列は無視されます。The dataset can include a third column of user-item ratings, but this column is ignored.

  5. [Maximum number of items to recommend to a user](ユーザーに推奨される項目の最大数) :各ユーザーについて返される項目の数を入力します。Maximum number of items to recommend to a user: Enter the number of items to return for each user. モジュールが既定で提示する項目の数は 5 つです。By default, the module recommends five items.

  6. [Minimum size of the recommendation pool per user](ユーザーごとのレコメンデーション プールの最小サイズ) :過去に何回推奨されている必要があるかを示す値を入力します。Minimum size of the recommendation pool per user: Enter a value that indicates how many prior recommendations are required. 既定では、このパラメーターが 2 に設定されています。これは、その項目が少なくとも他の 2 人のユーザーによって推奨されている必要があることを意味します。By default, this parameter is set to 2, meaning at least two other users have recommended the item.

    このオプションは、評価モードでスコアリングする場合にのみ使用してください。Use this option only if you're scoring in evaluation mode. [From All Items](すべての項目から) または [From Unrated Items (to suggest new items to users)](評価されていない項目から (ユーザーに新しい項目を提案する)) を選択した場合、このオプションは使用できません。The option is not available if you select From All Items or From Unrated Items (to suggest new items to users).

  7. [From Unrated Items (to suggest new items to users)](評価されていない項目から (ユーザーに新しい項目を提案する)) の場合は、Training Data という名前の 3 つ目の入力ポートを使用して、既に評価済みの項目を予測結果から削除します。For From Unrated Items (to suggest new items to users), use the third input port, named Training Data, to remove items that have already been rated from the prediction results.

    このフィルターを適用するには、元のトレーニング データセットを入力ポートに接続します。To apply this filter, connect the original training dataset to the input port.

  8. パイプラインを実行します。Run the pipeline.

項目のレコメンデーション結果Results of item recommendation

SVD レコメンダーのスコアリングによって返されたスコア付きのデータセットには、各ユーザーに対して推奨される項目の一覧が示されます。The scored dataset returned by Score SVD Recommender lists the recommended items for each user:

  • 1 列目には、ユーザーの識別子が含まれます。The first column contains the user identifiers.
  • それ以降の列は、 [Maximum number of items to recommend to a user](ユーザーに推奨する項目の最大数) で設定した値に応じて生成されます。A number of additional columns are generated, depending on the value that you set for Maximum number of items to recommend to a user. 各列には、推奨される項目が含まれます (識別子順)。Each column contains a recommended item (by identifier). 推奨項目の順序は、ユーザーと項目のアフィニティに基づいて決まります。The recommendations are ordered by user-item affinity. アフィニティが最も高い項目が、 [項目 1] の列に配置されます。The item with highest affinity is put in column Item 1.

警告

このスコア付きデータセットをレコメンダーの評価モジュールを使用して評価することはできません。You can't evaluate this scored dataset by using the Evaluate Recommender module.

テクニカル ノートTechnical notes

この SVD レコメンダーを使ったパイプラインがある場合に、モデルを運用環境に移行する際には、レコメンダーを評価モードで使用する場合と運用モードで使用する場合との間に大きな違いがあることに注意してください。If you have a pipeline with the SVD recommender, and you move the model to production, be aware that there are key differences between using the recommender in evaluation mode and using it in production mode.

評価を行うには、本来、テスト セット内のグラウンド トゥルースに照らして検証できる予測が必要になります。Evaluation, by definition, requires predictions that can be verified against the ground truth in a test set. レコメンダーを評価する際には、テスト セット内の評価済み項目のみを予測する必要があります。When you evaluate the recommender, it must predict only items that have been rated in the test set. これにより、予測される値が制限されることになります。This restricts the possible values that are predicted.

モデルを運用化する場合には、最適な予測結果を得るために、予測モードを変更し、考えられるすべての項目に基づいてレコメンデーションを実行するのが通常の流れです。When you operationalize the model, you typically change the prediction mode to make recommendations based on all possible items, in order to get the best predictions. これらの予測の多くについては、対応するグラウンド トゥルースがありません。For many of these predictions, there's no corresponding ground truth. そのため、レコメンデーションの精度をパイプライン操作中と同じ方法で検証することはできません。So the accuracy of the recommendation can't be verified in the same way as during pipeline operations.

次のステップNext steps

Azure Machine Learning で使用できる一連のモジュールを参照してください。See the set of modules available to Azure Machine Learning.