这两篇内容为西瓜书第 6 章支持向量机 6.1
,6.2
,6.4
,6.3
的内容:算法
因为本章内容较多,分为两篇来叙述。本篇所包含内容为间隔与支持向量和对偶问题。函数
如移动端没法正常显示文中的公式,右上角跳至网页便可正常阅读。学习
支持向量机 (support vector machines, SVM) 是一种二类分类模型。它的基本模型是定义在特征空间上的间隔最大的线性分类器,支持向量机还包括核技巧,这使它成为实质上的非线性分类器。优化
支持向量机的学习策略是间隔最大化,可形式化为一个求解凸二次规划 (convex quadratic programming) 的问题,也等价于正则化的合叶损失函数 (hinge loss function) 的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。spa
支持向量机的学习方法包含构建由简单到复杂的模型:线性可分支持向量机、线性支持向量机、非线性支持向量机。.net
下面,咱们将从这三部分来叙述开头列出的章节:code
- 线性可分支持向量机
- 线性支持向量机
- 非线性支持向量机
给定线性可分训练数据集,经过间隔最大化获得的分离超平面为:blog
$$ w^T·\phi(x)+b=0 $$ip
相应的分类决策函数get
$$ f(x)=sign(w^T·\phi(x)+b) $$
该决策函数称为线性可分支持向量机。
其中,$\phi(x)$ 是某个肯定的特征空间转换函数,它的做用是将 $x$ 映射到(更高的)维度。最简单最直接的就是 $\phi(x)=x$。
而求解分离超平面问题能够等价为求解相应的凸二次规划问题。
那么,这里的分离超平面是指什么呢?咱们来看下图:
当给定训练样本集 $D={(x_1, y_1), (x_2, y_2),···,(x_m, y_m)}$,$y_i\in{-1, +1}$时,分类学习最基本的想法就是基于训练集 $D$ 在样本空间中找到一个分离超平面,将不一样类别的样本分开。但能将训练样本分开的分离超平面可能有不少,咱们该去找哪个呢?此时,就须要咱们去寻找最大间隔分离超平面。
下面,咱们经过推导目标函数的过程,来进一步解释这里的“间隔”。
根据题设
$$ w^T·\phi(x)+b=0 $$
有
$$ y(x_i)>0\Leftrightarrow y_i=+1 \\ y(x_i)<0\Leftrightarrow y_i=-1 $$
可推出
$$ y_i·y(x_i)>0 $$
从而,由点到直线的距离公式可知,样本空间中任意点 $x$ 到超平面 $(w, b)$ 的距离可写为:
$$ d[s(w, b)]=\left( \frac{y^{(i)}(w_jx^{(i)}+b_j)}{||w_j||} \right) $$
这里 $i$ 表示第 $i$ 个样本, $j$ 表示第 $j$ 号直线。
则目标函数为
$$ \mathop{\arg\max}_{w,b} \{\frac{1}{||w||}\min \limits_{i}[y_i(w^T·\phi(x_i)+b)] \} $$
如今咱们来解释上式中的 $y_i(w^T·\phi(x_i)+b)$。
通常来讲,一个点距离分离超平面的远近能够表示分类预测的确信程度。下面咱们给出函数间隔和几何间隔的定义(参考自李航的《统计学习方法》)。
定义 7.2 (函数间隔)
对于给定的训练训练数据集 $D$ 和超平面 $(w,b)$,定义超平面 $(w,b)$ 关于样本点 $(x_i, y_i)$ 的函数间隔为
$$ \hat{r_i}=y_i(w·x_i+b) $$
定义超平面 $(w,b)$ 关于训练数据集 $D$ 的函数间隔为超平面 $(w,b)$ 关于 $D$ 中全部样本点 $(x_i, y_i)$ 的函数间隔最小值,即
$$ \hat{r}=\min \limits_{i=1,···,m}\hat{r_i} $$
定义 7.3 (几何间隔)
对于给定的训练训练数据集 $D$ 和超平面 $(w,b)$,定义超平面 $(w,b)$ 关于样本点 $(x_i, y_i)$ 的几何间隔为
$$ r_i=y_i\left(\frac{w}{||w||}·x_i+\frac{b}{||w||} \right) $$
定义超平面 $(w,b)$ 关于训练数据集 $D$ 的函数间隔为超平面 $(w,b)$ 关于 $D$ 中全部样本点 $(x_i, y_i)$ 的几何间隔最小值,即
$$ r=\min \limits_{i=1,···,m}r_i $$
其中,$||w||$ 为 $w$ 的 $L_2$ 范数。函数间隔能够表示分类预测的正确性及准确度,但选择分离超平面时,只有函数间隔还不够,只要成比例的改变 $w$ 和 $b$,超平面并无改变,但函数间隔就会改变。所以对分离超平面的法向量 $w$ 加某些约束,如规范化,$||w||=1$,使得间隔是肯定的,这时函数间隔成为几何间隔。
又有分割平面 $y=w^T·\phi(x)+b$。所以,咱们总能够经过等比缩放 $w$ 的方法,使得两类点的函数值都知足 $|y|\ge1$。就能够对目标函数作等价变化,下面咱们来创建目标函数。
简单来讲,这里的对目标函数作等价变化指调整直线系数(即 $w$ 的值),使得最近样本点到直线距离在分子上的值等于 1。即 $min[y_i(w^T·\phi(x)+b)]=1$。
约束条件:
$$ y_i(w^T·\phi(x_i)+b)\ge1 $$
原目标函数:
$$ \mathop{\arg\max}_{w,b} \{\frac{1}{||w||}\min \limits_{i}[y_i(w^T·\phi(x_i)+b)] \} $$
新目标函数:
$$ \mathop{\arg\max}_{w,b} \frac{1}{||w||} $$
即
$$ \max\limits_{w,b} \frac{1}{||w||} \\ s.t. \ y_i(w^T·\phi(x_i)+b)\ge1 \quad i=1,2,···,m $$
显然,为了最大化间隔,仅需最大化 $||w||^{-1}$,这等价于最小化 $||w||^2$。因而,上式可重写为
$$ \min \limits_{w,b} \frac{1}{2}||w||^2 \\ s.t. \ y_i(w^T·\phi(x_i)+b)\ge1 \quad i=1,2,···,m $$
这就是支持向量机的基本型。
以下图所示,距离超平面最近的几个训练样本点使式 $y_i(w^T·\phi(x_i)+b)\ge1$ 的等号成立,它们被称为支持向量 (support vector),两个异类支持向量到超平的距离之和为图中的 $\gamma$,它被称为间隔。
在介绍如何利用对偶问题求出参数 $w$ 和 $b$ 来获得最大间隔分离超平面所对应的模型以前,咱们先来看通常优化问题的拉格朗日乘子法。
通常优化问题的拉格朗日乘子法:
$$ minimize\quad f_0(x),\quad x\in R^n \\ subject to\quad f_i(x)\leq0, \quad i=1, ···, m \\ h_j(x)=0, \quad j=1, ···, p $$
拉格朗日函数:
$$ L(x, \lambda, v)=f_0(x)+\sum_{i=1}^{m}\lambda_if_i(x)+\sum_{j=1}^pv_jh_j(x) $$
拉格朗日对偶函数:
$$ g(\lambda,v)=infL(x, \lambda, v)=\inf \limits_{x\in D}(f_0(x)+\sum_{i=1}^{m}\lambda_if_i(x)+\sum_{i=1}^pv_ih_i(x) ) $$
若没有下确界,定义:
$$ g(\lambda,v)=-\infty $$
根据定义,显然有:对 $\forall \lambda >0$, $ \forall v$,若原优化问题有最优值 $p^*$,则有
$$ g(\lambda,v)<p^* $$
进一步,拉格朗日对偶函数为凹函数。
下面咱们对最终的目标函数使用拉格朗日乘子法来获得其对偶问题 (dual problem)。具体来讲,对该式的每条约束添加拉格朗日乘子 $\alpha_i\ge0$,则该问题的拉格朗日函数可写为
$$ L(w,b,\alpha)=\frac{1}{2}||w||^2 - \sum_{i=1}^{m} \alpha_i{y_i(w^T·\phi(x_i)+b)-1} $$
原问题是极小极大问题
$$ \min\limits _{w,b} \max\limits _\alpha L(w,b,\alpha) $$
原问题的对偶问题是极大极小问题
$$ \max\limits _\alpha \min\limits _{w,b} L(w,b,\alpha) $$
即先对 $w, b$ 求偏导,计算出 $w, b$ 回代后获得只剩 $\alpha$ 的式子。
将拉格朗日函数 $L(w,b,\alpha)$ 分别对 $w$,$b$ 求偏导,并令其为 0,则:
$$ \frac{\partial L}{\partial w} =0 \quad \Rightarrow \quad w=\sum_{i=1}^{m}\alpha_iy_i\phi(x_i) \\ \frac{\partial L}{\partial b} =0 \quad \Rightarrow \quad 0=\sum_{i=1}^{m}\alpha_iy_i $$
$$ L(w,b,\alpha)=\frac{1}{2}||w||^2-\sum_{i=1}^{m} \alpha_i{y_i(w^T·\phi(x_i)+b)-1} \\ =\frac{1}{2}w^Tw-w^T\sum_{i=1}^{m} \alpha_iy_i\phi(x_i)-b\sum_{i=1}^{m}{\alpha_i}{y_i}+\sum_{i=1}^{m}\alpha_i \\ =\frac{1}{2}w^T\sum_{i=1}^{m}\alpha_iy_i\phi(x_i)-w^T\sum_{i=1}^{m}-b·0+\sum_{i=1}^{m}\alpha_i \\ =\sum_{i=1}^{m}\alpha_i-\frac{1}{2}(\sum_{i=1}^{m}\alpha_iy_i\phi(x_i))^T\sum_{i=1}^{m}\alpha_iy_i\phi(x_i) \\ =\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j) $$
$$ \alpha^*=\mathop{\arg\max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_i\alpha_jy_iy_j\phi^T(x_i)\phi(x_j) $$
再求 $\min \limits_{w,b}L(w,b,\alpha)$ 对 $\alpha$ 的极大。
$$ \max\limits_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j)) \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$
整理上式添加负号,获得目标函数:
$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$
上述过程需知足 KKT (Karush-Kuhn-Tucker) 条件,即为了知足对偶函数的最大值等于原始问题的最小值。具体的 KKT 条件,这里再也不详细叙述。
构造并求解约束最优化问题
$$ \min\limits_{\alpha} \frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_j(\phi(x_i)\phi(x_j))-\sum_{i=1}^{m}\alpha_i \\ s.t. \ \sum_{i=1}^{m}\alpha_iy_i=0 \quad \alpha_i\ge0, i=1,2,···,m $$
求得最优解 $\alpha^*$。
计算
$$ w^*=\sum_{i=1}^{m}\alpha_i^*y_i\phi(x_i) \\ b^*=y_i-\sum_{i=1}^{m}\alpha_i^*y_i\phi(x_i)\phi(x_j) $$
求得分离超平面
$$ w^*\phi(x)+b^*=0 $$
分类决策函数
$$ f(x)=sign(w^*\phi(x)+b^*) $$
最后,咱们来看两个例子,来更好的理解线性可分支持向量机学习算法。
不足之处,欢迎指正。
$$$$