Linear SVM 和 LR 有什么异同以及分别在什么情况下使用?

Linear SVM 和 LR 有什么异同

  • Linear SVM和LR都是线性分类器
  • Linear SVM不直接依赖数据分布,分类平面不受一类点影响;LR则受所有数据点的影响,如果数据不同类别strongly unbalance一般需要先对数据做balancing
  • Linear SVM依赖数据表达的距离测度,所以需要对数据先做normalization;LR不受其影响
  • Linear SVM依赖penalty的系数,实验中需要做validation
  • Linear SVM和LR的performance都会收到outlier的影响,其敏感程度而言,谁更好很难下明确结论

以上来源 https://www.zhihu.com/question/26768865/answer/34048357

Liblinear支持两个热门的二元线性分类器:常规逻辑回归LR和线性SVM。给出一组实例标签(xi,yi),i=1,…l,xi∈Rn,yi∈{-1,1},这两个分类器使用了不同的损失算法解决下面的约束优化问题。其中,C是大于0的惩罚因子。对于SVM来说,有两个常用的损失算法max(1-yiwTxi,0)和max(1-yiwTxi,0)2,分别指的是L1-SVM和L2-SVM。对LR来说,损失算法是log(1+e-yiwTxi),得自一个概率模型。在有些案例中,分类器的判别式还要包含一个偏差项b。Liblinear通过对每个实例和纬度加强影响来实现偏差:wT<-[wT,b],XiT<-[XiT,B].其中B是用户指定的常量。与此不同,L1-SVM和L2-SVM的算法是坐标下降法。Liblinear为L2-SVM和LR都实现了信任区域的牛顿方法。在测试阶段,我们预测一个数据点上x>0,如果WTx>0.对于多元实例训练,我们为之提供了1Vrest的策略。

无意间看到上面这段话,想起了那天吃饭的时候一个同事说他碰到一个面试题目是: svm 和 lr 的异同,当时思考了一下,之后想起了曾经在学习logistic regression classification model的梯度的时候,推到和一个简单的两层的sigmoid输出的的梯度是一样,后来发现神经网络拟合的时候,我们用的是均方误差的loss function ,而在这个lr 的推倒的时候,我同样用了均方误差的loss,因此得到一样的结果,但是通常在lr的推倒的时候,我们是直接用 最大似然估计的,然后只有当 误差的分布满足高斯分布的时候,最大似然的结果才会和最小二乘相同(loss function 为均方误差)

刚才看到上面的loss function 的形式,想到了cross entropy loss,在网上找到这篇文章印证了这个

http://www.cs.mcgill.ca/~dprecup/courses/ML/Lectures/ml-lecture05.pdf,不做这个ppt中的lable是0和1,所以和上面的公式有所不同,表达形式没有那么漂亮,但是是一样的,有时间再把这几个公式整理一下吧。

lr 和 svm本质不同在于loss function的不同,不过想想这几乎对所有的单层模型都使用,lr的损失函数是 cross entropy loss, adaboost的损失函数是 expotional loss ,svm是hinge loss,常见的回归模型通常用 均方误差 loss。

http://www.tanghuangwhu.com/archives/199?jdfwkey=m1fnx

Linear SVM 和 LR 分别在什么情况下使用

两种方法都是常见的分类算法,从目标函数来看,区别在于逻辑回归采用的是logistical loss,svm采用的是hinge loss。这两个损失函数的目的都是增加对分类影响较大的数据点的权重,减少与分类关系较小的数据点的权重。SVM的处理方法是只考虑support vectors,也就是和分类最相关的少数点,去学习分类器。而逻辑回归通过非线性映射,大大减小了离分类平面较远的点的权重,相对提升了与分类最相关的数据点的权重。两者的根本目的都是一样的。此外,根据需要,两个方法都可以增加不同的正则化项,如l1,l2等等。所以在很多实验中,两种算法的结果是很接近的。但是逻辑回归相对来说模型更简单,好理解,实现起来,特别是大规模线性分类时比较方便。而SVM的理解和优化相对来说复杂一些。但是SVM的理论基础更加牢固,有一套结构化风险最小化的理论基础,虽然一般使用的人不太会去关注。还有很重要的一点,SVM转化为对偶问题后,分类只需要计算与少数几个支持向量的距离,这个在进行复杂核函数计算时优势很明显,能够大大简化模型和计算量。

作者:orangeprince
链接:https://www.zhihu.com/question/21704547/answer/20293255
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


SVM和LR

解决问题的思路不同:SVM最大间隔分类器;LR最大化似然函数。
构建的目标函数不同,SVM的目标函数包含hinge损失函数和正则项;LR的目标函数包含cross entropy的损失函数。两者的损失函数很相像,如果LR加上正则项,那么两者的优化目标也很相像。
数据分布的影响不同:Linear SVM不直接依赖数据分布,分类平面只受SV的影响;LR的分类平面受所有数据点的影响(离分类平面越近影响力越大)。
距离测度:Linear SVM计算margin距离的时候依赖数据表达上的测度,如果测度不好那么就没有意义了。所以一般做SVM要先scale数据;LR也需要scale数据,不过是为了更快更好地计算优化问题。
核函数:SVM转化成对偶问题后采用核函数只需要计算与少数几个支持向量的距离;LR利用representation theory采用核函数后需要计算与所有样本点的距离,解释非稀疏的。
概率模型:LR可以给出分类的概率;SVM必须再叠加LR才可以给出分类的概率。
实践上:特征很大,就用linear SVM或者LR。特征很小,就用核SVM或者构建特征再用LR。

GBDT和RF

都是tree-based的模型,有tree模型的优点:处理缺失数据、处理类别数据、处理多分类数据、处理分类回归、对样本的分布不敏感。
子树的复杂度不同:GBDT的子树是简单的,甚至是decision-stump(只有两片叶子的树)。GBDT减少error主要通过组合多个不同权重的树减少bias,每次训练的新树都是在原来树上的改进,同时多颗树的组合也一定程度上降低了variance;RF的子树是复杂的(完全生长的树)。RF减少error主要通过组合多个树减少variance。树通过到处随机尽量使彼此不相关(样本随机,切的时候特征随机),从而variance降低的更快一些。但是RF不能降低bias,其bias比子树要稍高一些。所以子树要尽可能完全生成从而有较低的vias,然后组合多个树降低variance从而达到降低error的目的。RF的子树都过拟合数据,但是过拟合的方式各不相同,通过最后的平均投票,把过拟合的差异平均了。
实践并行化:RF并行化较容易自然,GBDT并行化不自然。
实践调参:GDBT调参更麻烦一些。RF一般只需要调max_features(每次split参考的最大的feature个数,通常用feature总数的平方根)。
实践过拟合:RF抗过拟合的能力更强一些,更少的参数需要调整。GBDT对噪声更敏感,噪声大的时候表现可能差一些。
最终效果:好好调参数的GBDT效果通常更好。
模型扩展:GBDT来源于优化一个目标函数,这个目标函数可以用各种可以写出梯度的error。RF相对来说潜在的模型不是很明显。

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值