svm学习之线性部分总结

svm是非常适合小数据集或中等规模的数据集的一个分类器;

svm对feature scales是非常敏感的;如图所示:

svm学习之线性部分总结

如果训练数据不进行缩放,支持向量机就会倾向于忽略值较小的特征

对于线性分类器,有三种用法:一种是from sklearn.svm import LinearSVC,如图所示:

svm_clf=Pipeline((
                              ('scaler',StandardScaler()),
                             ('linear_svc',LinearSVC(C=1,loss='hinge')),
                            ))

LinearSVC比SVC与SGDClassifier要好,但SGDClassifier对于处理非常大的数据集,即无法装入内存,或是在线训练是非常有帮助的;

LinearSVC正则化了偏置项,因此训练集需要减去均值;这个可以通过StanderdScaler; 此外需要确保loss函数为hinge损失函数,而不是默认值;最后,最好的表现应该设置对偶参数为False,除非你特征数比样本多;