十一城

跬步千里,小流江海。

Home Linux ML Python Java Thoughts KmKg BookCan Links About

2018-02-02
机器学习-广义线性模型-LR与SVM

• 分类: ml • 标签:

这篇文章综合自知乎问题https://www.zhihu.com/question/21704547

相同点

两者都是线性模型

不同点

SVM logistic回归
几何方法 统计方法
hinge loss 合页损失函数 logistical loss Log损失函数

同样的线性分类情况下,如果异常点较多的话,无法剔除,首先LR,LR中每个样本都是有贡献的,最大似然后会自动压制异常的贡献,SVM+软间隔对异常还是比较敏感,因为其训练只需要支持向量,有效样本本来就不高,一旦被干扰,预测结果难以预料。

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。

而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。两者的根本目的都是一样的。此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等。所以在很多实验中,两种算法的结果是很接近的。但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便。

而SVM的理解和优化相对来说复杂一些。但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注。还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。

=======================From Andrew Ng=============================
n是feature的数量 m是样本数
1、如果n相对于m来说很大,则使用LR算法或者不带核函数的SVM(线性分类)
n远大于m,n=10000,m=10-1000
2、如果n很小,m的数量适中(n=1-1000,m=10-10000)
使用带有核函数的SVM算法
3、如果n很小,m很大(n=1-1000,m=50000+)
增加更多的feature然后使用LR算法或者不带核函数的SVM
LR和不带核函数的SVM比较类似。

参考

  1. https://www.zhihu.com/question/21704547/answer/20293255

dzzxjl

Home Linux ML Python Java Thoughts KmKg BookCan Links About