SVM总是会收敛吗?

时间:2016-11-06 19:50:13

标签: python scikit-learn svm

我在python中使用scikit-learn使用svm.SVC对我的实例进行分类;但是,对于某些参数组合,从不停止。这是因为算法需要更多时间。或者算法可能无法收敛到极值点。

请注意,我没有对我的数据做出任何假设。知道了,svm是否总是收敛于任意数据集?

2 个答案:

答案 0 :(得分:3)

除非存在数字问题,否则它应该总是收敛。

确保您的数据已正确缩放。如果不同的特征具有不同数量级的值,那么这是一个坏主意。您可能希望将所有要素标准化为范围[-1,+ 1],尤其是对于具有100多个要素的问题。

  

问:程序继续运行(带输出,即多点)。什么   我该怎么办?

     

理论上,libsvm保证收敛。因此,这   意味着你正在处理病态的情况(例如   大/小参数)因此出现了数值上的困难。

     

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

答案 1 :(得分:0)

根据Imanol&Others的上述建议,扩展培训和测试投入。

遵循通用标准,例如:均值= 0和性病= 1

您可以使用sklearn.preprocessing库中提供的StandardScaler API。

注意:仅将StandardScaler功能适合训练输入集,并转换训练和测试,因此应用相同的比例。

scaler = StandardScaler().fit(train_ip)
scaler.transform(train_ip)
scaler.transform(test_ip)