libsvm「反復の最大数に達する」警告および相互検証


20

次数2の多項式カーネルでC-SVCモードでlibsvmを使用しており、複数のSVMをトレーニングする必要があります。各トレーニングセットには、10個の機能と5000個のベクトルがあります。トレーニング中に、トレーニングするほとんどのSVMでこの警告が表示されます。

WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

誰かがこの警告が何を意味するのか、おそらく、それを回避する方法を説明してもらえますか?

また、ガンマとC(正則化)の最適な選択を決定するために、モデルに相互検証を適用したいと思います。私の計画は、これらの10個の値のすべての組み合わせを試すことです:0.00001、0.0001、0.001、0.01、0.1、1、10、100、1000、10000の両方のパラメーターで、交差検証中にどの組み合わせが最高の精度をもたらすかを確認します。これで十分ですか?この間隔でより多くの値を使用する必要がありますか、それともより広い間隔を選択する必要がありますか?


NU_SVCモードを試してください。問題が解決するはずです。
ホセインビタラフ

回答:


20

この警告は、LIBSVMが2次最適化問題を解決するために使用する反復ルーチンが、データを分離する最大余白超平面(パラメーターb)を見つけるために使用することを意味します。 for wはさらに拡張できます(つまり、wを変更して目的関数の値をより極端にすることができます)。つまり、LIBSVMは最大マージン超平面を見つけることができなかったと判断しますが、これは真実である場合とそうでない場合があります。wbww

これが起こる理由はたくさんありますが、次のことをお勧めします。

  • データを正規化します。
  • クラスのバランスがとれている(サイズが似ている)ことを確認してください。そうでない場合は、パラメータ-wを使用して異なる重みを割り当てます。
  • Cγ
    γあなたはv+係数0 度

CC

Windows用のLIBSVMディストリビューションには、grid.pyというPythonスクリプトが含まれている必要があります。このスクリプトは、(相互検証と指定された検索範囲に基づいて)パラメーターを選択できます。また、SVMの精度の等高線図を作成できます。このツールは非常に役立ちます。

StackOverflowに関する次の質問とその関連する質問も役立つ場合があります 。libsvm Shrinking Heuristics


詳細な説明をありがとう。それは間違いなく謎をクリアします。SO(あなたが提供したリンク)でほぼ同じ質問をしましたが、そこで受け取った答えは、縮小するヒューリスティックに主に焦点を合わせていました。
ミハイトドル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.