Jack of all trades

master of none. 多芸は無芸を地で行く、自作自演何でも屋。

Azure Machine Learning できるとこまでやってみよう Vol.2

過去の記事はこちら↓

Azure Machine Learning できるとこまでやってみよう Vol.1 - Jack of all trades
Azure Machine Learning できるとこまでやってみよう Vol.1.5 - Jack of all trades

またしても随分間が空いてしまった…。

ということでVol.2です。今回もまだまだチュートリアル的内容ですがよろしくお願いします。

前回は簡単な予測モデルを作成して、ML Studio上で性能評価をするところまででしたが、今回は作成した学習済みのモデルを登録して、それをWeb Serviceとして公開する一連の流れを説明していきます。

学習済みモデルの保存

学習済みのtrain modelの下○をクリックして「Save as Trained Model」を選択します。
f:id:sadynitro:20150509122027p:plain

保存するモデルの名称と説明を入力して保存します。
f:id:sadynitro:20150509122036p:plain

学習済みモデルの配置

保存が完了すると、左側のメニューにある「Trained Models」に保存したモデルが表示されるようになります。
f:id:sadynitro:20150509122059p:plain

これを配置すると以下のようになります。
f:id:sadynitro:20150509122135p:plain

Web Serviceとして発行

学習済みモデルの配置が完了したら、下段の「PUBLISH WEB SERVICE」をクリックします。
f:id:sadynitro:20150509122650p:plain

すると…
f:id:sadynitro:20150509122659p:plain
なんかミヨーンと出てきます。これはWeb Service(API)として発行した際のInputとOutPutをどこに接続するか、というモジュールです。

「PUBLISH WEB SERVICE」をクリックすると自動でモジュールが生えてきますが、自分で自由に配置することもできます。
左側のメニューからWeb Serviceを開いてInputもしくはOutputモジュールをドラッグアンドドロップで配置、接続するだけです。
f:id:sadynitro:20150509122717p:plain

何はともあれ、これでWeb Serviceとして発行する準備ができました。
f:id:sadynitro:20150509122705p:plain

あとは下段の「RUN」をクリックして実行した後、「PUBLISH WEB SERVICE」をクリックすることで作成したモデルがWeb Serviceとして発行されます。
発行が完了すると以下のような画面が表示されます。
f:id:sadynitro:20150509122854p:plain

「REQUEST/RESPONSE」をクリックすると、実際にAPIを利用する際の情報が一式表示されます。
f:id:sadynitro:20150509122902p:plain

Request(もしくはResponse)のJSON
f:id:sadynitro:20150509122938p:plain

Input(もしくはOutput)のパラメータなど
f:id:sadynitro:20150509122954p:plain

さらにはプログラムから呼び出して利用する場合のサンプルコード(C#, Python, R)もあります。
f:id:sadynitro:20150509123004p:plain

またWeb Serviceのトップ画面から「TEST」ボタン(水色のヤツ)をクリックすると、この画面上でAPIの動作テストができます。
パラメータを入力して実行すると…
f:id:sadynitro:20150509123038p:plain

通知領域にResponse結果が表示されます。
f:id:sadynitro:20150509123050p:plain

その他にも「Excel Workbook」なるものが用意されています。Web Serviceのトップ画面にある「Download Excel Workbook」(Excelのアイコンがついてるやつ)をクリックすると、Excel上でパラメータを入力して、結果を受け取る仕組みが組み込まれたファイルをダウンロードできます。
f:id:sadynitro:20150509123032p:plain

コンソールアプリのサンプルコード

上記のサンプルコードを利用して、C#によるコンソールアプリのサンプルを作ってみました。バリデーションとか、JSONのパースがグズグズなのはご容赦。実際に画面から入力した値をパラメータとして投げて、受け取った結果から必要な値を取り出して画面に表示する際のサンプルです。

sadynitro/ExpectedVisitorConsole · GitHub

まとめ

以上、いかがだったでしょうか。ML StudioのGUIによる簡単操作もさることながら、Web Service発行についても実際に利用するパターンを幅広く想定したかなりの親切設計になっていると思います。RやPythonのコードが実行できるということもあり、既存の資産をAPI化するというだけでも使い道としてはありなんじゃないかと思ったりもします。

次回はクラスタリング(分類)について、何かしら面白そうな例題を作りつつ(Irisデータ使ったサンプルとかもう噛んでも味せぇへんでしょ)ML Studio上での手順ベースでお伝えできればと思っております。