抱歉,您的浏览器无法访问本站

本页面需要浏览器支持(启用)JavaScript


了解详情 >
SVM vs LR
SVM vs LR

关于 SVM 的详细原理与推导过程,详见: Support Vecor Machine (六部曲)

其实我认为 SVM 的使用率已经明显在下降趋势了,主要原因是随着神经网络的兴起之后,所以我不建议一定要花非常多的经历去学习 SVM 的原理和推导了,可以简单了解下。 主要还是了解下适用范围和场景等就可以了。

1. LR vs SVM

要说有什么本质区别,那就是 loss function 不同,两者对数据和参数的敏感程度不同

(1). 对非线性表达上,LR 只能通过人工的特征组合来实现,而 SVM 引入核函数来实现非线性表达。

(2). LR 产出的是概率值,而 SVM 只能产出是正类还是负类,不能产出概率。

(3). Linear SVM 依赖数据表达的距离测度,所以需要对数据先做 normalization;LR不受其影响.

(4). SVM 不直接依赖数据分布,而LR则依赖, SVM 主要关注的是“支持向量”,也就是和分类最相关的少数点,即关注局部关键信息;而 LR 是在全局进行优化的。这导致 SVM 天然比 LR 有更好的泛化能力,防止过拟合。 LR则受所有数据点的影响,如果数据不同类别 strongly unbalance 一般需要先对数据做 balancing。

(5). 损失函数的优化方法不同,LR 是使用 GD 来求解 对数似然函数 的最优解;SVM 使用 (Sequnential Minimal Optimal) 顺序最小优化,来求解条件约束损失函数的对偶形式。


一般用线性核和高斯核,也就是Linear核与RBF核需要注意的是需要对 数据归一化处理.

一般情况下RBF效果是不会差于Linear但是时间上RBF会耗费更多

扩展点:

:不带正则化的LR,其做 normalization 的目的是为了方便选择优化过程的起始值,不代表最后的解的 performance 会跟 normalization 相关,而其线性约束是可以被放缩的(等式两边可同时乘以一个系数),所以做 normalization 只是为了求解优化模型过程中更容易选择初始值

2. Andrew Ng

  1. 如果Feature的数量很大,跟样本数量差不多,这时候选用LR或者是Linear Kernel的SVM
  2. 如果Feature的数量比较小,样本数量一般,不算大也不算小,选用SVM+Gaussian Kernel
  3. 如果Feature的数量比较小,而样本数量很多,需要手工添加一些feature变成第一种情况

如何量化 feature number 和 sample number:

n 是feature的数量, m是样本数

1). feature number >> sample number,则使用LR算法或者不带核函数的SVM(线性分类)
     feature number = 1W, sample number = 1K

2). fn 小, sample number 一般1W,使用带有 kernel函数 的 SVM算法.

3). fn 小, sample number 很大5W+(n=1-1000,m=50000+)
          增加更多的 feature 然后使用LR 算法或者 not have kernel 的 SVM

Reference

Comments