SVM和逻辑回归对比!!!完整

SVM和逻辑回归对比!!!完整

1.LR和SVM有什么相同点

(1)都是监督算法,判别模型
(2)LR和SVM都可以处理分类问题,且一般都是处理线性二分类的问题(在改 进的情况下可以处理多分类)
(3)两个方法都可以加不同的正则化项,如L1,L2等等。

2.LR和SVM有什么不同点

(1)本质上是其loss function不同;(手动标红……哈哈哈)
区别在于逻辑回归采用的是Logistical Loss,SVM采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的特征的权重,减少与分类影响较小的权重。
小小扩展:那么问大家一个问题权重大就一定会代表特征重要吗???
答案是不是的,当每个样本都有相同的特征,那么权重是不会影响到结果的,专业术语也就是 敏感度检测
逻辑回归损失函数:
在这里插入图片描述
SVM损失函数:
在这里插入图片描述
解释一下:逻辑回归是基于概率的,用sigmoid函数来表示,通过极大似然估计的方法估计出参数的类别,支持向量机是基于几何间隔最大化原理,认为存在最大几何间隔的分类面为最优分类面。

(2)SVM只考虑分类面上的点,而LR则考虑所有点(远离的点对边界线的确定也起作用)
SVM中,在支持向量机之外添加减少任何点对结果都没有任何影响,而LR则是每一个点都会影响决策。
逻辑回归则是受所有数据点的影响,所以受数据本身分布影响正因此,SVM对异常值不敏感,而LR则对异常值敏感

(3)在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。 而LR则每个点都需要两两计算核函数,计算量太过庞大。

(4)SVM依赖于数据的测度,而LR则不受影响
因为SVM是基于距离的,而LR是基于概率的,所以LR是不受数据不同维度测度不同的影响,而SVM因为要最小化12||w||212||w||2所以其依赖于不同维度测度的不同,如果差别较大需要做normalization(标准化) 。当然如果LR要加上正则化时,也是需要normalization(标准化)一下的 。使用梯度下降算法,一般都要 feature scaling,如果不归一化,各维特征的跨度差距很大,目标函数就会是“扁”的,在进行梯度下降的时候,梯度的方向就会偏离最小值的方向,走很多弯路。
ps:标准化原因:如果说一个特征对应的代价下降的慢,一个特征代价下降的快
特征大的权值就会相对小,而特征值小的权值就会非常大,权值大就会特别难调整,(因为权值大那么数据发生一点变动就会导致产生很大的影响)导致梯度不断震荡很难找到最优点。

(5)SVM自带结构风险最小化,LR则是经验风险最小化
SVM的损失函数就自带正则!!!(损失函数中的1/2||w||^2项),这就是为什么SVM是结构风险最小化算法的原因!!!而LR必须另外在损失函数上添加正则项!!!
以前一直不理解为什么SVM叫做结构风险最小化算法,所谓结构风险最小化,意思就是在训练误差和模型复杂度之间寻求平衡,防止过拟合,从而达到真实误差的最小化。来达到结构风险最小化的目的,最常用的方法就是添加正则项,而SVM自带正则项。

(6)LR和SVM在实际应用的区别
根据经验来看,对于小规模数据集,SVM的效果要好于LR,但是大数据中,SVM的计算复杂度受到限制,而LR因为训练简单,可以在线训练,所以经常会被大量采用

(来啦来啦,总结一下哈!)

总结

1、LR采用log损失,SVM采用合页损失
2、LR对异常值敏感,SVM对异常值不敏感。
3、在训练集较小时,SVM较适用,而LR需要较多的样本。
4、SVM使用时最好标准化,因为SVM更依赖于对数据的测度
5、SVM损失函数自带L2正则化
6、在基于大数据的时代,SVM相对来说比较受限制,只适合处理小规模数据

补充补充:

LR在正负例数据比例相差悬殊时预测效果不好.为什么会出现这种情况呢?原因来自于逻辑回归交叉熵损失函数是通过最大似然估计来推导出的.

使用最大似然估计来推导损失函数,那无疑,我们得到的结果就是所有样本被预测正确的最大概率.注意重点是我们得到的结果是预测正确率最大的结果,100个样本预测正确90个和预测正确91个的两组w,我们会选正确91个的这一组.那么,当我们的业务场景是来预测垃圾邮件,预测黄色图片时,我们数据中99%的都是负例(不是垃圾邮件不是黄色图片),如果有两组w,第一组为所有的负例都预测正确,而正利预测错误,正确率为99%,第二组是正利预测正确了,但是负例只预测出了97个,正确率为98%.此时我们算法会认为第一组w是比较好的.但实际我们业务需要的是第二组,因为正例检测结果才是业务的根本.

此时我们需要对数据进行欠采样/重采样来让正负例保持一个差不多的平衡,或者使用树型算法来做分类.一般树型分类的算法对数据倾斜并不是很敏感,但我们在使用的时候还是要对数据进行欠采样/重采样来观察结果是不是有变好.

你可能感兴趣的:(SVM和逻辑回归对比!!!完整)