2016-11-06 109 views
3

我在python中使用scikit-learn來分類我的實例使用svm.SVC;然而,對於某些參數組合來說,它們決不會停止。這是因爲算法需要更多時間。或者有可能算法不收斂到極值點。SVM是否總是收斂?

請注意,我沒有對我的數據做任何假設。知道了,svm是否總是收斂於任意數據集?

+1

你可以改變'max_iter'如果花費太多時間。 'max_iter = -1'可以讓它無限期地轉向 – MMF

+0

'''理論上libsvm保證會聚。因此,這意味着您正在處理病態情況(例如太大/太小的參數),因此會出現數值困難。[來自libsvm faq(SVC的核心算法)](https://www.csie.ntu .edu.tw /〜cjlin/LIBSVM /的faq.html)。你的行爲是常見的,因爲一些參數傾向於使用更多的支持向量,這會對性能產生一些影響!另外:優化本身正在使用啓發式加速收斂,有時可以很好地工作,有時不會(再次:params)。 – sascha

回答

3

它應該總是收斂,除非有數字問題。

確保您的數據正確縮放。如果不同的特徵具有不同數量級的值,這是一個糟糕的想法。您可能想要將所有要素標準化到[-1,+ 1]範圍,特別是對於超過100個要素的問題。

問:該程序保持運行(輸出,即許多點)。我應該怎麼做 ?

理論上libsvm保證會聚。因此,這個 意味着您正在處理病態情況(例如,太大或太小的參數),因此會出現數值問題。

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

+2

只是爲了完整性,它通常被認爲是將*(*標準化*)特徵標準化爲'mean = 0&std = 1'的標準,作爲特徵=(特徵 - 平均值(特徵))/標準特徵 –