机器学习算法——支持向量机(1)

阅读提示:文章中的斜体符号表示单个元素,加粗斜体表示向量。

1.前言

  支持向量机(support vector machines, SVM)也是一种二类分类模型,在前一篇文章中讲到,感知机的目标是求得一个能够将数据正确分类的分离超平面,而SVM则是要找到一个能将数据正确分类且间隔最大的分离超平面,即SVM不仅要找到一个分离超平面,而且要求以尽可能大的确信度将数据正确分类。SVM与感知机的另一个区别在于,当数据是线性可分的时候,感知机求得的分离超平面可能有无穷多个,而SVM有了间隔最大化的约束,最后求得的分离超平面解是唯一的。
  支持向量机可以分为3类,由简至繁分别为:线性可分支持向量机、线性支持向量机和非线性支持向量机,分别对应着数据线性可分、数据近似线性可分和数据线性不可分的情况。本文主要介绍第一种,即线性可分支持向量机,另外两种将在后续两篇文章中一一介绍。

2.函数间隔与几何间隔

  首先来说一下上文提到的间隔最大的含义。一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度。假设分离超平面为w⋅x+b\boldsymbol{w} \cdot \boldsymbol{x}+bwx+b,则∣w⋅xi+b∣|\boldsymbol{w} \cdot \boldsymbol{x}_i+b|wxi+b可以相对的表示为点xi\boldsymbol{x}_ixi距离分离超平面的远近,而通过w⋅xi+b\boldsymbol{w} \cdot \boldsymbol{x}_i+bwxi+b的符号与类标签yiy_iyi是否一致可以判断分类是否正确。所以可用γ^i=yi(w⋅xi+b)\hat{\gamma}_i = y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i+b)γ^i=yi(wxi+b)来表示分类的正确性与确信度,这里的γ^i\hat{\gamma}_iγ^i就是分离超平面关于样本点(xi,yi)(\boldsymbol{x}_i,y_i)(xi,yi)函数间隔,关于训练数据集TTT的函数间隔为γ^=min γ^i\hat{\gamma}=min\ \hat{\gamma}_iγ^=min γ^i
  函数间隔可以表示分类的正确性与确信度,但是SVM使用的间隔最大并不是函数间隔最大,因为对于分离超平面w⋅x+b\boldsymbol{w} \cdot \boldsymbol{x}+bwx+b,如果同比例地改变w\boldsymbol{w}wbbb,比如改为2w2\boldsymbol{w}2w2b2b2b,此时分离超平面并未改变,而函数间隔却变成了原来的2倍。为了解决这个问题,就有了几何间隔的概念。几何间隔在函数间隔的基础上对分离超平面加了个∣∣w∣∣||\boldsymbol{w}||w的约束,分离超平面关于样本点(xi,yi)(\boldsymbol{x}_i,y_i)(xi,yi)几何间隔数学表达式为:γi=yi(w∣∣w∣∣⋅xi+b∣∣w∣∣)\gamma_i=y_i(\frac{\boldsymbol{w}}{||\boldsymbol{w}||} \cdot \boldsymbol{x}_i+\frac{b}{||\boldsymbol{w}||})γi=yi(wwxi+wb),关于训练数据集TTT的几何间隔为γ=min γi\gamma=min\ \gamma_iγ=min γi。SVM所使用的正是几何间隔最大化。

3.线性可分支持向量机

  支持向量机学习的基本想法是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。对于线性可分的数据,这里的间隔最大也叫硬间隔最大,与接下来的文章中将要讨论的数据近似线性可分时的软间隔最大相对应。

3.1 间隔最大化

  间隔最大化的直观解释:不仅要将正负实例点分开,而且对于最难分的实例点(离超平面最近的点)也有足够大的确信度将他们分开。
  求间隔最大分离超平面的问题可以表示为下面的约束最优化问题:
w,bmax  γs.t. yi(w∣∣w∣∣⋅xi+b∣∣w∣∣)≥γ{_{\boldsymbol{w},b}^{max}\ \ \gamma}\\ s.t.\ y_i(\frac{\boldsymbol{w}}{||\boldsymbol{w}||} \cdot \boldsymbol{x}_i+\frac{b}{||\boldsymbol{w}||}) \ge \gammaw,bmax  γs.t. yi(wwxi+wb)γ
  考虑到函数间隔与几何间隔的关系:γ=γ^∣∣w∣∣\gamma=\frac{\hat{\gamma}}{||\boldsymbol{w}||}γ=wγ^,所以可以将上面的最优化问题改写为:
w,bmax  γ^∣∣w∣∣s.t. yi(w⋅xi+b)≥γ^{_{\boldsymbol{w},b}^{max}\ \ \frac{\hat{\gamma}}{||\boldsymbol{w}||}}\\s.t.\ y_i({\boldsymbol{w}} \cdot \boldsymbol{x}_i+{b}) \ge \hat{\gamma}w,bmax  wγ^s.t. yi(wxi+b)γ^
  如果将w和b\boldsymbol{w}和bwb按比例改变为λw和λb\lambda\boldsymbol{w}和\lambda bλwλb时,虽然这时的函数间隔也相应的会变成λγ^\lambda \hat{\gamma}λγ^,但是这个改变对上式的约束条件并没有影响,对上式的目标函数也没有影响,也就是说函数间隔γ^\hat{\gamma}γ^的取值并不影响最优化问题的解。这样,我们就可以取γ^=1\hat{\gamma}=1γ^=1,目标函数就变为了w,bmax1∣∣w∣∣{_{\boldsymbol{w},b}^{max}}\frac{1}{||\boldsymbol{w}||}w,bmaxw1,又由于最大化1∣∣w∣∣\frac{1}{||\boldsymbol{w}||}w1与最小化12∣∣w∣∣2\frac{1}{2}||\boldsymbol{w}||^221w2是等价的,所以就可对上面的约束问题再进行改写,这就得到了线性可分支持向量机学习的原始最优化问题
w,bmin 12∣∣w∣∣2s.t. yi(w⋅xi+b)−1≥0{_{\boldsymbol{w},b}^{min}}\ \frac{1}{2}||\boldsymbol{w}||^2\\s.t.\ y_i({\boldsymbol{w}} \cdot \boldsymbol{x}_i+{b})-1\ge 0w,bmin 21w2s.t. yi(wxi+b)10
对这个最优化问题求解,可以求得最优的w∗和b∗\boldsymbol{w}^*和b^*wb,这样就得到了线性可分支持向量机模型。

3.2 支持向量

  在线性可分的情况下,训练数据的样本点中与分离超平面距离最近的样本点称为支持向量。如图1所示,实线即为分离超平面,x1=(3,3)T和x3=(1,1)T\boldsymbol{x}_1=(3,3)^T和\boldsymbol{x}_3=(1,1)^Tx1=(3,3)Tx3=(1,1)T即为支持向量,x1和x3\boldsymbol{x}_1和\boldsymbol{x}_3x1x3所在的虚线为间隔边界。

图1 支持向量

  在决定分离超平面时只有支持向量起作用,其他实例点并不起作用。如果移动支持向量将改变所求的解;但是移动甚至去掉不是支持向量的实例点,则解是不会改变的。由于支持向量在确定分离超平面中起着决定性作用,所以这类模型才叫做支持向量机。

4.学习的对偶算法

  我们将第3.1节给出的最优化问题称为原始最优化问题,在实际应用过程中,一般不直接对原始问题进行求解,而是通过拉格朗日对偶性,先求解对偶问题的解,进而求得原始问题的解,这便是线性可分SVM的对偶算法。这样做的原因有两个:

  • 对偶问题往往更容易求解;
  • 方便后面引入核函数,进而推广到非线性分类问题。

4.1 对偶问题的推导

  首先根据3.1节的原始最优化问题构建拉格朗日函数:
L(w,b,α)=12∣∣w∣∣2−∑i=1Nαiyi(w⋅xi+b)+∑i=1Nαi L(\boldsymbol{w},b,\boldsymbol{\alpha})=\frac{1}{2}||\boldsymbol{w}||^2-\sum_{i=1}^{N}\alpha_i y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i+b)+\sum_{i=1}^{N}\alpha_i L(w,b,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi
其中,α=(α1,α2,...,αN)T\boldsymbol{\alpha}=(\alpha_1,\alpha_2,...,\alpha_N)^Tα=(α1,α2,...,αN)T为拉格朗日乘子向量。
  根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
αmax w,bmin L(w,b,α) {_\boldsymbol{\alpha}^{max}}\ {_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha}) αmax w,bmin L(w,b,α)所以,为了得到对偶问题的解,需要先求L(w,b,α)L(\boldsymbol{w},b,\boldsymbol{\alpha})L(w,b,α)w,b{\boldsymbol{w},b}w,b的极小,再求对α\boldsymbol{\alpha}α的极大。
  (1)求w,bmin L(w,b,α){_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})w,bmin L(w,b,α)
  将拉格朗日函数L(w,b,α)L(\boldsymbol{w},b,\boldsymbol{\alpha})L(w,b,α)分别对w,b{\boldsymbol{w},b}w,b求偏导并令其等于0:
∇wL(w,b,α)=w−∑i=1Nαiyixi=0∇bL(w,b,α)=−∑i=1Nαiyi=0 \nabla_{\boldsymbol{w}}L(\boldsymbol{w},b,\boldsymbol{\alpha})=\boldsymbol{w}-\sum_{i=1}^{N}\alpha_i y_i \boldsymbol{x}_i=0 \\\nabla_bL(\boldsymbol{w},b,\boldsymbol{\alpha})=-\sum_{i=1}^{N}\alpha_i y_i=0 wL(w,b,α)=wi=1Nαiyixi=0bL(w,b,α)=i=1Nαiyi=0  可以得到:
w=∑i=1Nαiyixi∑i=1Nαiyi=0 \boldsymbol{w}=\sum_{i=1}^{N}\alpha_i y_i \boldsymbol{x}_i \\ \sum_{i=1}^{N}\alpha_i y_i=0 w=i=1Nαiyixii=1Nαiyi=0
  将这两个式子带入拉格朗日函数可以得到:
L(w,b,α)=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαiyi((∑j=1Nαjyjxj)⋅xi+b)+∑i=1Nαi=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−b∑i=1Nαiyi+∑i=1Nαi=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi L(\boldsymbol{w},b,\boldsymbol{\alpha})=\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)- \sum_{i=1}^{N}\alpha_i y_i \big((\sum_{j=1}^{N}\alpha_j y_j \boldsymbol{x}_j) \cdot \boldsymbol{x}_i+b\big)+\sum_{i=1}^{N}\alpha_i \\ =\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-b\sum_{i=1}^{N}\alpha_i y_i +\sum_{i=1}^{N}\alpha_i \\ =-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i L(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1Nαi=21i=1Nj=1Nαiαjyiyj(xixj)i=1Nj=1Nαiαjyiyj(xixj)bi=1Nαiyi+i=1Nαi=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi  即w,bmin L(w,b,α)=−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαi {_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})=-\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i w,bmin L(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi  (2)求w,bmin L(w,b,α){_{\boldsymbol{w},b}^{min}}\ L(\boldsymbol{w},b,\boldsymbol{\alpha})w,bmin L(w,b,α)α\boldsymbol{\alpha}α的极大,即:
αmax −12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)+∑i=1Nαis.t. ∑i=1Nαiyi=0   αi≥0 {_\boldsymbol{\alpha}^{max}}\ -\frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)+\sum_{i=1}^{N}\alpha_i \\ s.t.\ \sum_{i=1}^{N}\alpha_i y_i =0\ \ \ \alpha_i \ge 0 αmax 21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαis.t. i=1Nαiyi=0   αi0  再将目标函数的求极大转换为求极小,就得到了线性可分支持向量机的对偶最优化问题表达式:
αmin 12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)−∑i=1Nαis.t. ∑i=1Nαiyi=0   αi≥0 {_\boldsymbol{\alpha}^{min}}\ \frac{1}{2}\sum_{i=1}^{N}\sum_{j=1}^{N}\alpha_i \alpha_j y_i y_j(\boldsymbol{x}_i \cdot \boldsymbol{x}_j)-\sum_{i=1}^{N}\alpha_i \\ s.t.\ \sum_{i=1}^{N}\alpha_i y_i =0\ \ \ \alpha_i \ge 0 αmin 21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαis.t. i=1Nαiyi=0   αi0

4.2 模型求解

  求解上面所推出的对偶问题,可以得到对偶问题的最优解α∗=(α1∗,α2∗,...,αN∗)T\boldsymbol{\alpha}^*=({\alpha}^*_1,{\alpha}^*_2,...,{\alpha}^*_N)^Tα=(α1,α2,...,αN)T。有了α∗\boldsymbol{\alpha}^*α之后,就可以进一步求得3.1节的原始最优化问题的解w∗和b∗\boldsymbol{w}^*和b^*wbw∗\boldsymbol{w}^*w的求解在4.1节已经给出,即:
w∗=∑i=1Nαi∗yixi \boldsymbol{w}^*=\sum_{i=1}^{N}\alpha^*_i y_i \boldsymbol{x}_i w=i=1Nαiyixi  下面来说一下b∗b^*b的求解。上式中的αi∗\alpha^*_iαi必然不可能全是0,即至少有一个αj∗>0\alpha^*_j>0αj>0。可以用反证法来证明,假设α∗=0\boldsymbol{\alpha}^*=0α=0,则根据上式可得w∗=0\boldsymbol{w}^*=0w=0,这显然不是原始问题的解,产生矛盾。根据KKT条件(具体可参考李航《统计学习方法》附录部分,需要pdf版的可以私聊获取),对于所有的αi∗\alpha^*_iαi有:
αi∗(yi(w∗⋅xi+b∗)−1)=0 \alpha^*_i(y_i({\boldsymbol{w}^*} \cdot \boldsymbol{x}_i+{b^*})-1)=0 αi(yi(wxi+b)1)=0则对于αj∗>0\alpha^*_j>0αj>0所对应的实例点(xj,yj)(\boldsymbol{x}_j,y_j)(xj,yj)有:
yj(w∗⋅xj+b∗)−1=0 y_j({\boldsymbol{w}^*} \cdot \boldsymbol{x}_j+{b^*})-1=0 yj(wxj+b)1=0由于yj∈{+1,−1}y_j \in \{+1,-1\}yj{+1,1},则有yj2=1{y_j}^2=1yj2=1,所以对上式两边同时yjy_jyj可得:
b∗=yj−∑i=1Nαi∗yi(xi⋅xj) b^*=y_j-\sum_{i=1}^{N}\alpha^*_i y_i(\boldsymbol{x}_i \cdot \boldsymbol{x}_j) b=yji=1Nαiyi(xixj)至此,线性可分支持向量机的模型求解就完成了。分离超平面可以写为:
∑i=1Nαi∗yi(xi⋅x)+b∗=0 \sum_{i=1}^{N}\alpha^*_i y_i (\boldsymbol{x}_i \cdot \boldsymbol{x})+b^*=0 i=1Nαiyi(xix)+b=0分离决策函数可以写为:
f(x)=sign(∑i=1Nαi∗yi(xi⋅x)+b∗) f(\boldsymbol{x})=\text{sign}(\sum_{i=1}^{N}\alpha^*_i y_i (\boldsymbol{x}_i \cdot \boldsymbol{x})+b^*) f(x)=sign(i=1Nαiyi(xix)+b)

4.3 求解示例

图2 线性可分SVM求解示例

5.参考资料

李航《统计学习方法》
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

llfighting2018

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值