17

次数 2 の多項式カーネルを使用して C-SVC モードで libsvm を使用しており、複数の SVM をトレーニングする必要があります。トレーニング中に、トレーニングしている一部の SVM について、次の警告のいずれかまたは両方が表示されます。

WARNING: using -h 0 may be faster
*
WARNING: reaching max number of iterations
optimization finished, #iter = 10000000

hパラメータの説明を見つけました:

-h shrinking : whether to use the shrinking heuristics, 0 or 1 (default 1)

libsvmのドキュメントから説明を読んでみましたが、私には少しレベルが高すぎます。誰でも素人の説明を提供してもらえますか? おそらく、これを設定するなどのいくつかの提案は有益です. また、トレーニングするすべての SVM に対してこのパラメーターを設定することで、この警告を明示的に出さない SVM の精度に悪影響を及ぼす可能性があるかどうかを知っておくと役立ちます。

他の警告をどうするかわかりません。

詳細を説明すると、私のトレーニング セットには 10 個の属性 (機能) があり、5000 個のベクトルで構成されています。


アップデート:

他の誰かが「反復の最大数に達している」場合、数値の安定性の問題が原因のようです。また、これによりトレーニング時間が非常に遅くなります。多項式カーネルは、相互検証手法を使用して正則化 (C パラメーター) の最適な値を決定することでメリットが得られます。多項式カーネルの場合、私にとっては、それを 8 より小さく保つのに役立ちました。また、カーネルが不均一な場合\sum(\gamma x_i s_i + coef0)^d (申し訳ありませんが、LaTeX は SO ではサポートされていません)、coef0 != 0 の場合、クロス検証は、ガンマと C の両方のグリッド検索手法で実装できます。この場合、ガンマのデフォルト値 (1 / number_of_features) は最適な選択ではない可能性があります。それでも、私の実験から、ガンマを大きくしすぎたくないでしょう。

ガンマと C の可能な値についてさらにインスピレーションを得るには、grid.py を調べてみてください。

4

1 に答える 1

11

縮小ヒューリスティックは、最適化を高速化するためにあります。FAQ にあるように、役立つ場合もあれば、そうでない場合もあります。収束ではなく、ランタイムの問題だと思います。

ただし、最適化が最大反復回数に達するという事実は興味深いものです。許容範囲 (コスト パラメーター) で遊んだり、これを引き起こす個々の問題を調べたりすることができます。データセットは大きいですか?

于 2012-09-20T10:30:40.273 に答える