今日会社で多次元のデータを2次元にクールでベストプラクティスな感じでプロットするにはどうしたらいいんだろうね、やっぱ多次元尺度構成法じゃない?的な会話をしていたのだけれども、2次元にデータを落とし込むと人間にもわかるデータになって本当におもしろいですよね。今日はその一例というか、いくつかの分類器の分類精度を2次元に
プロットした結果を示した実験結果を解説したページを紹介します。おおーこうゆうのみたかったんだよなー!と個人的にはかなりエキサイティングな感じでした。

要約というか意訳になってしまうのですが、ページに以下のように説明されています。(細かいところは訳してません)

http://home.comcast.net/~tom.fawcett/public_html/ML-gallery/pages/index.html

分類タスクの機械学習の研究では定量的な評価が重要です(精度とかACUとかね。)、で、これは分類器のアルゴリズムの振る舞いの「見える化(最近はやってますよね)」にも役立つ訳ですね。

このページでは「機械学習の分類器ギャラリー」と題して、2次元における機械学習アルゴリズムの多数の実験結果を説明します。以下に示した列ではそれぞれ違ったパターン(またはパターンセット)を示しています。使用しているデータは2次元上にランダムに
生成したポイントでX軸は0から4、Y軸は0から4の幅で、6561個のデータで構成されています。

図の右側にはアルゴリズムの種類が書いてあります。アルゴリズムの名前のところはリンクになっていて、サンプルデータが50から1000の間での分類した結果を示してあります。

このページで使用している図はgnuplotを使っていて、学習器はwekaを使っています。glue code(コーパスを作成したりするスクリプトのこと)はperlとpythonを使っています。

データセット

個人的に興味深かったものを紹介。

  • DISJUNCTIVE
  • 上記のページにDISJUNCTIVEというデータセットでの実験結果が示されています。とても分類が難しそうなデータですね!まさにSVMの出番って感じのデータセットですよね!

    1253333934-dataset

    Bayes

    bayesの各種分類器を使って分類した結果です。本当に名前通りの性格が分類結果に出ていますね、Naive! NBTreeというのはNaive Bayes + decision treeのアルゴリズムでの分類結果らしいのですが、これは比較的良さそうですね。重そうですけどね。

    1253333946-bayes

    大きい図はこちら

    SVM

    そこで、SVMですよ。カーネルトリックですよ。マージン最大化ですよ。って、あれあれあれ?あんまりよくなさそうですね。SVMRBF-100というのは、radial basis functionを使ったもので、これは結構良さそうなんですけど。SVMpoly-xというのは多項式カーネルを用いたものらしいのですが、全然だめですね!まったくうまくいってないですね!たぶん僕の個人的な予想なんです
    が、このデータのサンプル数が1000個ってうのが少なすぎる可能性があるか、うーん2次元データなのが問題なのかな。。。わからないけど、なんか特徴出ていますね。

    1253333959-svm

    大きい図はこちら

    decision tree

    なぜ、ここで決定木を例に出すの?と思われる方もいるかもしれませんが、それは僕が決定木が大好きだからです。決定木は一般的にはそんなに分類
    精度も良くないし、スピードも遅いともいわれていますが、なんといっても木を生成してくれるので人間にわかりやすいし、データマイニングに有用だから、僕は好きなのですね。なんといっても「なんでこうゆう分類結果になったの?」という非分類マニアな方
    にビジュアル的に説明できるのはとても便利。百聞は一見にしかずで、こうゆう理由で分類されたんですよ!と木を見せれば一言で説明がつく。情報利得がうんちゃらとかそういう話はしなくていいですけどね。ややこしくなるし。ちなみにSVMでの説明は地獄。

    1253333967-tree

    大きい図はこちら

    結構決定木もがんばっているではないですか!!特にRandom Forestは健闘していますね。これだけきれいに分離できるならば、やっぱりtreeも有用だなあと
    思う反面、おそらくこれはサンプルデータが少ないからだろうなあとも思う。このまま1000, 5000, 10000, 50000って続けていったらそれはそれで各分類器の特徴が如実に現れてくることだと思います。

    まとめる

    ユースケースにあわせて分類器を選択することはとても大事だと思います。

    • サンプル数の規模はどれぐらいか
    • 分類するクラスは何種類か
    • 分類に要求されるスピード
    • 学習に要求されるスピード(リアルタイムで更新してほしいならば、オンライン学習)
    • 分類結果を使う人は、専門家か、それとも非専門家か(上記で説明したように、分類結果の説明が大変)
    • メンテナンスできる人がどれほどいるか(あまりメンテナンスできる人がいない場合はnaive bayesなどの単純なアルゴリズムを選択した方が良い)

    などなど、仕事で分類器を使う場合は様々な分類器を検討しなければなりません。そのためにはそれぞれの分類器アルゴリズムの特徴を見極めていなければならないし、実験した経験も必要となります。どの分類器が一番いい!というのは無くて、それぞれいいと
    ころと悪いところがあります。このページは、そのような知識を手助けてしくれる大変有用なページだと思いました。

    エンジョイ ユア 分類ライフ
    今日から大型連休。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です