2016-11-06 9 views
3

私はsvm.SVCを使用して私のインスタンスを分類するために、pythonでscikit-learnを使用しています。ただし、フィッティングのパラメータの組み合わせによっては決して停止することはありません。これは、アルゴリズムがより多くの時間を必要とするためです。あるいは、アルゴリズムが極値点に収束しない可能性があります。SVMは常に収束しますか?

私は自分のデータについて何の仮定もしていないことに注意してください。それを知って、svmは常に任意のデータセットに収束しますか?

+1

それは時間がかかりすぎる場合は、 'max_iter'を変更することができます。 'max_iter = -1'はそれが無期限に変わることを許します。 – MMF

+0

' ''理論的にlibsvmは収束することを保証します。したがって、これはあなたが病気の状態(例えば、大きすぎる/小さすぎるパラメータ)を扱っているため、数値的な問題が発生することを意味します。」[libsvm faq here(SVCのコアアルゴリズム)](https://www.csie.ntu .edu.tw /〜cjlin/libsvm/faq.html)。いくつかのパラメータがより多くのサポートを使用する傾向があるので、あなたの行動は一般的です。また、最適化自体はヒューリスティックを使用してコンバージェンスをスピードアップし、時にはうまくいくこともあります。 – sascha

答えて

3

数値的な問題がない限り、常に収束するはずです。

データが正しくスケーリングされていることを確認してください。異なるフィーチャが異なる桁の値を持つことは悪い考えです。すべてのフィーチャを[-1、+ 1]の範囲に正規化することができます。特に、100を超えるフィーチャの問題の場合

Q:プログラムは実行され続けます(出力、つまり多数のドット)。何を すればいいですか?

理論上、libsvmは収束することを保証します。したがって、 は、状況の悪い状況(たとえば、大/小パラメータ も)を処理しているため、数値的な問題が発生することを意味します。

参考:https://www.csie.ntu.edu.tw/~cjlin/libsvm/faq.html

+2

完全性のために、通常、feature =(フィーチャ - 平均(フィーチャ))/ std(フィーチャ)として* mean *(* standarize *)フィーチャを 'mean = 0&std = –

関連する問題