ollが凄い件について

DBCLSのバイトでSVM-Light Support Vector Machineを使っていたんだけど、計算が一時間とかでは終わらなくなってきたので、気軽に実験できなくなってきていた。「この素性は効くのかなあ」とか出し入れして実験したい自分としては、気軽に実験できないのは致命的(少サンプルでやれ)。もう少し早くできるものはないかなーと思って、自分のブクマを漁っていたら、岡野原さんが作られたollがあった。

OLL は様々なオンライン学習をサポートした機械学習ライブラリであり、特に自然言語処理など、大規模、かつ疎な学習問題に最適化されています。これらのオンライン学習手法は速度面、作業領域面で非常に効率的(学習サンプル数、素性種類数に比例)でありながら、SVMsやMEsなどのバッチ学習と同程度の精度を達成します。

Google Code Archive - Long-term storage for Google Code Project Hosting.

週末に試してみたところ、上に書いてある通りで

  • 計算時間がものすごーく短縮された
  • SVMと学習結果はほとんど変わらない

という素晴しい結果。オンライン学習++*1

ただ、「学習させた後に実際に分類したい!」っていう時に

+1 0:1.0 201:2.2 744:-0.3 15:3.0
-1 47:2.0 66:0.1 733:1.0 500:1.0
+1 3:1.0 201:2.2 300:-0.3 15:0.35
+1 4:2.0 103:0.4 405:-0.3 11:1.5

ではなく、SVMLightのような

0 0:1.0 201:2.2 744:-0.3 15:3.0
0 47:2.0 66:0.1 733:1.0 500:1.0
0 3:1.0 201:2.2 300:-0.3 15:0.35
0 4:2.0 103:0.4 405:-0.3 11:1.5

形で持っておけたらなーと思った。まあ、oll_testではaccuracyまで出してくれるような形になっているから、そういうので持っておきたかったら自分で書けということかな。

あと、画像データのような密なデータでやるとどうなるかも実験してみたいところ。ちなみに今学期は画像認識特論という講義を履修しています。

*1:そういえば、インターンの時は(速度のこともあるけど)違った需要からオンライン学習を使っていた