Model Builder を使用して、映画を推奨するレコメンデーション モデルをトレーニングする方法について説明します。
このチュートリアルでは、次の作業を行いました。
- データを準備して理解する
- Model Builder 構成ファイルを作成する
- シナリオを選択する
- データを読み込む
- モデルをトレーニングする
- モデルを評価する
- モデルを使用する
前提条件
前提条件の一覧とインストール手順は、モデル ビルダーのインストール ガイドを参照してください。
C# クラス ライブラリを作成する
"MovieRecommender" という C# クラス ライブラリを作成します。
データを準備して理解する
レコメンデーションの問題にアプローチするには、映画のリストを推奨する、関連作品のリストを推奨するといった複数の方法がありますが、ここでは、ユーザーが特定の映画にどのような評価 (1 - 5) を付けるかを予測して、定義したしきい値よりも高い場合にその映画を推奨します (評価が高いほど、ユーザーが特定の映画を気に入る可能性が高くなります)。
recommendation-ratings-train.csv を右クリックして、[名前を付けてリンク先を保存] または [対象をファイルに保存] を選択します。
データセット内の各行には、映画の評価に関する情報が含まれています。
| userId | movieId | 評価 | timestamp |
|---|---|---|---|
| 1 | 1 | 4 | 964982703 |
- userId: ユーザーの ID
- movieId: 映画の ID
- rating: ユーザーが映画に対して行った評価
- timestamp: レビューが行われたタイムスタンプ
Model Builder 構成ファイルを作成する
ソリューションに Model Builder を初めて追加するときに、mbconfig ファイルを作成するように求められます。 mbconfig ファイルでは、セッションを再度開けるように Model Builder で行ったすべての操作が記録されます。
- ソリューション エクスプローラーで、MovieRecommender プロジェクトを右クリックし、[追加]、[機械学習モデル] を選択します。
- ダイアログで、Model Builder プロジェクトに MovieRecommender という名前を付け、 [追加] をクリックします。
シナリオを選択する
モデルをトレーニングするには、モデル ビルダーによって提供される機械学習シナリオの一覧から選択する必要があります。
このサンプルでは、タスクが推奨されます。 Model Builder ツールのシナリオ ステップで、 [推奨] シナリオを選択します。
環境を選択する
Model Builder では、選択したシナリオに応じて異なる環境でトレーニングを実行することができます。
環境として [ローカル] を選択し、 [次のステップ] ボタンをクリックします。
データを読み込む
- Model Builder ツールのデータ ステップで、 [フォルダーの選択] テキスト ボックスの横にあるボタンを選択します。
- エクスプローラーを使用して、ダウンロードしたファイル - recommendation-ratings-train.csv を参照して選択します。
- Model Builder ツールで [次のステップ] ボタンを選択して、次のステップに進みます。
- データが読み込まれたら、 [予測する列] ドロップダウンから [評価] を選択します。
- [User column](ユーザー列) ドロップダウンから [userId] を選択します。
- [Item column](項目列) ドロップダウンから [movieId] を選択します。
モデルをトレーニングする
レコメンデーション モデルのトレーニングに使用される機械学習アルゴリズムは行列因数分解です。 Model Builder によるモデルのトレーニング プロセス中には、このアルゴリズムのさまざまな設定を使用してデータセットに最適なパフォーマンスのモデルが検出されます。
モデルのトレーニングに必要な時間は、データの量に比例します。 モデル ビルダーにより、 [Time to train (seconds)](トレーニング時間 (秒)) の既定値が、データ ソースのサイズに基づいて自動的に選択されます。
- Model Builder により、 [Time to train (seconds)](トレーニング時間 (秒)) の値は 60 秒に設定されています。 トレーニング時間が長いほど、モデル ビルダーは最良のモデルの検索の中で、より多くのアルゴリズムやパラメーターの組み合わせを調べることができます。
- [Start Training](トレーニングの開始) をクリックします。
トレーニング プロセスを通して、進捗データがトレーニングの手順の Training results セクションに表示されます。
- 状態には、トレーニング プロセスの完了ステータスが表示されます。
- Model Builder によってそれまでに検出された最高のパフォーマンスのモデルの最適な品質の決定係数です。 決定係数が低くなるほど、テスト データでモデルが正確に予測されたことになります。
- [Best algorithm](最良のアルゴリズム) には、これまでにモデル ビルダーで見つかった最良のパフォーマンスのアルゴリズムの名前が表示されます。
- [Last algorithm](最後のアルゴリズム) には、モデル ビルダーがモデルのトレーニングに最近使用したアルゴリズムの名前が表示されます。
トレーニングが完了すると、mbconfig ファイルには、トレーニング後の MovieRecommender.zip という生成されたモデルと共に 2 つの C# ファイルが含まれます。
- MovieRecommender.consumption.cs: このファイルには、モデルを読み込み、予測を行う PredictionEngine を作成するパブリック メソッド
Predictがあります。 PredictionEngine は、1 つのデータ インスタンスに対して予測を行うために便利な API です。 - MovieRecommender.training.cs: このファイルは、使用したハイパーパラメーターを含む最適なモデルを構築するために Model Builder によって考案されたトレーニング パイプラインで構成されています。
[次のステップ] ボタンをクリックして、評価ステップに移動します。
モデルを評価する
トレーニングの手順の結果が、最良のパフォーマンスだった 1 つのモデルになります。 Model Builder ツールの評価手順の [Best Model](最良のモデル) セクションには、 [モデル] エントリの最良のパフォーマンスのモデルで使用されたアルゴリズムと、 [RSquared] のそのモデルのメトリックが含まれます。
さらに、Visual Studio の [出力] ウィンドウには、上位のモデルとそのメトリックを含む概要テーブルが表示されます。
このセクションでは、1 つの予測を実行してモデルをテストすることもできます。 各特徴列の値を入力するテキスト ボックスが用意されており、 [予測] ボタンをクリックすると、最適なモデルを使用した予測が表示されます。 既定では、データセット内の最初の行が入力されます。
(省略可能) モデルを使用する
この手順では、モデルを使用するために使用できるプロジェクト テンプレートが用意されています。 この手順は省略可能であり、モデルの指定方法については、ニーズに合った方法を選択することができます。
- コンソール アプリ
- Web API
コンソール アプリ
コンソール アプリをソリューションに追加する場合、プロジェクトの名前を入力するように求めるプロンプトが表示されます。
コンソール テンプレートについて [ソリューションに追加] を選択します。
コンソール プロジェクトに MovieRecommender_Console という名前を付けます。
[ソリューションに追加] をクリックして、現在のソリューションにプロジェクトを追加します。
アプリケーションを実行します。
プログラムによって生成される出力は次のスニペットのようになります。
UserId: 1 MovieId: 1 Rating: 4 Predicted Rating: 4.577113
Web API
Web API をソリューションに追加する場合、プロジェクトの名前を入力するように求めるプロンプトが表示されます。
Web API テンプレートについて [ソリューションに追加] を選択します。
Web API プロジェクトに MovieRecommender_WebApi という名前を付けます。
[ソリューションに追加]* をクリックして、現在のソリューションにプロジェクトを追加します。
アプリケーションを実行します。
PowerShell を開き、次のコードを入力します。PORT には、アプリケーションがリッスンしているポートを入力します。
$body = @{ UserId=1.0 MovieId=1.0 } Invoke-RestMethod "https://localhost:<PORT>/predict" -Method Post -Body ($body | ConvertTo-Json) -ContentType "application/json"成功した場合、出力は次のテキストのようになります。 スコアの出力は、要求されたユーザー ID と映画 ID に対する予測評価です。
score ----- 4.577113
おめでとうございます。 これで、モデル ビルダーを使用して保健衛生違反のリスクを分類するための機械学習モデルを正常に作成できました。 このチュートリアルのソース コードは、dotnet/machinelearning-samples GitHub リポジトリにあります。
その他のリソース
このチュートリアルで説明しているトピックについて詳しくは、次のリソースを参照してください。
.NET
