前回に続いて、「Microsoft Azure Machine Learning Studio」について
より詳しく知るために、今回は自分で一からモデルを作っていこう!
と、試行錯誤してみましたが、難しぃぃ( ノД`)
ということで、まずはAzure AI ギャラリーでお手本を見て学ぼうと思います٩(ˊᗜˋ*)و
自動車価格予測
Car price prediction Experiment | Azure AI Gallery
まずはとっても初歩的なこちらの回帰問題から見てみます。
右にある「スタジオで開く」から作業スペースへ移動します。
ブロックの数も少なく、シンプルな構造になっています。
前処理
それでは1つ目のブロックから順番に見ていきます。
まずはデータのブロックがあるので、データを視覚化して確認します。
左上(赤枠)を見ると、このデータは行数が205、列数が26だと分かります。
説明変数には、車毎のメーカーや馬力等があり、右端に目的変数の価格があります。
2つ目のブロックは「Select Columns in Dataset(データセットのカラム選択)」です。
ここでは「normalized-losses 」という列が不要のため、それ以外の列を選択します。
この方法以外にも「normalized-losses 」を除外するという操作でも同様に選択できます。
3つ目のブロックは「Clean Missing Data」です。
これは欠損値除去をするもので、今回は欠損値を含む行を全て削除します。
除去だけでなく置き換えもPropertiesのCleaning modeから選択できます。
4つ目のブロックは「Split Data」です。
このブロックではtrainとtestデータに分割することが出来ます。
PropertisでSplitting modeをSplit Rows(行で分割)
その下はtrainデータの割合を0.7に設定し、Randomized split(ランダムに分割)に
チェックを入れ、Random seedの値を設定します。
モデルの学習
5つ目のブロックは「Linear Regression」です。
ここからは前処理は終わってモデルの学習に入っていきます。
PropertisでSolution method(最適化手法)はOrdinary Least Squares(最小二乗法)に
L2 regularization weight(L2正則化のパラメータ)は0.001に設定しています。
6つ目のブロックは「Train Model」です。
このブロックではLabel column(説明変数の列)を設定します。
なので、この場合はpriceを選択します。
「Split Date」ブロックの左下の矢印からはtrainデータを渡します。
「Linear Regression」ブロックも繋ぎます。
次に「Split Date」ブロックの右矢印からtestデータを「Score Model」へ渡します。
「Train Model」の結果を同様に「Score Model」へ渡します。
モデルの評価
7つ目のブロックは「Score Model」です。
trainデータ用いた学習結果を基に、testデータで価格の予測を行います。
Propertiesには「Append score columns to output」(出力結果にスコア列を追加するか)を選択できます。
ここで一度RUN(実行)をして結果を見てみます。
実行が完了できたら「Score Model」ブロックを右クリックして、視覚化します。
Price(実測値)の右隣にScored Labels(予測値)が表示されています。
8つ目のブロックは「Evaluate Model」です。
「Score Model」の結果を評価します。Propertiesでの設定はありません。
最後のブロックまで確認が終わりましたので、再度初めから実行します。
結果は先程と同様に「Evaluate Model」を右クリックで視覚化します。
Mean Absolute Error(平均絶対誤差)、Root Mean Squared Error(二乗平均平方根誤差)、Relative Absolute Error(早退絶対誤差)、Relative Squared Error(相対二乗誤差)、Coefficient of Determination(決定係数)や、エラー数をヒストグラムで表してくれます。
まとめ
モデルの構築方法を確認してみて、
コードでは一見すると構成や、エラー箇所も分かり辛いですが
この方法では視覚的にとても分かりやすいので、コードを書く手間だけでなく
可視化や修正も時間短縮になると思いました(*^^*)
コードがより複雑になれば、よりその利点を生かせるのかなと思うので
次回は高度なモデル構築もお手本を見ながら勉強したいです。
また、メリットだけでなくデメリットも見つけられたら良いなと思います。