embeddedなブログ

組み込みシステムに関することや趣味に関することをダラダラと書いていきます(^^)

Microsoft Azure Machine Learningで機械学習をはじめて使う(その2)

2015-03-02 20:57:29 | Windows Embedded Standard

Azure Machine Learningで提供されているサンプル[Predictive Maintenance Model]を使って機械学習の体験をはじめました。前回は学習を始める前の状態まで進みましたので、今回、さっそく学習から再開したいと思います。

まず、早速ですが、学習を実行します。画面したの方にある[RUN]をクリックします。すると、次のように画面右上の方に「Running (xx:xx:xx)」という表示がされ、その横で進行状態を表す円げぐるぐると周りはじめます。

このRunning状態のときに、[Train Model]の学習が実行され、そして、学習が完了したら、学習が完了した、[Train Model]モジュールを識別器として使って実際にデータ入力をしながら[Score Model]でテストが実施されます。

学習とテストが完了すると、「Running (xx:xx:xx)」が「Finished running」になります。この時間は学習の複雑さなどにより大きくことなり、長いと数十分以上かかります。今回のサンプルの場合は1分程度で完了しました。

それでは、学習の結果を見てみたいと思います。[Logistic Regression Classifier]モジュールに接続されている[Train Model]モジュールの辺の中央下にある●をクリックすると下のようにコンテキストメニューが表示されますので、[Visualize]をクリックします。

学習の結果、Two-Class Logistic Regressionの設定値と求められたパラメータ一覧が表示されます。

設定値の詳細については、こちらを参照願います。また、パラメータですが、「Feature Weights」以降が学習の結果として決定されたパラメータで、下記数式の重みw0~wnを表します。

y=w0+w1・x1+w2・x2+w3・x3....+wn・xn

Biasがw0、w1が-2.81441でx1がSensor#32のデータ、w2が2.61515でx2がSensor#131のデータという具合に割り当てて計算します。 ただし、実際に計算する際はシグモイド関数という関数を使って結果が0~1の間の確立になるよう計算を行う必要があります。これらの詳細については、例えば、こういうページなどを参照してみてください。

次に、テストの結果を見てみたいと思います。[Logistic Regression Classifier]モジュール~[Train Model]モジュールに接続されている[Score Model]モジュールの辺の中央下にある●をクリックすると下のようにコンテキストメニューが表示されますので、[Visualize]をクリックします。

この[Score Model]で実行されたテスト結果一覧が表示されます。

この一覧でどこか見たい行をクリックすると、その行の詳細な数値を確認することが出来ます。

最後に、[Evaluate Model]モジュールにて、テスト結果の集計を確認します。[Evaluate Model]モジュールの辺の中央下にある●をクリックすると下のようにコンテキストメニューが表示されますので、[Visualize]をクリックします。

集計結果として、この識別器の性能を表したROC曲線が表示されます。

ROC曲線とは、横軸にFalse Positive(FP: 負例を間違って正例と識別してしまった)の割合,縦軸にTrue Positive(TP: 正例を正しく正例と識別出来た)の割合をとって描いた曲線です。(0,0)-(1,1)を結ぶ直線が乱数により識別したときの線で、これよりも上に結果の曲線があればよいことになります。理想の曲線は100%の識別率となる線で、(TP,FP)としたときに(0,0)-(0,1)-(1,1)を結ぶ直線です。ここに近づけば近づくほど精度の高い識別器ということになります。実際のTPなどの下図は下の方に数値が記載されています。

ところで、このサンプルでは、[Two-Class Boosted Decision Tree]と[Logistic Regression Classifier]の2つの識別器に学習をさせて、それぞれの結果を比較した曲線となっています。[Two-Class Boosted Decision Tree]が「Scored datasheet」の方の曲線、[Logistic Regression Classifier]が「Scored datasheet to compare」の方の曲線となります。 どちらの識別器がどちらの曲線なのかは、[Evaluate Model]モジュールの入力端子付近にマウスを持っていくと、下図のようにどちらの曲線かが表示されます。

ROC曲線で比較した結果では「Scored datasheet to compare」の[Logistic Regression Classifier]が僅かに良い結果となっています。

いかがでしたでしょうか? 私も今回、初めてMicrosoft Azure Machine Learningを使ってみたのですが、グラフィカルに機械学習のモジュールを接続することが出来、学習からテスト、デプロイ(デプロイは今回説明はしていません)まで簡単で直観的な操作で実行し、ビジュアルに確認がで出来るため、ひじょうに効率的な機械学習を使ったシステム構築が出来そうです。 特に、私たちのように組み込み開発を得意とする人間にとって、自分たちで開発したIoTデバイスを使ってその効果を手軽に試すことが出来ます。 クラウドベースの開発になるため、デプロイすればそのままお客様のところでデモをすることも可能です。ぜひ、活用してみたいと思います。


最新の画像もっと見る