マッチボックス レコメンダーのトレーニング
重要
Machine Learning Studio (クラシック) のサポートは、2024 年 8 月 31 日に終了します。 その日までに、Azure Machine Learning に切り替えすることをお勧めします。
2021 年 12 月 1 日以降、新しい Machine Learning Studio (クラシック) リソースは作成できません。 2024 年 8 月 31 日まで、既存の Machine Learning Studio (クラシック) リソースを引き続き使用できます。
- ML Studio (クラシック) から Azure Machine Learning への機械学習プロジェクトの移動に関する情報を参照してください。
- Azure Machine Learning についての詳細を参照してください。
ML Studio (クラシック) のドキュメントは廃止予定であり、今後更新されない可能性があります。
マッチボックス アルゴリズムを使用してベイジアン レコメンダーをトレーニングします
カテゴリ: Machine Learning/トレーニング
注意
適用対象: Machine Learning Studio (クラシック)のみ
類似のドラッグ アンド ドロップ モジュールは Azure Machine Learning デザイナーで使用できます。
モジュールの概要
この記事では Machine Learning Studio (クラシック) でマッチボックスレコメンダーのトレーニングモジュールを使用して、推奨モデルをトレーニングする方法について説明します。
Machine Learning の推奨アルゴリズムは、 Microsoft Researchによって開発されたmatchboxモデルに基づいています。 アルゴリズムの詳細が記載されている用紙をダウンロードするには、 Microsoft Research サイトのこちらのリンクをクリックしてください。
[マッチボックス レコメンダーのトレーニング] モジュールは、ユーザー項目の評価 3 要素のデータセットと、オプションで一部のユーザーと項目の特徴を読み取ります。 トレーニング済みのマッチボックス レコメンダーを返します。 その後、トレーニング済みのモデルを使用して、 スコアマッチボックスレコメンダー モジュールを使用して、推奨設定の生成、関連ユーザーの検索、または関連項目の検索を行うことができます。
ヒント
このチュートリアルでは、.NET 開発チームから、推奨システムを構築するためのエンドツーエンドのエクスペリエンスについて理解しておく必要があるすべての情報について説明します。 アプリケーションから Machine Learning を呼び出す方法について、サンプルコードとその説明を示します。
推奨モデルと Matchbox レコメンダーの詳細
レコメンデーション システムの主な目的は、システムのユーザーに対して 1 つ以上の項目を推奨することです。 項目の例として、映画、レストラン、本、曲などがあります。 ユーザーは、個人、個人のグループ、または項目の好みがあるその他のエンティティにすることができます。
レコメンダー システムには、主に 2 つのアプローチがあります。
- 1 つ目は、コンテンツベースのアプローチです。これは、ユーザーと項目の両方の特徴を利用します。 ユーザーは、年齢や性別などのプロパティによって記述できます。また、項目は作成者や製造元などのプロパティによって記述される場合があります。 コンテンツベースのレコメンデーション システムの一般的な例は、出会い系のサイトです。
- 2 番目の方法は協調フィルタリングです。このフィルターでは、ユーザーと項目の識別子のみを使用し、ユーザーが項目に対して指定した (疎な) 評価マトリックスから、これらのエンティティについての暗黙的な情報を取得します。 ユーザーについての情報は、そのユーザーが評価した項目や、同じ項目を評価した他のユーザーから学ぶことができます。
Matchbox レコメンダーは、コンテンツベースのアプローチでコラボレーションフィルターを使用して、これらのアプローチを組み合わせます。 したがって、ハイブリッド レコメンダーと考えることができます。
このしくみは次のとおりです。ユーザーがシステムの比較的初心者である場合は、ユーザーに関する特徴の情報を使用することによって予測が向上します。このようにしてよく知られた "コールド スタート" の問題に対処します。 ただし、特定のユーザーから十分な数の評価を収集した後は、これらのユーザーに対して、その特徴だけではなく特定の評価に基づいて完全に個人的な予測を行うことができます。 そのため、コンテンツベースの推奨事項から協調フィルタリングに基づく推奨事項へのスムーズな移行があります。 ユーザーまたは項目の特徴を使用できない場合でも、マッチボックスは協調フィルタリング モードで動作します。
matchbox レコメンダーとその基になる確率論的アルゴリズムの詳細については、関連する研究論文「 matchbox: Large Scale ベイジアンおすすめおすすめ」を参照してください。 さらに、 Machine Learning ブログには、推奨アルゴリズムの概要を説明している「おすすめ」というタイトルの記事があります。
マッチボックスレコメンダーを構成する方法
データを準備する
モジュールを使用する前に、データを推奨モデルで想定される形式にする必要があります。 ユーザー、項目、評価を表す 3 つの要素のトレーニング データセットが必要ですが、ユーザーの特徴と項目の特徴 (入手可能な場合) を別々のデータセットに含めることもできます。
ソースデータをトレーニングデータセットとテストデータセットに分割するには、データの分割モジュールのレコメンダー splitオプションを使用します。
ユーザー、項目、評価の必須データセット
トレーニングに使用する入力データに適切な形式のデータが含まれていることが非常に重要です。
- 最初の列には、ユーザーの識別子が含まれている必要があります。
- 2 番目の列には、項目の識別子が含まれている必要があります。
- 3 番目の列には、ユーザーと項目のペアの評価が含まれています。 評価の値は、数値またはカテゴリにする必要があります。
トレーニング中、評価の値を同じにすることはできません。 さらに、数値の場合、最小と最大の評価の値の差は100より小さく、理想的には20を超えることはできません。
Machine Learning Studio (クラシック) のレストラン評価データセット ([保存されたデータセット]、[サンプル] の順にクリック) は、予期される形式を示しています。
userID | placeID | 評価 |
---|---|---|
U1077 | 135085 | 2 |
U1077 | 135038 | 2 |
このサンプルから、1 人のユーザーが 2 つの異なるレストランを評価したことがわかります。
ユーザーの特徴のデータセット (オプション)
ユーザーの特徴のデータセットには、ユーザーの識別子を含める必要があります。また、ユーザー、項目、評価のデータセットの最初の列に指定されていたものと同じ識別子を使用します。 その他の列には、ユーザーを表す特徴がいくつ含まれていてもかまいません。
例については、Machine Learning Studio (クラシック) のレストラン顧客データセットを参照してください。 一般的な一連のユーザー機能は次のようになります。
userID | アンビエンス | Dress_preference | transport | smoker |
---|---|---|---|---|
U1004 | family | informal | フィートに | FALSE |
U1005 | friends | [優先設定なし] | 車両所有者 | TRUE |
項目の特徴のデータセット (オプション)
項目の特徴のデータセットでは、最初の列に項目の識別子が含まれている必要があります。 その他の列には、項目を説明する特徴がいくつ含まれていてもかまいません。
例については、Machine Learning Studio (クラシック) に用意されているレストラン機能のデータセットを参照してください ([保存されたデータセット]、[サンプル] の順にクリックします)。 一般的な一連の項目機能 (この場合は、商品がレストラン) は次のようになります。
placeID | アルコール | Smoking_area | price | ランビジェンス |
---|---|---|---|---|
135106 | Wine-Beer | なし | low | family |
132667 | No_Alcohol_Served | 許可 | 中 | カジュアル |
モデルをトレーニングする
Studio ( クラシック) で Matchbox Recommender のトレーニング モジュールを実験に追加し、トレーニング データに接続します。
ユーザーの特徴または項目の特徴の個別のデータセットがある場合は、それらを Train Matchbox Recommender モジュールに接続 します。
ユーザーの特徴のデータセット:ユーザーを記述するデータセットを 2 番目の入力に接続します。
項目の特徴のデータセット:項目を記述するデータセットを 3 番目の入力に接続します。
[ トレーニング バッチの数] に、トレーニング中にデータを分割するバッチの数を入力します。
この値に基づいて、ユーザー項目評価トリプルのデータセットは、トレーニング中に複数の部分またはバッチに分割されます。
Train Matchbox Recommender はバッチを並列で実行します。トレーニング データ全体がメモリに収まる場合は、トレーニング バッチの数を使用可能なコアの数に設定することをお勧めします。 それ以外の場合は、トレーニング バッチの数を、トレーニング データがメモリに収まる使用可能なコア数の最小倍数に設定する必要があります。
既定では、トレーニング データは 4 つのバッチに分割されます。 ユーザー項目評価のトリプルのデータセットだけが分割されます。 機能を分割する必要はないので、ユーザーまたは項目の特徴は分割されない。
[ 特性の数] に、ユーザーと項目ごとに学習する必要がある潜在的特徴の数を入力します。
特徴の数が多いほど、通常は予測の精度が高くなります。ただし、トレーニングは遅くなります。 通常、特徴の数は 2 ~ 20 の範囲内です。
[ 推奨事項アルゴリズムの反復回数] で、アルゴリズムが入力データを処理する回数を指定します。
Matchbox recommender は、入力データを複数回反復処理できるメッセージパッシング アルゴリズムを使用してトレーニングされます。 この数値が大きいほど、予測が正確になります。ただし、トレーニングは遅くなります。 通常、イテレーションの数は 1 ~ 10 の範囲内です。
実験を実行するか、 Matchbox Recommender のトレーニング モジュールを選択し、[選択した 実行] を選択します。
例
レコメンド モデルを Machine Learningで使用する方法の例については、次のサンプル実験を参照Azure AI Gallery。
- 映画レコメンダー サンプル: レコメンド モデルを使用してトレーニング、評価、スコア付けを行う方法を示します。
テクニカル ノート
このセクションには、実装の詳細、ヒント、よく寄せられる質問への回答が含まれています。
使用上のヒント
特徴列に欠損値がある場合は、欠損値の代わりとして非欠損値のモードが使用されます。
すべてのユーザーと項目の特徴は、単位の長さを持つまで再スケーリングされ、その最大絶対値は 1 になります。 その低密度を維持できるよう、特徴の値に変換は適用されません。
制限
レコメンド モデルのオンライン更新 (または継続的トレーニング) は、現在、Machine Learning。 推奨事項に対するユーザーの応答をキャプチャし、それを使用してモデルを改善する場合は、完全なモデルを定期的に再トレーニングしてください。 増分トレーニングは実行できないが、スライディング ウィンドウをトレーニング データに適用して、最新のデータを使用しながらデータ量を最小化することができます。
Recommender のメモリ使用量の見積もり
現在、Matchbox 16 * N\(4\T + 2\R)
のメモリ フットプリントの下限はバイトです。N はトレーニング データセット内のユーザー項目評価の 3 倍、T は潜在的特徴の数、R は (トレーニング データセット内の) 最小と最大の評価の差を指します。
シリアル化された Matchbox recommender 16 * T\(U\R + I + X + Y)
モデルのサイズは約バイトで、 U はユーザーの数、 I は項目の数、 X はユーザーの特徴の数、 Y は項目の特徴の数を指します。
想定される入力
名前 | 型 | 説明 |
---|---|---|
ユーザー項目の評価 3 要素のトレーニング データセット | データ テーブル | 3 つの要素 (ユーザー、項目、評価) として表現される、ユーザーごとの項目の評価 |
ユーザーの特徴のトレーニング データセット | データ テーブル | ユーザーを記述する特徴を含むデータセット (省略可能) |
項目の特徴のトレーニング データセット | データ テーブル | 項目を記述する特徴を含むデータセット (省略可能) |
モジュールのパラメーター
名前 | Range | Type | Default | 説明 |
---|---|---|---|---|
特徴の数 | >=0 | Integer | 10 | 推奨ユーザーで使用する特性の数を指定します (省略可能) |
レコメンデーション アルゴリズムのイテレーションの数 | >=1 | Integer | 5 | 推奨モデルのトレーニング中に実行するイテレーションの最大数を指定します (省略可能) |
トレーニング バッチの数 | >=1 | Integer | 4 | Recommender で使用するトレーニング バッチの数を指定する (省略可能) |
出力
名前 | 型 | 説明 |
---|---|---|
トレーニング済みのマッチボックス レコメンダー | ILearner インターフェイス | トレーニング済みのマッチボックス レコメンダー |
例外
例外 | 説明 |
---|---|
エラー 0022 | 入力データセットで選択された列の数が、予想される数と等しくない場合、例外が発生します。 |
エラー 0036 | 特定のユーザーまたは項目に対して複数の特徴ベクターが提供された場合、例外が発生します。 |
エラー 0018 | 入力データセットが有効でない場合、例外が発生します。 |
エラー 0035 | 特定のユーザーまたは項目に対して特徴が提供されなかった場合、例外が発生します。 |
エラー 0034 | 特定のユーザーと項目のペアに対して複数の評価が存在する場合、例外が発生します。 |
エラー 0053 | マッチボックス レコメンデーションにユーザーの特徴や項目がない場合に、例外が発生します。 |
エラー 0003 | 1 つまたは複数の入力が null または空の場合、例外が発生します。 |
Studio (クラシック) モジュールに固有のエラーの一覧については、「エラー コードMachine Learning参照してください。
API の例外の一覧については、「エラー コードMachine Learning REST API参照してください。