Cortana Intelligence Suiteを構築（第8回）- Azure Machine Learning をウェブサービス化してリアルタイムで予測しよう！

#概要
今回は[Cortana Intelligence Suiteを構築（第7回）](URL http://qiita.com/taiki_yoshida/items/db11fb9b36c76ac50c16)で設定した機械学習モデルをウェブサービス化し、リアルタイムで予測結果を求められるようにします。

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

#設定手順

##Webサービスの発行
1. まず、[前回作成した環境](URL http://qiita.com/taiki_yoshida/items/db11fb9b36c76ac50c16)を開き、「Set up web service」>「Predictive Web Service」を選択します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/545a8c98-6e4b-055b-06be-fbefb583e34b.png)

2. 自動で作成された、「Web service input」を移動し、「Score Model」とつなげます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/b9788a89-1c1a-f588-6e9e-e777bcf44ad7.png)

3. 「Run」をクリックします。これをしないと、ウェブサービスが公開できませんのでお忘れなく。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/90bcbe57-75be-dc45-3b92-cbe0502f2587.png)

4. いよいよウェブサービスを公開します。「Deploy Web Service [Classic]」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/12bae94c-0716-3fab-7bf0-cdfa43abd2f5.png)

5. この画面が表示されていれば、公開できました。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/deffd2e1-a162-85a4-85ee-008e9d750c7c.png)

6. 実際に試してみましょう。Excelで試すのが一番わかりやすいです。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/d517cc5b-da04-ef1e-d1f3-40f515fdfdef.png)

7. 初回開くと、Excel側で警告のようなメッセージが表示されますが、問題ないので、「編集を有効にする」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/24e2adad-551d-3269-bb76-8e684de1657b.png)

8. 通常のExcelとは違い、右側にAzure Machine Learningのアドオンが表示されます。「Use sample data」をクリックすると、過去の学習データからランダムに抽出されたサンプルが表示されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/afdba70a-5721-1265-2ba9-d2c05e66b77d.png)

9. 予測結果の出力先のセルを手入力し、「Predict」をクリックすると、ウェブサービスへリクエストが送信され、予測結果を受信します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/32a06fef-50f1-aca4-c7c9-08abd56444ba.png)

10. Scored Labelsが予測された結果（遅延時間）です。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/b1243e85-676c-f180-12d3-72492520678e.png)


##Azure Web Appsを利用して、遅延時間の予測サイトを作ってみる
サイトを作るには、一からプログラムを作成する必要はありません。
主なプログラムは、AzureにWebAppsとAzure Machine Learningを連携できる専用のテンプレートが用意されているのです！

1. Azure Machine Learning Studioで発効したWebサービスを開き、こちらの画面にある「API key」からコピーして貼り付けてください。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/ae678851-0a2b-a7ca-e2a1-3c30e0dcb498.png)

2. Azure Portalを開き、「新規」をクリックします。検索バーから「Azure ML Request-Response Service Web App」と入力するとテンプレートが表示されるのでそれを選択し、「作成」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/9298abf4-ecf7-d390-5513-8c5ad28b2af2.png)

3. 各パラメータを入力し、「作成」をクリックします。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/be04c50c-823e-e239-772d-af38687598f5.png)

4. 作成されたウェブアプリはすでにアクセス可能な状態です。実際にアクセスしてみましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/290ea8d3-7d1b-5999-8209-c72447a35903.png)

5. 初回起動時は設定画面が表示されます。ここに、Azure ML Studioで生成されたAPIのアドレスと、APIキーを入力します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/a07f4357-c529-6a45-d2df-f813e2fc3975.png)

6. APIの情報から自動的に必要な項目を取得するので、何も設定せずとも項目が用意されます。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/217cdd4c-8dbe-daff-8379-590ef159a683.png)

7. 画面右下の「Save Changes」をクリックし、保存します。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c145947c-b13a-afde-a14b-97f1a8b84e3f.png)

8. この画面が表示されたら、無事設定は完了です。「Go to Home Page」をクリックして、試してみましょう。
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/ebfc0263-e33e-e673-011f-93287dd99e67.png)

9. 予測を試してみましょう。千代田線で、天気は雨、気温は19度で12:30だったとします・・・
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/c18306bf-c983-ff54-d673-527f8a2825a6.png)

10. 「Submit」を押すと・・・結果が出ました！ 16分遅延する予想です！
![image](https://qiita-image-store.s3.amazonaws.com/0/136660/29c5ddef-440a-ae19-1e38-0e659b790b78.png)
このように非常に簡単にウェブサイトを構築し、Azure Machine Learningと連携させることができるんです。

「Cortana Intelligence Suiteを構築」シリーズ、8回までありましたが、いかがでしたでしょうか。
是非皆さんもリアルな課題で活用し、Twitter @taikiyoshhida_jp までフィードバックくださいね！