Cortana Intelligence Suiteを構築（第6回）- Azure Machine Learningを使ってデータを予測してみる（機械学習モデル構築編）

#概要
今回は[Cortana Intelligence Suiteを構築（第5回）](URL http://qiita.com/taiki_yoshida/items/8426131b4e4b4033c0b6)で設定した、Azure Machine Learning環境を使って、機械学習モデルを構築してみます。

#事前に準備するもの
* Azure サブスクリプション
* [Cortana Intelligence Suiteを構築（第5回）](URL http://qiita.com/taiki_yoshida/items/8426131b4e4b4033c0b6)で作成したAzure Machine Learning環境

#設定手順

##データの加工
まず、東京メトロの運航データと気象データを繋げ合わせる必要があります。

###SQLクエリモジュール「Apply SQL Transformation」を使う
1. [Cortana Intelligence Suiteを構築（第5回）](URL http://qiita.com/taiki_yoshida/items/8426131b4e4b4033c0b6)で作成したAzure Machine Learning環境を[Azure ML Studio](URL http://studio.azureml.com)から開きます。

2. 「Data Transformation」カテゴリーの「Manipulation」から「Apply SQL Transformation」をドラッグ＆ドロップで移動します。「Import Data」からつなげます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/7c592071-9aec-6521-ea85-946cd9ec0a03.png)

3. 画面右側の「SQL Query Script」内にクエリを入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/56fbdbcf-340b-5400-e597-872e8a205e05.png)


###天気予報のデータを取り込み

1. [Cortana Intelligence Suiteを構築（第5回）](URL http://qiita.com/taiki_yoshida/items/8426131b4e4b4033c0b6)で作成した天気予報のCSVファイルを取り込みます。New > DATASET > FROM LOCAL FILEの順にクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c582c543-2623-0d56-5a41-0e352fc0c2f2.png)

2. ローカルに保存した、「weather-data.csv」のファイルを選択します。「SELECT A TYPE FOR THE NEW DATASET」の項目には、「Generic CSV File with a header (.csv)」を選択し、ヘッダーがついているCSVであることを指定します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/1722c17b-7809-3843-e51e-39cb47220bdc.png)

3. 追加した気象データを追加します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/cd38cdfd-33f3-7d43-fed4-70abfe384f08.png)

4. 「Data Transformation」カテゴリーの「Manipulation」から「Apply SQL Transformation」をドラッグ＆ドロップで移動します。「weather-data.csv」からつなげます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/40ab45b5-0dbd-95ec-330e-4e8077f2bb1d.png)

5. 「Data Transformation」>「Manipulation」>「Join Data」のモジュールを移動し、それぞれの「Apply SQL Transformation」をつなげます。これで天気予報と電車遅延のデータが合体しました。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/7ad6cae0-ed35-ddbf-8e93-84e5e468c15a.png)

###機械学習モデルの作成
いよいよ機械学習モデルを作成します！
1. 「Data Transformation」>「Manipulation」>「Select Columns in Dataset」を追加し、学習対象とする項目を必要な項目のみにします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/e5ccc0e6-260d-d491-2d5e-3f88f163c713.png)

2. 今回は、「Time」、「railway」、「delay」、「temperature」、「weather」で学習モデルを作成してみます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/5d0c26e0-bbd6-11e5-c213-a01279925a8f.png)

3. 学習用のデータと、後程モデルを試すためのデータに分けるため、「Split Data」を追加します。割合は「0.7」にして、学習データを7割にしましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/ddd4db3c-881b-8fe5-35c2-969d0b461b29.png)

4. 機械学習モデルを選択します。今回は、遅延時間を予測してみたいので、「Machine Learning」>「Initialize Model」>「Regression」から「Boosted Decision Tree Regression」を追加してみます。この段階でいったん「Run」を押しておきましょう。後ほど項目を選択したいときにより作業がやりやすくなります。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/4d70e322-e24c-abfc-8910-1e5647223e30.png)

5. 「Machine Learning」>「Train」から「Train Model」を追加し、対象のデータと学習モデルを関連付けます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/46420398-c999-54e5-08bf-9fb0684e0605.png)

6. 画面右側の「Launch column selector」を選択し、予測したい項目（今回は遅延時間を予測したいので「delay」を追加します）
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/fd9492c8-675f-5e70-e1a0-8ef2f8c638ba.png)

7. 「Machine Learning」>「Score」から「Score Model」を選び、「Train Model」と「Split Data」の2つ目の出力（テスト用データ）を関連付けます。ここで、予測結果が新たな項目「Scored Labels」として出力されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/2649b0ee-be94-0577-dfbd-ebb1a14eeeaa.png)

8. 「Machine Learning」>「Evaluate」から「Evaluate Model」を選び、学習結果を評価します。「Run」を実行してみましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/9b6bf425-43c3-b9a0-8d27-73c1fcb39f97.png)

9. 「Score Model」を右クリックし、「Scored dataset」>「Visualize」を選択すると、予測結果が目視で確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/657f3109-b1df-29d7-cade-70d522b98eae.png)
「Scored Labels」が追加された予測値の列です。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/983b3be0-f8aa-23cd-26e4-701da5698037.png)


10. 「Evaluate Model」を右クリックし、「Evaluation results」>「Visualize」を選択すると、統計的にこの学習モデルの精度が確認できます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/41fa8647-ef88-b683-9e0a-2de170a4326d.png)
Coeffient of Determinationの値が1に近ければ近いほど、精度が高いことを意味します。つまり、今回の学習結果はあまり精度の高くないモデルになってしまったということです。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/751843f5-08e1-ca40-8cab-d1c76d068af3.png)

11. 次回はこの機械学習モデルの精度の向上（この学習モデルに限らず、一般的な精度向上方法）についてお話します。お楽しみに！