支持向量机(Support Vector Machine,SVM)属于有监督学习模型,主要用于解决数据分类问题。通常SVM用于二元分类问题,对于多元分类可将其分解为多个二元分类问题,再进行分类,主要应用场景有图像分类、文本分类、面部识别和垃圾邮件检测等领域。
以一个二元分类问题为例讲解模型原理。首先假设有两类数据,如图需要找出一条边界来将两类数据分隔开来。
下图中列出一些可行的分隔方式。在当前的数据集的条件下,三种分隔方式都是可行的,我们该如何做选择?
一般说来,需要选择的是具有较强分类能力的直线,有较稳定的分类结果和较强的抗噪能力,比如在数据集扩展之后如下图所示。在这三种分隔方式中,b的分隔效果更好。
找到最优分类数据的分界线,使得对样本数据的分类效果更好的方法就是要尽可能地远离两类数据点,即数据集的边缘点到分界线的距离d最大,这里虚线穿过的边缘点称作支持向量,分类间隔为2d。如下图所示。
在二维平面上,最优分界线:b
如何将二维分类问题拓展到三维,甚至更高维的空间中呢?
为了不失一般性,我们把最优分界线称分离超平面,用 分离超平面来划分高维空间中的数据集。
SVM是从线性可分情况下的最优分类面发展而来的。
支持向量:
在线性可分情况下,训练数据集的样本点中与分离超平面距离最近的样本点的实例称为支持向量。支持向量是使约束条件成立的点。即在$H_1$和$H_2$上的点就是支持向量。
间隔和间隔边界:
分类超平面:即 H
• 分类超平面:$(w \cdot x)+b = 0$,其中w是法向量 • 判决函数:$y_i=sgn({w} \cdot x+{b}) \quad y_i \in {-1,1}$ • 最大间隔问题:在间隔固定为1时,寻求最小的 ‖w‖支持向量
对于给定的训练数据集T和超平面(w, b),定义超平面(w,b)关于样本点($x_i, y_i$) 的函数间隔为 $$ \hat{\gamma_i}=y_i(w\cdot x_i+b) $$ 函数间隔最小值:$\hat{\gamma}=\min_{i=1,...,N}{\hat{\gamma_i}}$
函数间隔可以表示分类预测的正确性和确信度,但是成比例改变w和b时,如2w和2b,超平面没有改变,函数间隔却扩大了2倍,这时可以对分离超平面的法向量w加入某些约束,如规范化,$\begin{Vmatrix}w\end{Vmatrix}=1$, 使得间隔是确定的,这时函数间隔就成为几何间隔。
对于给定的训练数据集T和超平面(w, b),定义超平面(w,b)关于样本点($x_i, y_i$) 的几何间隔为 $$ \gamma_{i}=y_i(\frac{w}{||w||}x_i+\frac{b}{||w||}) $$ 几何间隔最小值:$\gamma=\min_{i=1,...,N}{\gamma_i}$
函数间隔和几何间隔的关系:
$$ \gamma_{i}=\frac{\hat{\gamma_i}}{||w||} \ \gamma=\frac{\hat{\gamma}}{||w||} $$ 如果$||w||=1$, 那么函数间隔和几何间隔相等。如果超平面参数w和b成比例的改变(超平面没有改变),函数间隔也因此比例改变,而几何间隔不变。
支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对于线性可分的训练集而言,它的分离超平面有无穷多个,但几何间隔最大的分离超平面是唯一的。这里的间隔最大化又称硬间隔最大化。
对训练数据集找到几何间隔最大的超平面意味着以充分大的确信度对训练集进行分类。不仅将正负实例点分开,而且对最难分的实例点(离超平面最近的点)也有足够大的确信度将它们分开。这样的超平面对未知的新实例有很好的分类预测能力。
间隔最大化(硬间隔最大化):选择正确分类线性可分的训练数据集中的硬间隔最大的一个分离超平面,这个分离超平面存在且唯一。那么将该问题建模为如下的约束最优化问题: $$ \max_{w,b} \gamma \ s.t. \quad y_i(\frac{w}{||w||}x_i+\frac{b}{||w||}) \geq \gamma,i=1,2,...,N $$ 如下图所示,其中间隔边界为$wx+b=1$和$wx+b=-1$,这两个间隔平面的中间平面为分离超平面$wx+b=0$,其中间隔最大表示为$\frac{2}{||w||}$。
在间隔固定为1时,寻求最小的$\begin{Vmatrix}w\end{Vmatrix}$
因为最优化目标就是最大化几何间隔,并且几何间隔与$\begin{Vmatrix}w\end{Vmatrix}$成反比,因此只需寻找最小的$\begin{Vmatrix}w\end{Vmatrix}$,即$\min\begin{Vmatrix}w\end{Vmatrix}$
可以用一个等价的函数代替 : $\frac{1}{2}min\begin{Vmatrix}w\end{Vmatrix}^2$
可以将上述问题转换为如下最优化问题,最大化$\frac{2}{||w||}$,相当于最小化$\frac{1}{2}{||w||}^2$: $$ \min_{w,b} \frac{1}{2}{||w||}^2 \ s.t. \quad y_i(wx_i+b)-1 \geq 0, i=1,2,...,N $$ 从而转换为求解凸二次规划问题,这里参考拉格朗日乘子法和KKT条件,用来求解约束条件下的最优化问题。
输入:线性可分训练数据集$T={(x_1,y_1),(x_2,y_2),...,(x_n,y_n)}$,其中,$x_i\in\chi=R^n$,$y_i\in Y={-1,+1}$,$i=1,2,...,N$
输出:最大间隔分离超平面和分类决策函数
构造并求解约束最优化问题:
$$ \min_{w,b} \frac{1}{2}{||w||}^2\ s.t. \quad y_i(wx_i+b)-1 \geq 0, i=1,2,...,N $$ 求得最优解${w}^$,$(b)^$
由此得到分离超平面:
$$ {w}^x+{b}^=0 $$ 和分类决策函数: $$ f(x)=sgn({w}^x+{b}^) $$
为解决这个约束问题的最优解,引入拉格朗日函数(lagrange): $$ L(w,b,\alpha)=\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2-\sum_{i=1}^n{\alpha_i[y_i(wx_i+b)-1]} $$ 其中 $\alpha\geq0$为拉格朗日乘子。为求函数最小值,分别对w、b、$\alpha_i$求偏微: $$ \begin{cases} \frac{\partial L}{\partial w}=0 \quad \Rightarrow \quad w=\sum_{i=1}^n{\alpha_iy_ix_i} \ \ \frac{\partial L}{\partial b }=0 \quad \Rightarrow \quad \sum_{i=1}^n{\alpha_iy_i} =0\ \ \frac{\partial L}{\partial \alpha_i}=0 \Rightarrow \quad \alpha_i[y_i(wx_i+b)-1]=0 \ \end{cases} $$ 可以将上述求最优平面问题转化为对偶问题
这是一个二次函数寻优的问题,存在唯一解。
若$a^$为最优解, $$ w^=\sum_{i=1}^n{\alpha_i^y_ix_i} $$ 式中$a_i^$为不为零的样本,即支持向量。$b^$是分类阈值, $$ b^=y_j-\sum_{i=1}^N{\alpha_i^y_i(x_i\cdot x_j)} $$ 求得分离超平面: $$ w^**x+b^=0 $$ 得到分类决策函数: $$ f(x)=sng{(w^**x)+b^*}=sng{\sum_{i=1}^n{\alpha_i^y_i(x_i \cdot x)+b^}} $$
数据集中有一些特异点,造成了线性不可分的情况,这种情况可以引进松弛变量来解决。
对每个样本点
同时,对每个松弛变量$\xi_i$,支付一个代价$\xi_i$. 目标函数由原来的 $\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2$ 变成
$$
\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2+C\sum_{i=1}^N\xi_i
$$
这里,
最小化目标函数包含两层含义:使 $\frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2 $ 尽量小即间隔尽量大,同时使误分类的点的个数尽量小。C是调和二者的系数。
由此可得,线性不可分的线性支持向量机的原始问题: $$ \min_{w,b,\xi} \quad \frac{1}{2}\begin{Vmatrix}w\end{Vmatrix}^2 +C\sum_{i=1}^N\xi_i\ \ s.t. \quad y_i[(w\cdot x_i)+b]\geq1-\xi_i, \quad (i=1,2,…N)\ \ \xi_i\geq0, \quad (i=1,2,…N) $$ w的解是唯一的,但b的解不唯一,b的解存在于一个区间。
对于给定的线性不可分的训练数据集,通过求解软间隔最大化问题(上式),得到的分离超平面为 $$ w^\cdot x+b^=0 $$ 分类决策函数为 $$ f(x)=sng(w^\cdot x+b^) $$ 线性支持向量机包含线性可分支持向量机。
原始问题的对偶问题是 $$ \min \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i \cdot x_j)- \sum_{i=1}^N \alpha_i \ s.t. \quad \sum_{i=1}^N \alpha_iy_i=0 \ 0 \leq \alpha_i \leq C, \quad i=1,2,...,N $$
对偶问题的求解过程:
原始最优化问题的拉格朗日函数是 $$ L(w,b,\xi,\alpha,\mu)= \frac{1}{2}||w||^2+C\sum_{i=1}^N\xi_i - \sum_{i=1}^N \alpha_i(y_i(w \cdot x_i+b)-1+\xi_i)-\sum_{i=1}^N \mu_i\xi_i \ 其中,\alpha_i\geq 0, \mu_i \geq0 $$ 对偶问题即是拉格朗日函数的极大极小问题。求得对偶问题是: $$ \max_\alpha \quad -\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N \alpha_i\alpha_jy_iy_j(x_i \cdot x_j)+ \sum_{i=1}^N \alpha_i \ \begin{aligned} &s.t. \quad \quad \sum_{i=1}^N \alpha_iy_i=0 \ & C-\alpha_i-\mu_i =0 \ &\alpha_i\geq0 \ &\mu_i\geq0, \quad i=1,2,...,N \end{aligned} $$
将约束条件变为
设 $\alpha^=(\alpha_1,\alpha_2,...,\alpha_N)^T$ 是对偶问题的一个解,若存在 $\alpha^$ 的一个分量 $\alpha_j^, 0\lt \alpha_j^ \lt C$ , 则原始问题的解 $w^, b^$ 可按下式求得:
$$
w^=\sum_{i=1}^N \alpha_i^ y_i x_i
\
b^= y_i- \sum_{i=1}^N y_i \alpha_i^(x_i \cdot x_j)
$$
选择 $\alpha^$ 的一个分量 $\alpha_j^$ 适合条件
由于原始问题对b的解并不唯一,所以实际计算时可以取在所有符合条件的样本点上的平均值。
由此可知,分离超平面为: $$ w^\cdot x+b^=\sum_{i=1}^N \alpha_i^* y_i( x \cdot x_i) + b^* =0 $$ 分类决策函数为: $$ f(x)=sng(w^\cdot x+b^)=sng { \sum_{i=1}^N \alpha_i^* y_i (x \cdot x_i)+b^*} $$
在线性不可分的情况下,将对偶问题的解 $\alpha^=(\alpha_1,\alpha_2,...,\alpha_N)^T$ 中对应于 $\alpha_i^\gt0$ 的样本点
软间隔的支持向量
若
若
若
若
对于非线性分类问题,我们可以使用核技巧(kernel trick)。
通过名为核函数的特征变换,增加新的特征,使得低维度空间中的线性不可分问题变为高维度空间中的线性可分问题。
一般来说,对于给定的一个训练数据集
我们可以通过映射将非线性分类问题转换为线性分类问题。
设原空间为
变换为新空间中的直线
$$
w_1z^{(1)}+w_2z^{(2)}+b=0
$$
在变换后的新空间里,直线
设X 是输入空间(欧式空间
注意,
在对偶问题的目标函数中的内积
$$
W(\alpha) = \frac{1}{2}\sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j K(x_i,x_j)-\sum_{i=1}^N \alpha_i
$$
同样,分类决策函数中的内积也可以用核函数代替,而决策分类函数式为
$$
f(x)=sng{\sum_{i=1}^N \alpha_i^* y_i \phi(x_i) \cdot \phi(x)+b^}=sng{\sum_{i=1}^N \alpha_i^ y_i K(x_i,x_)+b^*}
$$
这等价于经过映射函数 $\phi $ 将原来的输入空间变换到一个新的特征空间,将输入空间中的内积
线性核函数
多项式核函数
径向基核函数
Sigmoid核
字符串核函数
将原始问题转换成为对偶问题
假设$f(x), c_i(x),h_i(x)$ 是定义在
考虑约束最优化问题: $$ \min_{x\in R^n} f(x)\ s.t. \quad c_i(x)\geq0, \quad i=1,2,...k\ h_i(x)=0, \quad j=1,2,..l $$ 称此约束最优化问题为原始最优化问题或原始问题。
首先引入广义拉格朗日函数(generalized Lagrange function)
$$
L(x,\alpha,\beta)=f(x)+\sum_{i=1}^k{\alpha_ic_i(x)}+\sum_{j=1}^l{\beta_jh_j(x)}
$$
其中,$x=(x^1,x^2,...,x^n)^T \in R^n$,
假设给定某个x,如果 x 违反原始问题的约束条件,即存在某个 i 使得$c_i(w)\gt0$或者存在某个 j 使得$h_j(w)\neq0$, 那么就有 $$ θ_P(x) = \max_{\alpha,\beta:\alpha_i\geq 0} \Big[f(x) + \sum_{i=1}^k\alpha_ic_i(x) + \sum_{j=1}^l \beta_jh_j(x)\Big] = + \infty $$ 因为若某个 i 使约束$c_i(x)\gt0$, 则可令$\alpha_i\rightarrow + \infty$,若某个 j 使得$h_j(x)\neq0$, 则可令$\beta_j $ 使 $ \beta_jh_j(x)\rightarrow + \infty$,而将其余各$\alpha_i, \beta_j$ 均取值为0.
相反地,如果x满足约束条件式,则可知,$θ_P(x) =f(x)$ . 因此,
$$
θ_P(x) =\begin{cases}
f(x),x满足原始问题约束
\
+\infty, 其他
\end{cases}
$$
所以如果考虑极小化问题
$$
\min_x\theta_P(x)=\min_x\max_{\alpha,\beta:\alpha_i\geq0}L(x,\alpha,\beta)
$$
它与原始最优化问题是等价的,即它们有相同的解。问题
我们可以这样理解,拉格朗日函数相当于构造了一个含参函数,在满足约束条件的情况下,这个函数的值总是小于等于目标函数 f(x)。 而我们此时选取合适的参数
定义
$$
\theta_D(\alpha,\beta)=\min_xL(x,\alpha,\beta)
$$
再考虑极大化
可以将广义的拉格朗日函数的极大极小函数转换为约束最优化问题: $$ \max_{\alpha,\beta:\alpha_i \geq0}\theta_D(\alpha,\beta)=\max_{\alpha,\beta:\alpha_i \geq0}\min_xL(x,\alpha,\beta) \ s.t. \quad \alpha\geq0,i=1,2,...,k $$ 称为原始问题的对偶问题。定义对偶问题的最优值 $$ d^*=\max_{\alpha,\beta:\alpha_i \geq0}\theta_D(\alpha,\beta) $$ 称为对偶问题的值。
若原始问题和对偶问题都有最优值,则 $$ d^=\max_{\alpha,\beta:\alpha_i \geq0}\min_xL(x,\alpha,\beta)\leq \min_x\max_{\alpha,\beta:\alpha_i\geq 0}\ L(x, \alpha, \beta)=p^ $$
设 $x^$ 和 $\alpha^, \beta^$ 分别为原始问题和对偶问题的可行解,并且 $d^=p^$ , 则 $x^$ 和 $\alpha^, \beta^$ 分别是原始问题和对偶问题的最优解。
(Slater条件)
对于原始问题和对偶问题,假设函数f(x) 和
对于原始问题和对偶问题,假设函数f(x) 和
其中, $\alpha_i^c_i(x^) = 0,\quad i=1,2,\dots,k$ 为KKT的对偶互补条件。由此可知,若 $\alpha_i^\gt0,$ 则 $c_j(x^)=0$ .
关于KKT 条件的理解:前面三个条件是对于各个变量的偏导数为0(这就解释了一开始为什么假设三个函数连续可微,如果不连续可微的话,这里的偏导数存不存在就不能保证),后面四个条件就是原始问题的约束条件以及拉格朗日乘子需要满足的约束。
对比原始问题,对偶问题是先固定α,β,求最优化x的解,再确定参数α,β; 原始问题是先固定x,求最优化α,β的解,再确定x。
拉格朗日对偶性的求解分为两个步骤:
- 把原始的约束问题通过拉格朗日函数转化为无约束问题。
- 在满足KKT的条件下用求解对偶问题来代替求解原始问题,使得问题求解更加容易。
拉格朗日函数虽然一眼看去十分复杂,但是其实它是将所有的限定条件加上新引入的变量(拉格朗日乘子)构成了一个新的函数,这样就将限定条件转换为了未知变量。
总结一下原始问题和拉格朗日函数:从原始问题开始,通过拉格朗日函数重新定义一个无约束问题,这个无约束问题等价于原来的约束优化问题,从而将约束问题无约束化。也就是将d个变量和k个约束条件的最优化问题转换为d+k个变量的最优化问题。到此我们还是无法求解,我们需要将原始问题转换成对偶问题来求解。
若原始问题与对偶问题都有最优解,则 $$ d^=\max_{\alpha,\beta:\alpha_i \geq0}\min_xL(x,\alpha,\beta)\leq \min_x\max_{\alpha,\beta:\alpha_i\geq 0}\ L(x, \alpha, \beta)=p^ $$ 这个性质便叫做弱对偶性(weak duality),对于所有优化问题都成立,即使原始问题非凸。
与弱对偶性相对应的有一个强对偶性(strong duality) ,强对偶即满足:
$$
d^=p^
$$
强对偶是一个非常好的性质,因为在强对偶成立的情况下,可以通过求解对偶问题来得到原始问题的解,在 SVM 中就是这样做的。当然并不是所有的对偶问题都满足强对偶性 ,在 SVM 中是直接假定了强对偶性的成立,其实只要满足一些条件,强对偶性是成立的,比如说 Slater 条件与KKT条件。
总的来说就是说任何满足强对偶性的优化问题,只要其目标函数与约束函数可微,任一对原始问题与对偶问题的解都是满足 KKT 条件的。即满足强对偶性的优化问题中,若 $x^$ 为原始问题的最优解, $\alpha^, \beta^$ 为对偶问题的最优解,则可得 $x^,\alpha^, \beta^$ 满足 KKT 条件。
对于一个约束优化问题,找到其对偶问题,当弱对偶成立时,可以得到原始问题的一个下界。而如果强对偶成立,则可以直接求解对偶问题来解决原始问题。 SVM 就是这样的。对偶问题由于性质良好一般比原始问题更容易求解,在 SVM 中通过引入对偶问题可以将问题表示成数据的内积形式从而使得 kernel trick 的应用更加自然)。
仿射函数就是一个线性函数,其输入是n维向量,参数 A可以是常数,也可以是m×n的矩阵,b可以是常数,也可以是m维的列向量,输出是一个m维的列向量。在几何上,仿射函数是一个线性空间到另一个线性空间的变换。