Linear SVM 和 LR 有什么异同?

SVM和LR,本质上,不都是找一个分类超平面吗? 那他们有什么本质上的差别吗?
关注者
1,041
被浏览
59,275
这是一个很好的问题,我把题目中的SVM修改成Linear SVM。这样会比较容易说清楚,我们先撇开SVM在RKHS不谈,但看作为线性分类器,Linear SVM和LR的异同。(不想看解释的请直接移步最底总结)说句题外话,kernel以及RKHS理论并不是SVM的专利,诸如least square和LR都可以有kernel的形式,之所以kernel least square和kernel LR没有kernel SVM出名是因为只有SVM框架下的kernel machine,解的系数是稀疏的,使得分类器的计算复杂度远低于其他kernel trick的衍生品(详见我另一篇回答机器学习有很多关于核函数的说法,核函数的定义和作用是什么? - 知乎用户的回答)。回归正题:

如题主所说,他们都是线性分类器,模型求解的就是一个超平面(假设问题是2类分类);以下主要谈一谈 不同点。

Linear SVM直观上是trade-off两个量
1)a large margin,就是两类之间可以画多宽的gap ;不妨说是正样本应该在分界平面向左gap/2(称正分界),负样本应该在分解平面向右gap/2(称负分界)(见下图)
2)L1 error penalty,对所有不满足上述条件的点做L1 penalty

可以看到,给定一个数据集,一旦完成Linear SVM的求解,所有数据点可以被归成两类
1)一类是落在对应分界平面外并被正确分类的点,比如落在正分界左侧的正样本或落在负分界右侧的负样本
2)第二类是落在gap里或被错误分类的点。
假设一个数据集已经被Linear SVM求解,那么往这个数据集里面增加或者删除更多的一类点并不会改变重新求解的Linear SVM平面。这就是它区分与LR的特点,下面我们在看看LR。


值得一提的是求解LR模型过程中,每一个数据点对分类平面都是有影响的,它的影响力远离它到分类平面的距离指数递减。换句话说,LR的解是受数据本身分布影响的。在实际应用中,如果数据维度很高,LR模型都会配合参数的L1 regularization。

要说有什么本质区别,那就是两个模型对数据和参数的敏感程度不同,Linear SVM比较依赖penalty的系数和数据表达空间的测度,而(带正则项的)LR比较依赖对参数做L1 regularization的系数。但是由于他们或多或少都是线性分类器,所以实际上对低维度数据overfitting的能力都比较有限,相比之下对高维度数据,LR的表现会更加稳定,为什么呢?

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


LR在NLP界还有另一个名字就是最大熵模型,当然我不准备花时间解释这个,有兴趣的可以看比如
win-vector.com/dfiles/L
如果理解最大熵模型的内蕴,应该不难看出LR是不依赖数据的距离测度的。

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

注:不带正则化的LR,其做normalization的目的是为了方便选择优化过程的起始值(为什么feature scaling会 使gradient descent的收敛更好? - 机器学习),不代表最后的解的performance会跟normalization相关,如果用最大熵模型解释,实际上优化目标是和距离测度无关的,而其线性约束是可以被放缩的(等式两边可同时乘以一个系数),所以做normalization只是为了求解优化模型过程中更容易选择初始值。初学者容易把模型的建立和模型的求解混淆。
注2:查阅了一下Linear SVM和LR在UCI数据集上的表现,在小规模数据集上,Linear SVM是要略好于LR的,但差别也不是特别大,而且Linear SVM的计算复杂度受数据量限制,对海量数据LR使用更加广泛。Do we Need Hundreds of Classifiers to Solve Real World Classification Problems?