rb-libsvm で遊ぶ

投稿者: | 2015年9月5日

rb-libsvm

Rubyでは一番更新されているlibsvmライブラリ。内部にlibsvmを梱包している(別途libsvmをインストールしない)という特徴がある。他にffiを使うrsvmや、swigを使うlibsvm-ruby-swigがある。

カーネル関数

RBFカーネルを使用すればよいらしい。データの数に比べて特徴量が圧倒的に多い場合は線形カーネルを考慮する。

パラメータの調節

こちらの資料→SVM実践ガイドを読むと、
(1) スケール調整を行う
(2) RBFカーネルを使う
(3) 交差検定を行い、適切なパラメータcとγを設定する
という方法がコツとのこと。

Iris スケール調整なし 交差検定によるc, γ調節なし

しかし、それらのアドバイスは忘れたことにして、スケール調整なし、交差検定によるc,γ調節なし、の一番簡単な方法で実行。
まあ公式exampleを書き直しただけなんですけどね。。

{true=>147, false=>3}

最初から十分に満足できる結果が出てきた。日常生活のお供として活用する分には十分な性能だよこれは。97%が99%になったら研究者は嬉しいかも知れないけれども、実生活では97%もあれば順風満帆でであると言える。

Iris スケール調整あり 交差検定によるc, γ調節あり

一応アドバイス通りにやってみた。せっかくRubyなのでNyaplotのヒートマップ使ってみた。どんな処理でも簡単にマルチプロセスになってしまうParallelすごい。しかし、なんだか結果が怪しい。どこか間違っている気配が濃厚。

fig

Irisの場合は、最初から正解率が高いので、いまいち有り難みがわからない。しかもcが大きいと、計算にそれなりに時間がかかる。

コメントを残す

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