MicrosoftAzureのMachineLearingのチュートリアルをやってみた

#チュートリアル
Microsoft AzureのMachineLearingのチュートリアルをやってみました。
ドキュメントの一部翻訳が変だったり、設定方法が変わっていたので、手順をまとめてみました。
今回は事前に用意された自動車に関するサンプルデータを用いて自動車の価格の予測を行います。

ドキュメントにはもう少し詳しい説明が書かれているので、一緒に見ながら進めるとわかりやすいと思います。
http://azure.microsoft.com/ja-jp/documentation/articles/machine-learning-create-experiment/


#準備
まずはAzureポータルへログインし、MLワークスペースの作成を行います。
![スクリーンショット 2015-03-04 11.13.22.png](https://qiita-image-store.s3.amazonaws.com/0/52904/d212226d-5078-40d0-8e60-86c56e787b3e.png)

作成後にML Studioにサインインします。
![スクリーンショット 2015-03-04 11.13.46.png](https://qiita-image-store.s3.amazonaws.com/0/52904/1b473a71-3468-18e3-9f63-e770e3a1f2a7.png)

左下のNEWボタンをクリックして、「Blank Experiments」を選択します。
![スクリーンショット 2015-03-04 11.17.56.png](https://qiita-image-store.s3.amazonaws.com/0/52904/99590359-26d0-2ee8-7a13-b85f5dab438c.png)


#データの下準備
画面上部のタイトルを入力します。ここでは「自動車価格の予想」としておきます。
![スクリーンショット 2015-03-07 9.30.23.png](https://qiita-image-store.s3.amazonaws.com/0/52904/b5bce30e-7c0e-56be-c134-51ffff3a601f.png)

使うデータを用意します。
検索窓にAutomobileと打ち込み、「Automobile price data」を実験キャンバスに移動します。
![スクリーンショット 2015-03-07 12.52.02.png](https://qiita-image-store.s3.amazonaws.com/0/52904/d50be1e0-7cdd-4da5-1e50-2d5b0b93efcf.png)


「Automobile price data」下部のボタンを右クリックし、「visualize」をクリックすると、データの内容が見れます。
自動車メーカーや燃費、サイズ、価格などのデータが存在していることがわかります。
![スクリーンショット 2015-03-07 12.53.09.png](https://qiita-image-store.s3.amazonaws.com/0/52904/c4a45793-aa6b-9e26-3ce9-498986f92212.png)


このデータをもとに分析を行うために、欠損値の処理や分析対象のカラムの設定を行っていきます。
まずは、不要な列の削除を行います。「Project Columns」を検索し、キャンバスへ移動して、最初に設定した「Automobile price data (Raw)」と接続します。
![スクリーンショット 2015-03-07 12.55.41.png](https://qiita-image-store.s3.amazonaws.com/0/52904/5bbc4847-a022-e675-e7f3-ff0ca6bc15af.png)

画面右側の「Properties」から「Launch column selector」を起動し、「Begin With ALL columns」、「Exclude columns normalized-losses」と設定します。
一旦ここでRunをクリックして処理を実行すると、「Project Columns」の「visualize」が見れるようになります。
「normalized-losses」列が削除されたことを確認できると思います。
![スクリーンショット 2015-03-07 13.01.14.png](https://qiita-image-store.s3.amazonaws.com/0/52904/f25018e8-32b7-ec62-fcba-30335bb8986d.png)

次に欠損値の含まれた行を削除します。
「Missing Values Scrubber」をキャンバスに移動して、「Project Columns」に接続します。
![スクリーンショット 2015-03-07 13.01.54.png](https://qiita-image-store.s3.amazonaws.com/0/52904/9dced77b-6693-99e4-028f-e2f481212834.png)

画面右側の「Properties」で「For missing values」を「remove entire row」とします。
![スクリーンショット 2015-03-07 13.04.12.png](https://qiita-image-store.s3.amazonaws.com/0/52904/6e1eb757-1a25-c494-5588-00744bf53f06.png)

Runをクリックして処理を実行し、「visualize」でデータを見ると欠損値のある行が削除されて、行数が減っていることがわかります。

これで分析の前の処理が完了しました。

#分析
次に分析対象とする列を選択します。
上記と同様に「Project Columns」をキャンバスへ移動し、「Missing Values Scrubber」と接続します。
![スクリーンショット 2015-03-07 13.08.56.png](https://qiita-image-store.s3.amazonaws.com/0/52904/dff70399-922a-dec3-9409-281c96cde9b8.png)


画面右側の「Properties」から「Launch column selector」を起動し、「Begin With No columns」、
「include column names」を選択して、必要な列名を選択していきます。
![スクリーンショット 2015-03-07 13.12.51.png](https://qiita-image-store.s3.amazonaws.com/0/52904/2b965040-1cc0-e0de-adc9-b54d3f03ddd6.png)

次に学習用データとテスト用データに分割するために、「split」をキャンバスへ設定します。
振り分け割合を設定するために「Fraction of rows in the first」を75%と設定します。
![スクリーンショット 2015-03-07 13.15.11.png](https://qiita-image-store.s3.amazonaws.com/0/52904/ec71456c-8c55-9d6f-a2eb-ebd263ebf6ff.png)

学習アルゴリズムは線形回帰を使うので、「Linear Regression」と
学習するためのモジュール「Train Model」をキャンバスへ設置します。「Train Model」を「Linear Regression」と「 Split
」に接続します。
![スクリーンショット 2015-03-07 13.17.54.png](https://qiita-image-store.s3.amazonaws.com/0/52904/0fbba6eb-e74b-d13b-74fe-5eb5e41a383e.png)

今回は価格を予想するので、「Train Model」の「Properties」から「Launch column selector」を開き「price」を選択します。
![スクリーンショット 2015-03-07 13.18.37.png](https://qiita-image-store.s3.amazonaws.com/0/52904/bada6b13-d39d-ba08-9a46-a29b5916c28d.png)

モデルに基づいて決定されて価格を評価するために「Score Model」をキャンバスへ設定して、
「Train Model」に接続します。
![スクリーンショット 2015-03-07 13.22.58.png](https://qiita-image-store.s3.amazonaws.com/0/52904/f45964d3-47d7-30a8-419e-200b99731e6c.png)

ここでRunを実行して、「Score Model」の「visualize」を見ると、予測された値「Scored Labels」が表示されるようになりました。
![スクリーンショット 2015-03-07 13.25.31.png](https://qiita-image-store.s3.amazonaws.com/0/52904/be6b36bb-5574-7456-a186-b73ad1de1463.png)

予測の精度を確認するために「Evaluate Model」をキャンバスへ設置して、「Score Model」へ接続します。
Runを実行して、「Evaluate Model」の「visualize」を見ると、「統計値」が表示されます。
![スクリーンショット 2015-03-07 13.27.27.png](https://qiita-image-store.s3.amazonaws.com/0/52904/8f6a29cc-f0ce-50eb-d3f3-40c7016f2ed7.png)

#モデルの保存

モデルに納得できたならば学習したモデルを保存します。
「Traine model」の下部ボタンをクリックして、「Save as trained Model」をクリックします。
![スクリーンショット 2015-03-07 13.28.26.png](https://qiita-image-store.s3.amazonaws.com/0/52904/b23f962f-d66d-f5b4-98ae-f56375412d80.png)

このモデルを名前をつけて保存します。
![スクリーンショット 2015-03-07 13.29.07.png](https://qiita-image-store.s3.amazonaws.com/0/52904/67c97c5e-415c-70d5-24d0-eca7f98eb5c2.png)

「Linear Regression」と「Train Model」を削除して、上記で作成したモデルに置き換えます。
![スクリーンショット 2015-03-07 13.33.06.png](https://qiita-image-store.s3.amazonaws.com/0/52904/b0b2b1aa-e125-506f-a647-bd64b98ebf99.png)


#WEBサービスの設定
上記の分析モデルを実際にWEBサービスとして使用する設定を行っていきます。
「Web Service Input」「Web Service Output」をそれぞれ、「Score Model」の上下に接続して、Runを実行します。
![スクリーンショット 2015-03-07 13.36.12.png](https://qiita-image-store.s3.amazonaws.com/0/52904/cd455d1a-da86-8193-6673-6352f5661362.png)

最後に「Publish Web Service」をクリックすると、「web services」の画面へ移動します。
![スクリーンショット 2015-03-07 13.37.29.png](https://qiita-image-store.s3.amazonaws.com/0/52904/e969e443-38c5-77e1-d9d9-2e35be470004.png)

testを押すと、入力画面ができるので、データを入力すると予測した結果が返されます。
「price」は0など適当なデータを入力します。
![スクリーンショット 2015-03-07 13.40.38.png](https://qiita-image-store.s3.amazonaws.com/0/52904/5dffddc7-bce9-0258-45d3-9058a9c4eabe.png)

計算が終わると、データが帰ってきます。今回の場合は、12396.94..という予測値になりました。
![スクリーンショット 2015-03-07 13.40.05.png](https://qiita-image-store.s3.amazonaws.com/0/52904/d60037c4-9d2b-8dcf-e4b8-6c79c0c5e0ac.png)