哪个更好:LinearSVC还是SVC?
machine-learning
scikit-learn
svm
10
0

从我的研究中,我发现了三个相互矛盾的结果:

  1. SVC(kernel="linear")更好
  2. LinearSVC更好
  3. 没关系

有人可以解释何时使用LinearSVCSVC(kernel="linear")吗?

看起来LinearSVC略胜于SVC,并且通常更为挑剔。但是,如果scikit决定花时间在实现线性分类的特定案例上,那么LinearSVC为什么不胜过SVC

参考资料:
Stack Overflow
收藏
评论
共 2 个回答
高赞 时间 活跃

实际的问题在于scikit方法问题 ,他们将SVM称为不是SVM的东西。 LinearSVC实际上使铰链损耗的平方最小化,而不只是铰链损耗的最小化,而且,它对偏差的大小( 不是SVM )进行了惩罚,有关更多详细信息,请参考其他问题: scikit-learn中的SVC和LinearSVC在什么参数下等效?

那么使用哪一个呢?这纯粹是特定于问题的 。由于没有免费的午餐定理,因此不可能说“这个损失函数是最佳的,周期”。有时平方损失会更好,有时是正常的铰链。

收藏
评论

从数学上讲,优化SVM是一个凸优化问题,通常使用唯一的最小化器。这意味着该数学优化问题只有一种解决方案。

结果的差异来自多个方面: SVCLinearSVC可以优化同一问题,但实际上所有liblinear估计量都会对截距进行惩罚,而libsvm估计量则不会(IIRC)。这导致了不同的数学优化问题,从而导致了不同的结果。可能还存在其他细微的差异,例如缩放和默认损失函数(编辑:确保在LinearSVC设置loss='hinge' )。接下来,在多类分类中,默认情况下, liblinear执行liblinear休息,而libsvm默认进行liblinear休息。

SGDClassifier(loss='hinge')在使用随机梯度下降而不是精确梯度下降并且可能不会收敛到同一解的意义上与其他两个有所不同。但是,获得的解决方案可能会更好地推广。

SVCLinearSVC ,一个重要的决策标准是LinearSVC趋向于收敛更快,而样本数量越大。这是因为线性核是一种特殊情况,它在Liblinear中进行了优化,但在Libsvm中没有进行优化。

收藏
评论
新手导航
  • 社区规范
  • 提出问题
  • 进行投票
  • 个人资料
  • 优化问题
  • 回答问题

关于我们

常见问题

内容许可

联系我们

@2020 AskGo
京ICP备20001863号