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:そういえば、インターンの時は(速度のこともあるけど)違った需要からオンライン学習を使っていた