关于 SVR 与 LinearSVR 疑问

来源:11-9 SVM思想解决回归问题

lemonlxn

2019-03-20

老师好,关于 SVR 与 LinearSVR,sklearn 中,对这两者做了相关的解释。

LinearSVR 类似于SVR 参数下 kernel ='linear’的SVR。
不过 LinearSVR 以liblinear形式实现,而不是libsvm形式,因此它在惩罚和损失函数的选择方面具有更大的灵活性,并且应该更好地扩展到大量样本。

相关原文如下:
图片描述
图片描述

不过我看这两者的表述,还是不能直观的理解 liblinear 与 libsvm区别。
老师,您能简单的描述一下吗?

另外,我们日常使用 SVM做线性回归的话,一般使用 LinearSVR 还是 SVR 参数下 kernel =‘linear’ 呢?

写回答

1回答

liuyubobobo

2019-03-20

这二者的区别不在算法的原理上,而在求解的实现上。你可以理解成,同样是求解二次线性方程组,我们可以搜索,也可以使用公式;同样计算大数乘法,我们可以使用字符串模拟,也可以使用傅里叶变换;同样求解线性回归问题,我们可以使用normal equation,也可以使用梯度下降法:)


SVM算法的最优化求解问题远没有线性回归和逻辑回归那么简单,求得这个最优化问题的解也有很多不同的方法,liblinear和libsvm是两个不同的求解svm算法问题的底层库,背后的实现有区别。


我个人倾向于在一般情况下,对于线性SVM,用LinearSVR(或者LinearSVC),而不使用SVR(或者SVC) kernel='linear'。一般情况二者的结果没有差异。且LinearSVR(LinearSVC)效率会更高一些:)


继续加油!:) 

0
1
lemonlxn
原来如此,我明白了。谢谢老师
2019-03-20
共1条回复

Python3入门机器学习 经典算法与应用  

Python3+sklearn,兼顾原理、算法底层实现和框架使用。

5893 学习 · 2455 问题

查看课程