カーネルのパラメータの重要性

SVMSVMたらしめているカーネルですが落とし穴があります。
カーネルについてよく言われることに、
どのようなカーネルを使うかより、カーネルパラメータをいかに設定するか
ということがあります。
カーネルパラメータの設定がすごく重要ということです。


例えばRBFカーネルを用いる場合、適当に決めたパラメータと最適(と思われる)パラメータでは数10パーセント以上の分類精度の差が出ることもあるそうです。
実際僕が使っているデータでもそうみたいですね。

最適なカーネルパラメータの求め方

今のところ、明確にこれ、という方法がなく、試行錯誤的に求めるgrid searchという手法が強力なようです。
grid searchは単純に、指数関数的な感覚でパラメータを設定、実際にいくつかのデータを使用してLeave-One-Out Cross-Validationで分類精度を求め、よい結果の出たパラメータを採用し、その付近を同様に探索し、少しずつ最適なパラメータに近づいていく、という方法です。

LIBSVMでは

LIBSVMではgrid.pyというgrid searchを行ってくれるスクリプトが付属しています。
また、それもめんどくさいという人にはeasy.pyというgrid searchの結果のパラメータを用いて学習・分類まで行ってくれるスクリプトも付属しています。

自分の研究で使えそうなヒント

特徴量選択を動的に行いながら分類を行うために、選んだ特徴量のサブセットを分類するためのパラメータ設定も同時に行うことが必要。
それによって結果が大きく変わる(可能性が高い)かもしれない。