首页 > 技术文章 > LR与SVM的异同

kukri 2018-02-08 22:08 原文

相同点

二者都是监督学习的分类算法,如果不考虑核函数的话,二者都是线性分类算法,也就是说他们的分类决策面都是线性的,目的都是产生一个决策平面,将两类样本点分开。

不同点

  • 本质上的不同是损失函数的不同,LR的是log loss SVM的损失函数是hinge loss

- SVM 损失函数 : Loss(z) = (1-z)^+

- LR 损失函数: Loss(z) = \log(1+\exp(-z))

其中 z=y*f(x)

  • 优化目标不同,LR的目标函数是logloss,SVM是最大化分类面间距。

 

  二者均可以根据损失函数使用梯度下降法训练,但SVM一般不用梯度下降法训练,SVM将原始的凸优化问题转换为对偶问题来求解。逻辑回归的损失函数支持向量机的目标函数

 

  不同的loss function代表了不同的假设前提,也就代表了不同的分类原理,也就代表了一切。简单来说,​逻辑回归方法基于概率理论,假设样本为1的概率可以用sigmoid函数来表示,然后通过极大似然估计的方法估计出参数的值,具体细节参考http://blog.csdn.net/pakko/article/details/37878837。支持向量机​基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面,具体细节参考http://blog.csdn.net/macyang/article/details/38782399

  • SVM考虑局部(支持向量),而LR考虑全局

  LR侧重于所有点,SVM侧重于超平面边缘的点

  从SVM解出的参数w和b的形式可以看出,w、b只受少数在决策平面上的点(支持向量)影响,当在支持向量外添加或减少任何样本点对分类决策面没有任何影响。这是因为受KKT对偶互补条件影响,ai>0则yi((wxi+b)-1)=0。

  而LR则由梯度下降法训练,每个样本点都会影响决策面的结果。

  因为上面的原因,得知:线性SVM不直接依赖于数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance,一般需要先对数据做balancing。

  • 在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。

​  这个问题理解起来非常简单。分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。LR主要靠特征构造,必须组合交叉特征,特征离散化。SVM也可以这样,但更多的时候是通过kernel。​

  • 线性SVM依赖数据表达的距离测度,所以需要对数据先做normalization(归一化),LR不受其影响。

  一个机遇概率,一个机遇距离!​

  因为Linear+SVM在计算margin有多“宽”的时候是依赖数据表达上的距离测度的,换句话说如果这个测度不好(badly+scaled,这种情况在高维数据尤为显著),所求得的所谓Large+margin就没有意义了,这个问题即使换用kernel+trick(比如用Gaussian+kernel)也无法完全避免。所以使用Linear+SVM之前一般都需要先对数据做normalization,而求解LR(without+regularization)时则不需要或者结果不敏感。

 

 

参考链接:

https://www.zhihu.com/question/26768865/answer/34078149

https://www.zhihu.com/question/24904422?sort=created

https://www.cnblogs.com/zhizhan/p/5038747.html

 

 

推荐阅读