逻辑回归(LR)与支持向量机(SVM)之间的异同

最近有几个朋友私信我,说是在校招的时候被问到LR与SVM之间的异同,回答的不是太满意,希望我总结一下。
一、首先LR与SVM有什么相同点呢?
第一,LR和SVM都是监督学习算法。
说白了就是带标签的学习。
第二,LR和SVM都是分类算法。
这里要说的是一般情况下LR与SVM的标签都是0/1这样的离散值,当然他们也是可以做回归的。
第三,如果不考虑核函数,LR和SVM都是线性分类算法,也就是说他们的分类决策面都是线性的。
这里要先说明一点,那就是LR也是可以用核函数的,至于为什么通常在SVM中运用核函数而不在LR中运用,后面讲到他们之间区别的时候会重点分析。总之,原始的LR和SVM都是线性分类器,这也是为什么通常没人问你决策树和LR什么区别,决策树和SVM什么区别,你说一个非线性分类器和一个线性分类器有什么区别?
第四,LR和SVM都是判别模型。
判别模型会生成一个表示P(Y|X)的判别函数(或预测模型),而生成模型先计算联合概率p(Y,X)然后通过贝叶斯公式转化为条件概率。简单来说,在计算判别模型时,不会计算联合概率,而在计算生成模型时,必须先计算联合概率。或者这样理解:生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。常见的判别模型有:KNN、SVM、LR,常见的生成模型有:朴素贝叶斯,隐马尔可夫模型。
二、LR与SVM之间有什么不同呢
第一,样本不同
LR考虑的是全部样本,也就是一个样本不管决策面有多远,都会对总体的损失函数有影响(明白梯度下降算法就知道了),SVM只考虑了部分样本,也就是离分割面最近的那些样本,被称为支持向量。
在这里插入图片描述

支持向量机改变非支持向量样本并不会引起决策面的变化
在这里插入图片描述

逻辑回归中改变任何样本都会引起决策面的变化

第二,损失函数不一样
LR使用的是逻辑损失
在这里插入图片描述

LR使用的sigmoid函数来表示属于某一类的概率,通过极大似然估计来估计参数的值。
SVM使用的是Hinge损失
在这里插入图片描述

SVM使用的距离的方法,寻找最优超平面。

第三,在解决非线性问题时,支持向量机采用核函数的机制,而LR通常不采用核函数的方法。
分类模型的结果就是计算决策面,模型训练的过程就是决策面的计算过程。通过上面的第二点不同点可以了解,在计算决策面时,SVM算法里只有少数几个代表支持向量的样本参与了计算,也就是只有少数几个样本需要参与核计算(即kernal machine解的系数是稀疏的)。然而,LR算法里,每个样本点都必须参与决策面的计算过程,也就是说,假设我们在LR里也运用核函数的原理,那么每个样本点都必须参与核计算,这带来的计算复杂度是相当高的。所以,在具体应用时,LR很少运用核函数机制。
第四,SVM的损失函数就自带正则,不容易过拟合,而LR容易过拟合
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/yangdashi888/article/details/114993026