ワイドかつディープなレコメンダーのスコア付け
この記事では、Azure Machine Learning デザイナーのワイドかつディープなレコメンダーのスコアリング コンポーネントを使用して、Google によるワイドおよびディープ ラーニングに基づいて、トレーニングされた推奨モデルを基礎とした予測を作成する方法について説明します。
ワイドかつディープなレコメンダーでは、次の 2 種類の予測を生成できます。
2 番目の種類の予測を作成する場合は、運用モードまたは評価モードのどちらかで使用できます。
運用モードでは、すべてのユーザーまたは項目が考慮されます。これは通常、Web サービスで使用されます。 トレーニング中に確認されたユーザーだけでなく、新しいユーザーのスコアも作成できます。
評価モードは、評価できるユーザーや項目を絞り込んだうえで動作し、通常は実験中に使用されます。
ワイドレコメンダーとディープレコメンダーとその基礎理論の詳細については、関連する研究論文「 全体とレコメンダーシステムのディープ ラーニングを参照してください。
ワイドかつディープなレコメンダーのスコア付けを構成する方法
このコンポーネントでは、複数の種類のレコメンデーションがサポートされており、それぞれで要件が異なります。 使用するデータの種類と、作成するレコメンデーションの種類に対応するリンクをクリックしてください。
評価を予測する
評価を予測する場合は、指定されたトレーニング データに基づいて、特定のユーザーが特定のアイテムにどのように反応するかが計算されます。 そのため、スコアリング用の入力データには、ユーザーと評価する項目の両方を指定する必要があります。
トレーニング済みのワイドかつディープな推奨モデルを実験に追加して、トレーニング済みのワイドかつディープな推奨モデルに接続します。 ワイドかつディープなレコメンダーのトレーニングを使用して、モデルを作成する必要があります。
[Recommender prediction kind]\(レコメンダー予測の種類\) : [Rating Prediction]\(評価の予測\) を選択します。 その他のパラメーターは必要ありません。
予測の対象となるデータを追加し、それを [Dataset to score]\(スコア付けするデータセット\) に接続します。
評価を予測するには、入力データセットにユーザーと項目のペアが含まれている必要があります。
データセットの 3 列目に、ユーザーと項目のペア (1 列目と 2 列目) に対する評価を含めることもできすが、予測中には 3 列目は無視されます。
(省略可能)。 ユーザーの特徴のデータセットを保持している場合は、それを [User features]\(ユーザーの特徴\) に接続します。
ユーザーの特徴のデータセットでは、最初の列にユーザー識別子が含まれている必要があります。 その他の列には、性別、基本設定、場所など、ユーザーを特徴付ける値が含まれている必要があります。
トレーニング データセット内の項目を評価したユーザーの特徴は、トレーニングの間に既に学習されているので、ワイドかつディープなレコメンダーのスコア付けでは無視されます。 そのため、事前にデータセットをフィルター処理して、コールド スタート ユーザー (どの項目も評価していないユーザー) だけを含めます。
警告
ユーザーの特徴を使用せずにモデルがトレーニングされた場合は、スコア付けの間にユーザーの特徴を導入することはできません。
項目の特徴のデータセットを保持している場合は、それを [Item features]\(項目の特徴\) に接続できます。
項目の特徴データセットでは、最初の列に項目の識別子を含める必要があります。 その他の列には、項目を特徴付ける値を含める必要があります。
トレーニング データセット内の評価された項目の特徴は、トレーニングの間に既に学習されているので、ワイドかつディープなレコメンダーのスコア付けによって無視されます。 そのため、データセットのスコア付けをコールド スタートの項目 (どのユーザーにも評価されていない項目) に限定します。
警告
項目の特徴を使用せずにモデルがトレーニングされた場合は、スコア付けの間に項目の特徴を導入することはできません。
実験を実行します。
評価予測の結果
出力データセットには 3 つの列が含まれていて、1 列目にはユーザー、2 列目には項目、3 列目には、各ユーザーと項目に対して予測される評価が示されます。
さらに、スコア付けの間に次の変更が適用されます。
- 数値のユーザーまたは項目の特徴列では、欠損値は、欠損していないトレーニング セット値の平均に自動的に置き換えられることに注意してください。 カテゴリ型の特徴では、欠損値は、この特徴の有効値以外の同じカテゴリ型の値に置き換えられます。
- 低密度を維持するために、特徴の値に変換は適用されません。
項目を推奨する
ユーザーに対して項目を推奨するには、ユーザーと項目の一覧を入力として指定します。 このデータを基に、モデルは既存の項目とユーザーに関するナレッジを使用して、各ユーザーにとって魅力のある項目のリストを生成します。 返されるレコメンデーションの数をカスタマイズし、レコメンデーションの生成に必要な過去のレコメンデーション数のしきい値を設定することもできます。
トレーニング済みのワイドかつディープな推奨モデルを実験に追加して、トレーニング済みのワイドかつディープな推奨モデルに接続します。 ワイドかつディープなレコメンダーのトレーニングを使用して、モデルを作成する必要があります。
特定のユーザー リストに対して項目を推奨するには、 [Recommender prediction kind]\(レコメンダー予測の種類\) を [Item Recommendation]\(項目の推奨\) に設定します。
推奨項目の選択: スコア付けコンポーネントを運用環境で使用するのか、それともモデルの評価に使用するのかを指定します (次のいずれかの値を選択します)。
- [From Rated Items (for model evaluation)]\(評価された項目から (モデル評価用)\) :モデルを開発またはテストしている場合は、このオプションを選択します。 このオプションを選択すると評価モードが有効になります。コンポーネントは、評価された入力データセット内の項目からのみ、レコメンデーションを作成します。
- [From All Items]\(すべての項目から\) :Web サービスや運用環境で使用するために実験を設定している場合は、このオプションを選択します。 このオプションを選択すると運用モードが有効になり、トレーニング中に確認されたすべての項目からレコメンデーションが作成されます。
- [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) : このオプションは、コンポーネントにトレーニング データセット内のまだ評価されていない項目だけを基に推奨項目を作成してほしい場合に選択します。
予測の対象となるデータセットを追加し、それを [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 列目にユーザーと項目の評価を含めることもできますが、その列は無視されます。
(省略可能)。 ユーザーの特徴のデータセットを保持している場合は、それを [User features]\(ユーザーの特徴\) に接続します。
ユーザーの特徴データセットの最初の列には、ユーザー識別子が含まれている必要があります。 その他の列には、性別、基本設定、場所など、ユーザーを特徴付ける値が含まれている必要があります。
項目を評価したユーザーの特徴は、トレーニングの間に既に学習されているので、これらの特徴はワイドかつディープなレコメンダーのスコア付けによって無視されます。 そのため、事前にデータセットをフィルター処理して、コールド スタート ユーザー (どの項目も評価していないユーザー) のみを含めることができます。
警告
ユーザーの特徴を使用せずにモデルがトレーニングされた場合は、スコア付けの間に特徴の適用を利用することはできません。
(省略可能) 項目の特徴のデータセットを保持している場合は、それを [Item features]\(項目の特徴\) に接続できます。
項目の特徴データセットの最初の列には、項目識別子を含める必要があります。 その他の列には、項目を特徴付ける値を含める必要があります。
評価された項目の特徴は、トレーニングの間に既に学習されているので、これらの特徴はワイドかつディープなレコメンダーのスコア付けによって無視されます。 そのため、データセットのスコア付けをコールド スタートの項目(どのユーザーにも評価されていない項目) に限定できます。
警告
項目の特徴を使用せずにモデルがトレーニングされた場合は、スコア付けのときに項目の特徴を使用しないでください。
[Maximum number of items to recommend to a user]\(ユーザーに推奨される項目の最大数\) :各ユーザーについて返される項目の数を入力します。 既定では、5 つの項目が推奨されます。
[Minimum size of the recommendation pool per user]\(ユーザーごとのレコメンデーション プールの最小サイズ\):必須の事前レコメンデーション数を示す値を入力します。 既定では、このパラメーターは 2 に設定されています。これは、少なくとも他の 2 人のユーザーによって項目が推奨されている必要があることを意味します。
このオプションは、評価モードでスコア付けする場合にのみ使用してください。 [From All Items]\(すべての項目から\) または [From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) を選択した場合、このオプションは使用できません。
[From Unrated Items (to suggest new items to users)]\(評価されていない項目から (ユーザーに新しい項目を提案する)\) の場合は、Training Data という名前の 3 つ目の入力ポートを使用して、既に評価済みの項目を予測結果から削除します。
このフィルターを適用するには、元のトレーニング データセットを入力ポートに接続します。
実験を実行します。
項目のレコメンデーション結果
ワイドかつディープなレコメンダーのスコア付けによって返されたスコア付きのデータセットには、各ユーザーに対して推奨される項目の一覧が示されます。
- 1 列目には、ユーザーの識別子が含まれます。
- それ以降の列は、 [Maximum number of items to recommend to a user]\(ユーザーに推奨される項目の最大数\) で設定した値に応じて生成されます。 各列には、推奨される項目が含まれます (識別子順)。 レコメンデーションはユーザーと項目のアフィニティを基準に並べ替えられ、最もアフィニティの高い列が [Item 1]\(項目 1\) の列に配置されます。
テクニカル ノート
このセクションでは、ワイドかつディープなレコメンダーを使用した予測の作成に関してよく寄せられるいくつかの質問への回答を示します。
コールドスタート ユーザーとレコメンデーション
通常、レコメンデーションを作成するために、ワイドかつディープなレコメンダーのスコア付けコンポーネントでは、ユーザー ID を含め、モデルをトレーニングするときに使用したものと同じ入力を必要とします。 これは、トレーニング中にこのユーザーに関して学習されたかどうかが、アルゴリズムによって認識されている必要があるためです。
ただし、新しいユーザーの場合、ユーザー ID がわからず、年齢、性別など、一部のユーザーの特徴のみがわかっていることがあります。
システムを初めて使用するユーザーの場合でも、"コールドスタート ユーザー" として処理することで、そのユーザーに対するレコメンデーションを作成できます。 そのようなユーザーの場合、レコメンデーション アルゴリズムでは、過去の履歴や以前の評価は使用されず、ユーザーの特徴のみが使用されます。
予測の目的のために、コールドスタート ユーザーは、トレーニングには使用されていない ID を持つユーザーとして定義されます。 ID がトレーニングに使用される ID と一致しないことを保証するために、新しい識別子を作成できます。 たとえば、指定した範囲内でランダムな ID を生成したり、コールド スタート ユーザー用に前もって一連の ID を割り当てたりすることができます。
ただし、ユーザーの特徴のベクトルなどの協調フィルタリング データがない場合は、分類または回帰学習器を使用することをお勧めします。
ワイドかつディープなレコメンダーの運用環境での使用
ワイドかつディープなレコメンダーを使用して実験してから、モデルを実稼働環境に移行する場合は、レコメンダーを使用する場合の評価モードと実稼働モードでの以下の主な違いを意識してください。
評価を行うには、本来、テスト セット内のグラウンド トゥルースに照らして検証できる予測が必要になります。 そのため、レコメンダーを評価する際には、テスト セットで評価された項目のみを予測する必要があります。 これにより、予測される値が制限されることになります。
ただし、モデルを運用化する場合は通常、最適な予測結果を得るために、予測モードを変更し、考えられるすべての項目に基づいてレコメンデーションを実行します。 これらの予測では多くの場合、対応するグラウンド トゥルースがないため、レコメンデーションの精度を実験中と同じように検証することはできません。
実稼働環境でユーザー ID を指定せず、特徴ベクトルのみを指定する場合は、応答として、候補となる全ユーザーに関するすべてのレコメンデーションの一覧が取得される可能性があります。 ユーザー ID は必ず指定してください。
返されるレコメンデーションの数を制限するために、返される最大項目数をユーザーごとに指定することもできます。
次のステップ
Azure Machine Learning で使用できる一連のコンポーネントを参照してください。