#1.概要
ML.NETのモデルビルダーの使い方を解説します。
前回の続きになります。
【動作環境】
- Windows 10 Home(1903)
- VisualStudio2019 v16.5.2
- .NetCore v2.2, v3.1
- ML.NET Model Builder(Preview) v16.0.2003.302
【事前準備】
ModelBuilderのインストール方法からモデルビルダーをインストールする
#2.モデルビルダーとは
統計データを準備し、予測したい項目を指定するだけで、最適なアルゴリズムとソースコードが自動で生成できるツールです。
生成されたソースコードはML.NETが提供する基本的な機能を網羅しており、モデルの生成からデータの予測までの一連の流れを実行することができます。
以下は、ML.NETでのワークフローになります。
上の図では「データの読み込み」→「パイプラインの作成(アルゴリズム指定)」→「学習」→「評価」の順に処理されます。
「学習」の結果はZIPファイルで学習モデルが保存され、下の図では学習モデルを展開し予測が行われます。
#3.統計データの準備
モデルビルダーでソースを作る前にデータを準備しておきます。
データの読み込み方法のところに適当なCSVデータがありますので、とってきてデータを足します。
2レコードだけのデータではデータ量が少なく、モデルビルダーでエラーとなるためデータを足しています。
以下のデータを任意の場所に「data.csv」で保存してください。
Size (Sq. ft.), HistoricalPrice1 ($), HistoricalPrice2 ($), HistoricalPrice3 ($), Current Price ($)
700, 100000, 3000000, 250000, 500000
1000, 600000, 400000, 650000, 700000
1200, 700000, 300000, 700000, 800000
1400, 800000, 200000, 750000, 900000
1600, 900000, 100000, 800000, 1000000
1600, 1000000, 200000, 900000, 1100000
1600, 1000000, 200000, 900000, 1100000
■データの説明
5カラムあり、そのうち「Current Price」が今回予測したいデータとしています。
「Current Price」以外は入力データとし、データは適当な値になります。
シナリオとしては、以下のINデータからOUTデータを予測する統計的な回帰を行います。($は省略)
IN:Size, HistoricalPrice1, HistoricalPrice2, HistoricalPrice3
OUT:Current Price
#4.モデルビルダーの作成
モデルビルダーでデータを取り込み、ソースコードを作成する手順を説明していきます。
コンソールアプリ上で実装する場合を想定します。
#5 アプリ起動
二つのプロジェクトが追加されました。
- MLNetSample1ML.ConsoleApp
- MLNetSample1ML.Model
「MLNetSample1ML.ConsoleApp」は所定のワークフローを実行する手順が記述されています。
「MLNetSample1ML.Model」は読み込んだ「data.csv」のデータ構造が記述されています。
「MLNetSample1ML.ConsoleApp」プロジェクトのMain関数を外部から関数コールできるようpublicに変更し、作成した「MLNetSample1」プロジェクトからMain関数をコールすれば起動できるようになります。
Predicted Current_Priceの箇所が予測結果のデータです。
結果はNaNが返ってきていますが、データ量が増やせば正しい予測値が返ってくると思います。
#6 まとめ
モデルビルダーを使い、ソースコードを自動で生成する方法をみてきました。
今回のシナリオは回帰データを予測する場合のソースコードを作成しましたが、分類や推薦といった他のシナリオも存在します。
データさえ整備すれば、データの予測や分類、検知などを行う処理が作れるので一度試してみてはどうでしょうか?