忍者ブログ
Slic3rの設定についてまとめてます。Slic3rの日本語版が見当たらなかったので、使い方をまとめました。 最近はC#のメモ帳代わりになってます。

機械学習の学習日記 | Microsoft Azure Machine Learning サンプル3と同じ内容

Microsoft Azure Machine Learning サンプル3を見ながら触ってみた。
サンプル3はどうも2 クラスのパターン識別器を作っているみたいなんですが、同じ処理を別のデータでやってみました。


データ作成

とりあえず、アヤメの識別。元のデータはいつものこれ
class列の定義は、

@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica}

こんな感じでしたが、これを少しいじって、

@ATTRIBUTE Iris-setosa {TRUE,FALSE}
@ATTRIBUTE Iris-versicolor {TRUE,FALSE}
@ATTRIBUTE Iris-virginica {TRUE,FALSE}
こんな風に変更。これで、Azure ML のProject Columns モジュールで不要な部分を削除してあげれば、特定の種別か否かの2クラスパターンなるんで識別できるのではないかと。
一部抜粋して表にするとこんな感じ。
sepallength
sepalwidth petallength petalwidth Iris-setosa Iris-versicolor Iris-virginica
5.1 3.5 1.4 0.2 TRUE FALSE FALSE
4.9 3 1.4 0.2 TRUE FALSE FALSE
4.7 3.2 1.3 0.2 TRUE FALSE FALSE

データの読み込み

Data Input and Output > Reader でファイルを読み込む。使い方はこちら
データソースはあらかじめ適当なサーバーにアップしてあります。


プロパティは、こんな感じ。URLプロパティには、アップロードしておいたファイルのURLを適切に入力。
実行して、結果をVisualizeで確認する。

読み込めました。

データを削除する。

2クラスのパターン認識なので、Iris-setosa、Iris-versicolor、Iris-virginicaのいずれか一つを求める対象とします。求める対象以外は一旦削除します。因みにIris-setosa、Iris-versicolor、Iris-virginicaの値をTRUE,FALSEとしていますが、2クラスにすれば良いはずなので、〇、×でも問題無いはずです。
Data Transformation > Manipulation > Project Columns で行を削除する。使い方はこちら

とりあえず、Iris-virginicaを求める対象とします。そこで、Iris-versicolor、Iris-setosaを削除します。

実行して、結果をVisualizeで確認する。


必要な列以外が削除されました。後で、Iris-versicolorやIris-setosaを求める対象とする場合は、このモジュールを変更する。

学習モジュールと評価モジュール

評価モジュールはここでは、Cross Validate Modelとします。(まだこれしか分からないです。)
Cross Validate Modelの使い方はこちら
Cross Validate Modelには、データセットと学習モジュールを入力すれば良い。sample3を覗いてみたら、Two-Class XXXを学習モジュールとして使用できそうでしたので、適当につなげてみました。各学習モジュールについてはおいおい勉強するとして、ここではとにかく結果を取るところまで。

こんな感じで接続すればOK。
Cross Validate ModelのプロパティでIris-virginica列を指定する。このプロパティが求める対象になります。
 
他にもいくつか繋げてみる。

  • Two-Class Support Vector Machine
  • Two-Class Locally-Deep Support Vector Machine
  • Two-Class Averaged Perceptron
  • Two-Class Neural Network
  • Two-Class Boosted Decision Tree
  • Two-Class Logistic Regression
各モジュールにはそれぞれプロパティがあるけどわからないのでそのまま。
必要なことは、それぞれのCross Validate ModelのプロパティでIris-virginica列を指定する事。

結果をみる

ここで表示している内容については、Cross Validate ModelEvaluation resultsを参考に。
それぞれCross Validate Modelの平均を見てみる。
この場合、どこに注目すれば良いのか分からないけど、とりあえずF-Scoreでいいのかな。

Two-Class Support Vector Machine

Accuracy Precision Recall F-Score AUC
0.926667 0.942929 0.956434 0.946198 0.987727

Two-Class Locally-Deep Support Vector Machine

Accuracy Precision Recall F-Score AUC
0.966667 0.990909 0.963217 0.97595 0.996

Two-Class Averaged Perceptron

Accuracy Precision Recall F-Score AUC
0.953333 0.9625 0.973217 0.96587 0.993727

Two-Class Neural Network

Accuracy Precision Recall F-Score AUC
0.933333 0.920524 0.990909 0.951057 0.993727

Two-Class Boosted Decision Tree

Accuracy Precision Recall F-Score AUC
0.94 0.959318 0.954126 0.955455 0.989727

Two-Class Logistic Regression

Accuracy Precision Recall F-Score AUC
0.94 0.935909 0.980909 0.954127 0.994


ところで

各学習モジュールはそれそれ勉強するとして、この結果をどう言う方向に調整すれば良いんだろか?結局教師付データの性能を上げても意味ないわけでしょ?未知のデータに対する能力(汎化能力)は上の指標で判断したらまずいよな。
!!?
そういえば、Cross Validate Modelの結果に標準偏差も出てたな。


関連記事