Support Vector Machine に取り組んでから約 2 か月が経ちました。私は自分で SVM をコーディングしました。SVM の最適化問題には、John Platt 博士による逐次最小最適化 (SMO) を使用しました。
現在、自分のデータセットに最適な C 値を見つけるためにグリッド検索を行うフェーズにいます。(私のプロジェクト アプリケーションの詳細とデータセットの詳細については、こちらを参照してくださいSVM 分類 - 各クラスの入力セットの最小数)
2^0 から 2^6 の範囲の C 値について、カスタム実装された SVM の精度を正常にチェックできました。しかし、現在、C> 128 の SMO の収束に関していくつかの問題があります。C=128 のアルファ値を見つけようとしたのと同様に、実際に収束してアルファ値を正常に与えるまでに長い時間がかかります。
SMO が収束するのにかかる時間は、C=100 で約 5 時間です。これは大きいと思います (SMO は高速であるはずなので)。精度は高いのですが? Cのより高い値の精度をテストできないからではなく、私は正しくねじ込まれています.
私は実際に SMO のすべてのパスで変更されたアルファの数を表示しており、10、13、8... アルファが連続的に変化しています。KKT 条件は収束を保証しますが、ここで何が起こっているのでしょうか?
実行時間は長くなりますが、私の実装は C<=100 に対して良好な精度で正常に動作することに注意してください。
この問題に関する情報を教えてください。
ありがとうと乾杯。