这个问题算是很多公司面试初级算法工程师时经常提的问题,可以轻松的检测面试的的算法基础能力。
根据这两种算法理论以及应用场景总结有主要有以下几种区别:
1.损失函数不同
LR:log loss
SVM:hinge loss(常用来求解间距最大化问题,代表性的就是SVM)
这两种损失函数都是加重对分类影响较大的点的权重,减少与分类数据关系较少的点的权重。但不同的是,LR 是考虑所有的样本点,而 SVM只考虑少量的样本(支持向量:离分类平面最近的点)。
2.预测的结果不一样
逻辑回归是广义的线性回归。是线性函数通过sigmod函数变换而来,函数值域为[0,1],在实际运用场景里,可直接将这个结果当做事件发生的概率(比如广告的点击概率等),可以取一个阈值,根据阈值确定分类结果。而SVM是直接的给出分类结果,这直接导致在有些业务场景无法使用——当然也可以通过对点到分类平面的距离做归一化,把归一化的结果作为概率。但一般线性分类ctr预估的场景还是会直接选择LR。
3.对数据和参数的敏感不一样
SVM不直接依赖数据分布,分类平面不受一类点的影响,而LR受所有点的影响。如果不同类别数据strongly unbalance,必须要做balance处理(采样等方式)。
SVM依赖距离测量,需要对样本先做normalization处理,但LR不需要。