SVM 是一块很大的内容,网上有写得很是精彩的博客。这篇博客目的不是详细阐述每个理论和细节,而在于在不丢失重要推导步骤的条件下从宏观上把握 SVM 的思路。函数
SVM (支持向量机) 的主要思想是找到几何间隔最大的超平面对数据进行正确划分,与通常的线性分类器相比,这样的超平面理论上对未知的新实例具备更好的分类能力。公式表示以下:学习
: 全部点中最小的几何间隔, 实际上就是支持向量上的点的几何间隔优化
: 训练样本及对应标签,
, 做用是将第 i 个样本点的几何间隔转化为正数spa
公式的意思是假设每一个训练样本点的几何间隔至少是
, 求
的最大值。blog
因为几何间隔(没帽子)和函数间隔(有帽子)的关系是:get
最大化 能够固定
,求 ||w|| 的最小值或者固定 ||w||, 求
的最大值,通常选择前者: 固定函数间隔为 1, 将 \gamma = 1/||w|| 带入上式,同时为了计算方便, 目标函数等价于最小化 ||w||^2 ,约束优化问题转化为:博客
这是一个 QP 优化问题。it
利用拉格朗日乘子法将约束条件融入到目标函数:io
SVM 的原始问题其实是一个极小极大问题:学习方法
这个表达式有几个变量,先从哪个着手?答案是 , 至于为何,其实是根据下面这个优化函数将原始问题的约束条件——函数间隔必须不小于 1 转化到拉格朗日乘子
向量上去的,先看函数的后面一部分:
很容易能够看出,若是样本点 xi 知足约束条件,即有 , 上式求最大,一定有
, alpha 与后面括号里面的式子必有一个为 0 (VI) 全部的样本点都知足约束条件,极小极大问题就转化为
, 若是有一个样本点不知足约束条件,alpha 值取无穷大,上式将取无穷大,显然是没有意义的。实际上,这段论述就说明了原始问题具备 KKT 强对偶条件,对于原始问题来讲须要知足的 KKT 条件有哪些呢?
倒数两个条件是原始问题的条件,确定成立。第一个条件是上面讨论过的条件:
原始问题知足 KKT 条件,能够转化成一个最优解等价的对偶极大极小问题,先对极小部分求偏导:
获得对偶最优化问题:
对于一个新来的样本,将上面 w 的值带入 f(x) = w^T·x + b, 能够知道要判断新来的点,咱们只须要计算它与训练点的内积便可,这是 kernel trick 的关键:
软间隔问题是应对 outliers 的一种方法。软间隔问题能够创建目标函数:
与硬间隔的优化方法类似,获得的解是:
核方法是一种很巧妙的方法,既能够将特征映射到较高的维度,又能够地利用了 SVM 的内积运算避免了维度计算量的爆炸。最后的最优化问题与硬间隔优化问题类似,只要将两个样本的内积改成两个样本的核函数便可 (kernel substitution) :
固然,你也能够将两个样本的内积看作最简单的核函数。Kernel method 不只能够用在 SVM 上,还能够用在 PCA、线性分类器上等,之后再专门写一篇 kernel method 的博客。
参考资料:
[1] pluskid 的博客
[2] 统计学习方法, 李航 著