2012-08-31 8 views
5

libsvmのPythonインターフェイスを使用していますが、グリッド検索を使用してCgammaのパラメータ(RBFカーネル)を選択した後、モデルを訓練し、それを検証する(5倍、関連性がある場合)。私が受け取る精度は、トレーニングデータセットのラベルの比率と同じです。libsvm - クロスバリデーションの精度はラベルの比率と同じ

私は3947個のサンプルを持っていて、そのうち2898個はラベル-1を持ち、残りはラベル1を持っています。そのためサンプルの73.4229%です。

そして、私がモデルとクロスはそれを5倍に検証する訓練時に、これは私が得るものです -

optimization finished, #iter = 1529 
nu = 0.531517 obj = -209.738688, 
rho = 0.997250 nSV = 1847, nBSV = 1534 
Total nSV = 1847 
Cross Validation Accuracy = 73.4229% 

これは、SVMは、アカウントに機能を取っていないことを意味していますか?それとも、ここのデータが欠点ですか?彼らは両方とも関連していますか?私はちょうどそれを73.4229番号を越えて得ることができない。また、サポートベクトルの数はデータセットのサイズよりもはるかに小さいと思われますが、この場合はそうではありません。

一般に、相互検証の精度がデータセット内のラベルの比率と同じ場合はどういう意味ですか?

答えて

6

あなたのデータセットはアンバランスです。つまり、大きなパーセンテージは同じクラスです。この結果、デフォルトまたは多数クラスの分類器と呼ばれるものが生まれ、単純にすべてを多数クラスの一部として分類することによって高い精度が達成されます。つまり、データのために機能を考慮していないということは間違いありません。

libsvm READMEは、これに対処するためにペナルティウェイトを変更することを提案しています。関連する質問は次のとおりです。https://stats.stackexchange.com/questions/20948/best-way-to-handle-unbalanced-multiclass-dataset-with-svm

不平衡データの詳細については、A User's Guide to Support Vector Machinesのセクション7を参照してください。

関連する問題