为什么 Liblinear 的性能明显优于 libsvm 线性内核?

数据挖掘 机器学习 scikit-学习 支持向量机 libsvm
2022-03-08 08:03:11

l 有一个 dim=(200,2000) 200 个示例和 2000 个特征的数据集。我有10节课。

我在这两种情况下都使用了 sklearn:

svm.svc(kernel=linear)
LinearSVC()

然而,LinearSVC() 的性能明显优于具有线性内核的 svm。60% 对 23%。我应该得到相同或可比较的结果,因为它们提供了相同的参数和数据。

怎么了 ?

谢谢

1个回答

这只是一个猜测,但根据我的说法,由于正则化,linearSVC 的性能可能比具有线性内核的 SVM 更好。

因为 linearSVC 基于 liblinear 而不是 libsvm,所以它具有更大的灵活性,并且它使您可以在 SVM 中使用正则化(默认为 L2-Ridge 正则化)。

因为您拥有的特征多于观察结果,所以它存在多种分类模型的解决方案。其中一些比其他的更“健壮”。L2 正则化将帮助您降低模型系数的幅度,并可能导致更稳定的解决方案。

文档中有关 LinearSVC 的更多信息:

http://scikit-learn.org/stable/modules/generated/sklearn.svm.LinearSVC.html

更多关于使用大量特征(以及多重共线性)时岭回归的好处:

https://stats.stackexchange.com/questions/118712/why-does-ridge-estimate-become-better-than-ols-by-adding-a-constant-to-the-diago