AROW は CW より幾分マシか

今話題?の AROW (Adaptive Regularization Of Weight Vectors)oll 向けの実装を見かけたので,Confidence-Weighted (CW) が Passive-Aggressive (PA)/LIBLINEAR に比べて全然ダメ (PA/LIBLINEAR: 91%, CW: 88%; Perceptron: 89%) だった例のタスク(学習/テストデータは公開中のコードに同梱してある)で,試してみた.パラメタを調整したが (c=100, 50, 10, 5, 1, 0.5, 0.1, 0.05, 0.01, 0.005, 0.001, 0.0005, I=1, 5, 10, 20, 50, 100),PA/LIBLINEAR -0.5% 程度の精度 (90.4%) しか出なかった.繰り返し回数を10回以下とかで固定すれば,AROW が PA より良くなることもありそうな感じだけど,最高精度との間に隔たりがあるところで比べてもしょうがないし,このタスクでは PA/LIBLINEAR の方が良い感じ.なお,ここで比べているのは PA-I.
しかし,CW の論文もそうだったが,Confidence を考慮した学習法は,繰り返し回数を10回以下に制限した実験しか見たことがないなぁ.実数値素性の news20.binary で少し実験した限りでは,PA/CW/AROW/LIBLINEAR 辺りの精度はほぼ同程度だったが,このタスクのように PA/LIBLINEAR の方が有意に良いケースも結構あるのではと思う.というわけで,AROW の手持ちのライブラリへの実装は見送り.
収束が速いことを売りにするなら,いっそ一度しか例を見れない Streamed Learning (例えば,StreamSVM, IJCAI 2009) みたいな文脈で評価した方がいいのではと思った.また sort して類似する素性ベクトルが隣接するようにした場合など,学習データの順序によっては,AROW の方が PA より非常に速く収束する場合もあるようだ.学習データがディスクに載れば普通はオフライン/オンラインで random_shuffle するのであまり意味はないかもしれないが,Streamed Learning みたいな文脈では意味があるかもしれない.
[追記] LIBSVM->LIBLINEAR に表記を直した.謎の学習データだとあんまりなので,上位下位関係抽出ツール に同梱されていた,Wikipedia の階層構造からの知識獲得で使われている教師付きデータ 221,664 件をランダムにソートして 10000 件をテストにして学習してみた.ハイパーパラメタは↑の組み合わせを全てトライ.
PA/LIBLINEAR で 92.43%/92.49%のところ,92.03% (C=50, I=20) ぐらいまでは出た.91.7% (C=10, I=1) というのは良いかな.ちなみに,CW だと,91.41% (C=0.5, I=1) ぐらい.全体的な印象として,CW/AROW は速く収束するけど,精度面では PA/LIBLINEAR に有意に劣る.特に CW はひどくて,繰り返しがほとんど意味ない上,C の値の調整がしにくい印象だった.PA/LIBLINEAR は精度的にはほぼ同等 (LIBLINEAR は学習器を複数含んでいて,平均的には92.3%ぐらいの精度が出ていた.92.49% は s=4, c=0.1).PA は繰り返し回数を減らすと,90.68% (C=0.05, I=1) -> 91.91% (C=0.05, I=5) -> 92.16% (C=0.01, I=10) -> 92.43% (C=0.01, I=20) という感じで精度が上がった.