这两篇内容为西瓜书第 6 章支持向量机 6.1
,6.2
,6.4
,6.3
的内容:
- 6.1 间隔与支持向量
- 6.2 对偶问题
- 6.4 软间隔与正则化
- 6.3 核函数
由于本章内容较多,分为两篇来叙述。本篇所包含内容为软间隔与正则化和核函数。关于间隔与支持向量和对偶问题可点击支持向量机(一)查看。
如移动端无法正常显示文中的公式,右上角跳至网页即可正常阅读。
软间隔与正则化
线性可分问题的支持向量机学习方法,对线性不可分训练数据集是不适用的,因为这时上述方法的不等式约束并不能都成立。一个想法是将它扩展到线性不可分问题,这时就需要修改硬间隔最大化,使其成为软间隔最大化。
为此,引入软间隔 (soft margin) 的概念。直观的如下图所示:
具体来说,上一篇介绍的支持向量机形式是要求所有都满足约束条件,即所有样本都必须划分正确,这称为硬间隔 (hard margin),而软间隔则是允许某些样本不满足约束 $y_i(w^T·\phi(x)+b)\ge1$。当然,在最大化间隔的同时,不满足约束的样本应尽可能少。
若数据线性不可分,则增加松弛因子 $\xi \ge0$,使函数间隔加上松弛量大于等于 1.这样,约束条件变为
$$ y_i(w·x_i+b)\ge1-\xi_i $$
目标函数
$$ \min \limits_{w,b} \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i $$
这里,$C>0$ 称为惩罚参数,一般由应用问题决定,$C$ 值大时对误分类的惩罚增大,$C$ 值小时对误分类的惩罚减小。上式所示的最小化目标函数包含两层含义:使 $\frac{1}{2}||w||^2$ 尽量小即间隔尽量大,同时使误分类点的个数尽量小,$C$ 是调和二者的系数。
线性支持向量机的目标函数
$$ \min \limits_{w,b} \frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i \\ s.t. \ y_i(w^T·x_i+b)\ge1-\xi_i \quad i=1,2,···,m \\ \xi\ge0,\quad i=1,2,···,m $$
带松弛因子的 SVM 拉格朗日函数
拉格朗日函数
$$ L(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i - \sum_{i=1}^{m} \alpha_i(y_i(w·x_i+b)-1+\xi_i)-\sum_{i=1}^{m}\mu_i\xi_i $$
对 $w,b,\xi$ 求偏导
$$ \frac{\partial L}{\partial w} =0 \quad \Rightarrow \quad w=\sum_{i=1}^{m}\alpha_iy_ix_i \\ \frac{\partial L}{\partial b} =0 \quad \Rightarrow \quad 0=\sum_{i=1}^{m}\alpha_iy_i \\ \frac{\partial L}{\partial \xi_i} =0 \quad \Rightarrow \quad C-\alpha_i-\mu_i=0 $$
将以上三式代入目标函数,得
$$ \min\limits_{w,b,\xi}L(w,b,\xi,\alpha,\mu)=- \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_ix_j)+\sum_{i=1}^{m}\alpha_i $$
对上式求 $\alpha$ 极大,得
$$ \max\limits_{\alpha}- \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_ix_j)+\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \\ C-\alpha_i-\mu_i=0 \\ \alpha_i\ge0, \mu_i\ge0,\quad i=1,2,···,m $$
最终的目标函数
整理上述式子得到对偶问题:
$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_ix_j)-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \\ 0\leq \alpha \leq C,\quad i=1,2,···,m $$
由于引入了松弛因子,所以引入了超参数 $C$,超参数 $C$ 的指定,确定了 $\alpha$ 值的上限,因此权值 $w$ 的取值范围也就确定了。而这里的 $0\leq \alpha \leq C$ 是根据软间隔支持向量机的 KKT 条件进一步推出的,这里不进行详细叙述。
线性支持向量机学习算法
构造并求解约束最优化问题
$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(x_ix_j)-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \\ 0\leq \alpha \leq C,\quad i=1,2,···,m $$
求得最优解 $\alpha^*$。
计算
$$ w^*=\sum_{i=1}^{m}\alpha_i^*y_ix_i \\ b^*=\frac{\max\limits _{i:y=-1}w^*x_i + \min\limits _{i:y=1}w^*x_i}{2} $$
其中,在计算 $b^*$ 时,需要选择 $\alpha^*$ 的一个分量 $\alpha_i^*$ 适合条件 $0\leq \alpha_j^* \leq C$,来计算
$$ b^*=y_j-\sum_{i=1}^{m}y_i\alpha_i^*(x_i·x_j) $$
在实践中,往往取支持向量的所有值取平均作为 $b^*$。
最后,求得分离超平面
$$ w^*·x+b^*=0 $$
分类决策函数
$$ f(x)=sign(w^*·x+b^*) $$
以上所叙述的线性支持向量机,其学习策略为软间隔最大化,学习算法为凸二次规划。对其常见的三种损失函数进行分析,如下图:
hinge 损失:$l_{hinge}(z)=max(0,1-z)$
指数损失:$l_{exp}(z)=exp(-z)$
对数损失:$l_{log}(z)=log(1+exp(-z))$
核函数
前面我们假设样本是线性可分的,但对于上图所示的情形来说,它们就不是线性可分的。对于这样的问题,我们可以使用核函数 (kernel function),将原始输入空间映射到新的特征空间,从而使得原本线性不可分的样本可能在核空间可分。如下面的示意图所示:
常用核函数
- 多项式核函数:$ k(x_1,x_2)=(x_1·x_2+c)^d $
- 高斯核 RBF 核函数:$ k(x_1,x_2)=exp(-\gamma·||x_1-x_2||^2) $
- sigmoid 核函数:$ k(x_1,x_2)=tanh(x_1·x_2+c) $
在实际应用中,往往依赖先验领域知识或交叉验证等方案才能有效的选择核函数,如没有更多的先验信息,则可使用高斯核函数。
高斯核
$$ exp(-\frac{||x_i-x_j||^2}{2\sigma^2}) $$
高斯核是无穷维的,可由泰勒展开进行推导。
对应的支持向量机是高斯径向基函数 (radial basis function) 分类器。
高斯核的 $\gamma$ 值
$$ kernel(x_i, x_j)=exp[-\frac{||x_i-x_j||^2}{2\sigma^2}]=exp[-\gamma·||x_i-x_j||^2] $$
如上图所示,$\gamma$ 越大,越高瘦,则曲线沿着样本点很快衰减;$\gamma$ 越小,越矮胖。在这里当效果很好时,要注意是否会出现过拟合问题。
序列最小最优化算法
关于 SVM 中系数的求解,人们一般使用序列最小最优化 (sequential minimal optimization, SMO) 算法,这种算法 1998 年由 Platt 提出。这里主要介绍其思想,其简单的实现步骤可点击支持向量机实践查看。
SMO 算法是一种启发式算法,其基本思路是:如果所有变量的解都满足最优化问题的 KKT 条件,那么这个最优化问题的解就得到了,因为 KKT 条件是该最优化问题的充分必要条件。否则,因为有多个拉格朗日乘子,每次只选择其中的两个乘子做优化,其他因子认为是常数。即将 N 个解的问题,转换成两个变量的求解问题,并且目标函数是凸的,对子问题进行解析求解,直到所有变量满足 KKT 条件为止。
整个 SMO 算法包括两个部分:求解两个变量二次规划的解析方法和选择变量的启发式方法。
以上,就是关于支持向量机这一章的学习内容,它涉及到的内容较多,本文仅简单的介绍了较为重要和基础的部分。
不足之处,欢迎指正。
参考链接:
SCIKIT-LEARN : SUPPORT VECTOR MACHINES (SVM) II
$$$$
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。