TPTブログ

テックポート株式会社のブログです。 技術情報や製品・サービス情報、 また未経験社員がデータサイエンティストを 目指す奮闘記など、更新していきます。

Microsoft Azure Machine Learning Studioを使ってみる②

f:id:tbtech:20191018111310p:plain
前回に続いて、「Microsoft Azure Machine Learning Studio」について
より詳しく知るために、今回は自分で一からモデルを作っていこう!
と、試行錯誤してみましたが、難しぃぃ( ノД`)

ということで、まずはAzure AI ギャラリーでお手本を見て学ぼうと思います٩(ˊᗜˋ*)و

自動車価格予測

Car price prediction Experiment | Azure AI Gallery
まずはとっても初歩的なこちらの回帰問題から見てみます。
右にある「スタジオで開く」から作業スペースへ移動します。
f:id:tbtech:20191029145729p:plain

ブロックの数も少なく、シンプルな構造になっています。
f:id:tbtech:20191029145633p:plain

前処理

それでは1つ目のブロックから順番に見ていきます。
まずはデータのブロックがあるので、データを視覚化して確認します。
左上(赤枠)を見ると、このデータは行数が205、列数が26だと分かります。
説明変数には、車毎のメーカーや馬力等があり、右端に目的変数の価格があります。
f:id:tbtech:20191029160753p:plain

2つ目のブロックは「Select Columns in Dataset(データセットのカラム選択)」です。
ここでは「normalized-losses 」という列が不要のため、それ以外の列を選択します。
この方法以外にも「normalized-losses 」を除外するという操作でも同様に選択できます。
f:id:tbtech:20191029163702p:plain

3つ目のブロックは「Clean Missing Data」です。
これは欠損値除去をするもので、今回は欠損値を含む行を全て削除します。
除去だけでなく置き換えもPropertiesのCleaning modeから選択できます。
f:id:tbtech:20191030153721p:plain

4つ目のブロックは「Split Data」です。
このブロックではtrainとtestデータに分割することが出来ます。
PropertisでSplitting modeをSplit Rows(行で分割)
その下はtrainデータの割合を0.7に設定し、Randomized split(ランダムに分割)に
チェックを入れ、Random seedの値を設定します。
f:id:tbtech:20191029171716p:plain

モデルの学習

5つ目のブロックは「Linear Regression」です。
ここからは前処理は終わってモデルの学習に入っていきます。
PropertisでSolution method(最適化手法)はOrdinary Least Squares(最小二乗法)に
L2 regularization weight(L2正則化のパラメータ)は0.001に設定しています。
f:id:tbtech:20191029172524p:plain

6つ目のブロックは「Train Model」です。
このブロックではLabel column(説明変数の列)を設定します。
なので、この場合はpriceを選択します。
f:id:tbtech:20191030145203p:plain
「Split Date」ブロックの左下の矢印からはtrainデータを渡します。
「Linear Regression」ブロックも繋ぎます。
次に「Split Date」ブロックの右矢印からtestデータを「Score Model」へ渡します。
「Train Model」の結果を同様に「Score Model」へ渡します。
f:id:tbtech:20191030144537p:plain

モデルの評価

7つ目のブロックは「Score Model」です。
trainデータ用いた学習結果を基に、testデータで価格の予測を行います。
Propertiesには「Append score columns to output」(出力結果にスコア列を追加するか)を選択できます。
f:id:tbtech:20191030150320p:plain
ここで一度RUN(実行)をして結果を見てみます。
実行が完了できたら「Score Model」ブロックを右クリックして、視覚化します。
Price(実測値)の右隣にScored Labels(予測値)が表示されています。
f:id:tbtech:20191030161542p:plain

8つ目のブロックは「Evaluate Model」です。
「Score Model」の結果を評価します。Propertiesでの設定はありません。

最後のブロックまで確認が終わりましたので、再度初めから実行します。
結果は先程と同様に「Evaluate Model」を右クリックで視覚化します。
Mean Absolute Error(平均絶対誤差)、Root Mean Squared Error(二乗平均平方根誤差)、Relative Absolute Error(早退絶対誤差)、Relative Squared Error(相対二乗誤差)、Coefficient of Determination(決定係数)や、エラー数をヒストグラムで表してくれます。
f:id:tbtech:20191030162642p:plain

まとめ

モデルの構築方法を確認してみて、
コードでは一見すると構成や、エラー箇所も分かり辛いですが
この方法では視覚的にとても分かりやすいので、コードを書く手間だけでなく
可視化や修正も時間短縮になると思いました(*^^*)
コードがより複雑になれば、よりその利点を生かせるのかなと思うので
次回は高度なモデル構築もお手本を見ながら勉強したいです。
また、メリットだけでなくデメリットも見つけられたら良いなと思います。