RBFカーネルと線形カーネルで文書分類精度に差が出たわけ

はじめに

1か月ぐらい前にやったセリフ分類で、
libsvmを使って線形カーネルとRBFカーネルの精度に差がでてた(そもそも成功はしてないけど)。
結論からいうと、パラメータをいじることで改善するけど、そこら辺の言及されているものを教えてもらったのでメモ。

メモ

http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

libsvmの公式ページのリンクにある上記のpdfのAppendix.C「When to Use Linear but not RBF Kernel」に書いてあるのがそれっぽい。

(意訳)
もし特徴量の数が多いとき、カーネルによる高次元へのマッピングが必ずしも必要ないかもしれない。
すなわち、非線形マッピングがパフォーマンスの改善につながらない。線形カーネルでパラメータCをいじるだけで十分。

で、RBFカーネルでパラメータ(C,γ)をいじれば改善されるとのこと。


今回の場合、単語を素性とした疎なベクトルで、文書数はあまり多くないパターンなので、pdfの「C1. Number of instances << number of feartures」に
あてはまるみたい。
実際、RBFカーネルを用いた場合でもパラメータCを大きくして言ったら分類成功率が上昇した。

パラメータの決め方

http://en.wikipedia.org/wiki/Support_vector_machine#Properties

パラメータ(C,γ)を変えたいところだけど、実際は指数的に変化させるのがいいかもしれないと教えてもらった。
上記のwikipediaには、例として
C \in \{2^{-5}, 2^{-3}, ..., 2^{13}, 2^{15}\}
\gamma \in \{2^{-15}, 2^{-13}, ..., 2^1, 2^3\}
というパラメータを出してた。交差検定でチェックした一番成功率の高いパラメータの組を選ぶとか。