机器学习 | 支持向量机
支持向量机 (Support Vector Machine, SVM):支持向量机在高维或无限维空间中构造超平面或超平面集合,其可以用于分类、回归或其他任务。直观来说,分类边界距离最近的训练资料点越远越好,因为这样可以缩小分类器的泛化误差。
1. 定义
更正式地来说,支持向量机在高维或无限维空间中构造超平面或超平面集合,其可以用于分类、回归或其他任务。直观来说,分类边界距离最近的训练资料点越远越好,因为这样可以缩小分类器的泛化误差。(来源:维基百科,使用 CC BY-SA 3.0 协议)
对于二维二分类问题如下:
(来源:维基百科,使用 CC BY-SA 3.0 协议)
当我们来对两种样本人工分类的时候,一定是想找到间隔最宽的一个空隙划开,因为我们感觉这样的分类效果最好。
支持向量机和人的思维一致,就是要找到一个分类超平面
支持向量是训练数据集中最靠近分类超平面的点。
2. 线性 SVM
2.1 硬间隔
2.1.1 间隔的定义
SVM 的核心就是间隔越大越好,那么我们首先要找到间隔的数学表达。
平面中点
有些资料向量相乘写成,有些资料写成 ,二者实际是一样的。因为前者是点乘(内积),后者是叉乘(外积)。
将上式推广到多维空间中一样成立。对于超平面
为 的二范数(下标 2 可省略),其定义是:
我们将
这个条件实际上非常弱,它相当于只规定了分类超平面能把两种样本点隔开,没有任何对间隔的限制。
为了引入间隔,我们假设支持向量到分类超平面的距离为
这样表达式中终于包含了间隔。接下来,我们对上式两边除以
由于
就像缩放为 ,两个式子表示的仍然是同一条直线。
因此为了式子简单,我们直接忽略掉缩放的值:
对于支持向量
那么支持向量与分类超平面的距离为:
由于间隔有两侧,那么间隔的距离为:
2.1.2 待求解的问题
获得了间隔的表达式,支持向量机要求解的问题就可以用形式化的语言表达:
这里第二行公式把乘到左边去了,是为了表达式的简洁。实际上这一行表达的含义与式 是一模一样的。
我们习惯求最小化问题,因此将以上问题分子分母颠倒,等价转换为:
其中,加平方是为了求导时正好能把前面的
2.1.3 前置知识
可以先看下一节求解的过程,过程中遇到了对应的方法后再看这一节。
2.1.3.1 拉格朗日乘子法
对于不等式约束优化问题:
转化为其对应的无约束的拉格朗日函数:
要满足 KKT 条件:
其中:
- 拉格朗日取得可行解的必要条件
- 松弛互补条件
- 初始的约束条件
- 初始的约束条件
- 不等式约束的拉格朗日乘子需满足的条件
2.1.3.2 拉格朗日对偶
对于原问题:
它的对偶问题为:
定义以下式子:
我们可以写出如下不等式:
再进一步转换到
综上,我们可以得到原问题
2.1.3.3 SMO 算法
SMO (Sequential Minimal Optimization) 算法的基本步骤:
- 选取一对需要更新的变量
与 - 固定
与 以外的参数,求解出更新后的 与
一直循环以上两个步骤,直到收敛。
对于选取的
2.1.4 求解支持向量机
2.1.4.1 问题转换
由拉格朗日乘子法,我们列出拉格朗日函数:
其中
我们知道,
我们要求的是原问题的最小值,因此问题转换为:
该问题不好求解,因此使用拉格朗日对偶法转换为对偶问题,我们求出对偶问题的最大值,便是原问题的下界:
2.1.4.2 求解问题
第一步,求解内层问题:
首先对
将上式的解带入式
我们发现还有个条件
另外,我们令要计算的分割超平面为
第二步,求解外层问题:
我们习惯求最小值,因此给上述问题乘上一个
该问题还需要满足 KKT 条件:
对于该问题,我们共有
第三步,使用 SMO 求解外层问题:
不妨设我们选择要优化的变量为
注意上式的前两项没有了,因为 ,所以 可以直接省略。另外由于变量相当于只剩 和 ,因此后面的双层连加变成了两个单层连加。下面该技巧也会用到多次,也会反向用到。
上式的约束条件可以进行变形:
其中除了
为了式子简洁,我们令:
通过式
此时,整个式子已经只剩
此时这个式子已经能用来计算结果了,但是还不够简单,编程实现比较麻烦,我们可以进一步进行化简。
首先注意到式
将
令
如此,我们将式
上面求出来的答案并不是最终答案,我们还需要注意到约束条件
对
由式
由于
由此,我们可以将
由式
由于
由此,我们可以将
2.2 软间隔
2.2.1 软间隔的定义
上述硬间隔 SVM 考虑的情况比较理想,样本点不存在噪音。如果样本点存在噪音,将会对硬间隔 SVM 造成干扰,导致泛化能力下降。或者样本点线性不可分,硬间隔 SVM 就无法处理。
在硬间隔 SVM 里,我们要求两类样本点一定分别分布于分割超平面两侧,即样本点一定被分割超平面正确分割。在软间隔 SVM 里,我们降低这个要求,允许样本点被错误分类。
如果样本点能随便被错误分类,那么就没办法找最优解了,因此样本点被错误分类时要有一定的代价,而正确分类时没有代价。我们将其与
其中,
它们的函数图像如下:
2.2.2 待求解的问题
将硬间隔 SVM 的问题加上松弛变量后,便是软间隔 SVM 待求解的问题:
其中
2.2.3 求解支持向量机
软间隔与硬间隔 SVM 的求解过程基本相同,因此下面写的比较简略。
由拉格朗日乘子法,我们列出拉格朗日函数:
由于,因此最后一项是减而不是加。
其中
原问题为:
转化为对偶问题:
对内层问题,求偏导得到解:
由
该问题还需要满足 KKT 条件:
接下来的 SMO 过程一模一样,最后得到:
然后要对其进行剪辑:
具体的范围如下,对
3. 非线性 SVM
就称
通过核函数,我们可以将样本点从低维空间
对于核函数
名称 | 表达式 |
---|---|
线性核 | |
多项式核 | |
高斯核 | |
拉普拉斯核 | |
Sigmoid 核 |
要使用核函数,公式推导过程和前文一模一样,只需要把公式内的
本文采用 CC BY-SA 4.0 许可,本文 Markdown 源码:Haotian-BiJi
吆西