SVMの性能を引き出すには,スケーリングとパラメータチューニングが非常に重要.
これだけで精度10%くらいあがりました.
スケーリング
広い範囲をとる特徴量に引きずられないようにする.
LIBSVMでは,何も考えなくても以下のコマンド1発でやってくれる.
svm-scale -l 0 -u 1 feature > feature.scale
パラメータチューニング
カーネルはRBFカーネル一択(のようだ).RBFカーネルの場合,Cとγをチューニングする必要がある.
Cはペナルティであり,大きいほど誤りに厳しくなる.不均衡データ問題の対策になるが,大きくしすぎると過学習するので注意.γは,マージン最大化と誤差の最小化の比率を求めるパラメータ.
そして,(C, γ)の最適な組み合わせを求める(グリッド探索).C, γともに2のべき乗の値を網羅すると経験的によいらしい.