支持向量机——SVM

支持向量机

支持向量机是一种经典的二分类模型,基本模型定义为特征空间中的最大间隔的线性分类器,其学习的优化目标便是间隔最大化,因此,支持向量机本身可以转换一个凸二次规划求解问题

函数间隔和几何间隔

对于二分类学习,假设现在的数据是线性可分的,这时分类学习最基本的想法就是找到一个合理的超平面,该超平面能够将不同类别的样本分开,类似于二维平面使用 a x + b y + c = 0 ax + by + c = 0 ax+by+c=0来表示,超平面实际上表示的就是高维平面,如图所示:
在这里插入图片描述
对数据点进行划分时,容易知道当超平面距离与其最近的数据点间隔越大,分类的鲁棒性能较好,即当新的数据点加入时,超平面对这些数据点的适应性最强。出错的可能性最小。因此需要让所选择的超平面最大化这个间隔Gap,常用的间隔定义有两种:一种称之为函数间隔,一种称之为几何间隔。下面将分别介绍这两种间隔,并对SVM为什么选择几何间隔做一些阐述。

函数间隔

在超平面 w ‘ x + b = 0 w^`x + b = 0 wx+b=0确定的情况下, ∣ w ‘ x ∗ + b ∣ |w^`x^* + b | wx+b,能够代表 x ∗ x^* x距离朝平面的远近,容易知道,当 w ‘ x ∗ + b > 0 w^`x^* + b>0 wx+b>0时,表示 x ∗ x^* x在朝平面一侧(正类,标记为1),当 w ‘ x ∗ + b < 0 w^`x^* + b<0 wx+b<0时,则表示 x ∗ x^* x在朝平面另一侧,(负类,类别为-1),因此 ( w ‘ x ∗ + b ) y ∗ (w^`x^* + b)y^* (wx+b)y的正负性恰能表示数据点 x ∗ x^* xs是否能被分类正确,于是便引出了函数间隔的定义 :
γ = y ( w T x + b ) = y f ( x ) \gamma = y(w^Tx + b) = yf(x) γ=y(wTx+b)=yf(x)

而超平面 ( w , b ) (w,b) (w,b)关于所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔最小值则为超平面在训练数据T上的函数间隔:
γ = min ⁡ γ i ( i = 1 , 2 , 3... , n ) \gamma = \min{\gamma_i} (i = 1,2,3...,n) γ=minγi(i=1,2,3...,n)
可以看出这样定义函数间隔在处理SVM上会有问题,当超平面两个参数 w , b w,b w,b同比例改变时,函数间隔也会跟着改变,但是实际上超平面还是源来的超平面:并设有变化:
例如 w 1 x 1 + w 2 x 2 + w 3 x 3 + b = 0 w_1x_1 + w_2x_2 + w_3x_3 + b = 0 w1x1+w2x2+w3x3+b=0 其实等价于
2 w 1 x 1 + 2 w 2 x 2 + 2 w 3 x 3 + 2 b = 0 2w_1x_1 + 2w_2x_2 + 2w_3x_3 + 2b = 0 2w1x1+2w2x2+2w3x3+2b=0 但计算函数的间隔却翻了一倍,从而引出了能真正度量点到超平面距离的概念。——几何间隔。

几何间隔

几何间隔代表则是数据点到朝平面的真实距离,对于朝平面 w ‘ x + b = 0 w^`x + b = 0 wx+b=0, w w w代表的则是该朝平面的法向量,设 x ∗ x^* x为朝平面外一点, x x x在法向量 w w w方向上的投影点, x x x与朝平面距离 r r r
则有: x ∗ = x − r ( w / ∣ ∣ w ∣ ∣ ) x*=x-r(w/||w||) x=xr(w/∣∣w∣∣) x ∗ x^* x在朝平面上,即 w ′ x ∗ + b = 0 w'x*+b=0 wx+b=0,代入即可得:
γ = w T x + b ∣ ∣ w ∣ ∣ = f ( x ) ∣ ∣ w ∣ ∣ \gamma = \frac{w^Tx + b}{||w||} = \frac{f(x)}{||w||} γ=∣∣w∣∣wTx+b=∣∣w∣∣f(x)

为了得到 r r r的绝对值,令 r r r乘上其对应类别 y y y,即可得到几何间隔的定义:
γ ∗ = y γ = γ ^ ∣ ∣ w ∣ ∣ \gamma^*= y\gamma = \frac{\hat{\gamma}}{||w||} γ=yγ=∣∣w∣∣γ^

从上述函数间隔和间隔定义可以看出,实质上函数间隔就是 ∣ w ′ x + b ∣ |w'x+b| wx+b,而几何间隔则是点到超平面的距离

最大间隔与支持向量

通过前面分析,函数间隔不适合用于最大化间隔,因此,这里我们要找到的最大间隔为几何间隔,于是最大间隔分类器目标函数定义为:
max ⁡ γ ˜ \max{\~{\gamma}} maxγ˜
y i ( w T x i + b ) = γ i ^ > = γ ^ i = 1 , 2 , . . . , n y_i(w^Tx_i + b) = \hat{\gamma_i} >= \hat{\gamma} \\i = 1,2,...,n yi(wTxi+b)=γi^>=γ^i=1,2,...,n

一般地令 γ ^ \hat{\gamma} γ^ 为1,(这样做的目的是为了方便推导和目标函数最优化),从而上述目标函数转化为:
1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1
s , t y i ( w T x i + b ) > = 1 i = 1 , 2 , 3... , n s,t \\ y_i(w^Tx_i + b) >=1 \\ i = 1,2,3...,n s,tyi(wTxi+b)>=1i=1,2,3...,n

对于 y ( w ′ x + b ) = 1 y(w'x+b)=1 y(wx+b)=1 的数据点,即下图位于 w ′ x + b = 1 或 w ′ x + b = − 1 w'x+b=1或w'x+b=-1 wx+b=1wx+b=1上的数据点,我们称之为支持向量,容易知道,所有支持向量,它们也恰好满足 y ( w ′ x + b ) = 1 y(w'x+b)=1 y(wx+b)=1,而所有不是支持向量的点,有 y ( w ′ x + b ) > 1 y(w'x+b)>1 y(wx+b)>1.

从原始优化问题到对偶问题

对于上述得到的目标函数,求 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} ∣∣w∣∣1的最大值相当于求,
∣ ∣ w ∣ ∣ 2 ||w||^2 ∣∣w2的最小值,因此,很容易将源来的目标函数转化为:
min ⁡ 1 2 ∣ ∣ w ∣ ∣ 2 s , t y i ( w T x i + b ) > = 1 i = 1 , 2 , . . . , n \min{\frac{1}{2}}||w||^2 \\ s,t \\ y_i(w^Tx_i + b)>=1 \\ i = 1,2,...,n min21∣∣w2s,tyi(wTxi+b)>=1i=1,2,...,n

即变为了一个带约束的凸二次规划问题,按照书上所述可以使用现成的优化计算包,(OP)优化包,求解,但由于SVM的特殊性,一般我们将原问题变换为其的对偶问题,接着在对其对偶问题进行求解,通过对偶问题进行求解,有下面两个原因:

  • 一是因为使用对偶问题更容易求解
  • 二是因为通过对偶问题求解出现了向量内积的形式,从而能更加自然地引出核函数。
    对偶问题,故名思意可以理解为优化等价问题,更一般地,将一个原始目标函数最小化转化为它的对偶函数最大化问题,对于当前优化问题,首先我们写出它的拉格朗日函数:
    L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 n α i ( y i ( w T x i + b ) − 1 ) L(w,b,\alpha) = \frac{1}{2}||w||^2 - \sum_{i = 1}^n\alpha_i(y_i(w^Tx_i + b) - 1) L(w,b,α)=21∣∣w2i=1nαi(yi(wTxi+b)1)

上式很容易满足,当其中有一个约束条件不满足时, L L L的最大值为 ∞ \infty (只需令其对应的 α \alpha α ∞ \infty 即可),
当所有的约束条件都满足时: L L L的最大值为 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w2,此时令所有的 α \alpha α为0,因此,实际上原问题等价于:
min ⁡ w , b θ ( w ) = min ⁡ w , b max ⁡ α i ≥ 0 L ( w , b , α ) = p ∗ \min_{w,b}\theta(w) = \min_{w,b}\max_{\alpha_i\geq0}L(w,b,\alpha) = p^* w,bminθ(w)=w,bminαi0maxL(w,b,α)=p

由于这个求解问题不好做,我们一般将原问题的最大值和最小值位置互换以下,(需满足KKT条件)变成原问题的对偶问题:
max ⁡ α i ≥ 0 min ⁡ w , b L ( w , b , α ) = d ∗ \max_{\alpha_i\geq0}\min_{w,b}L(w,b,\alpha) = d^* αi0maxw,bminL(w,b,α)=d

这样就将原问题的求最小变成对偶问题的求最大,接下来,便可以先求 L L L w , b w,b w,b的极小,再求 L 对 α L对\alpha Lα的极大:
1、首先求 L L L w , b w,b w,b的极小,分别求 L 关于 w , b L关于w,b L关于w,b的偏导,可以得出:
∂ L ∂ w = 0 ⇒ w = ∑ i = 1 n α i y i x i \frac{\partial L}{\partial w} = 0 \Rightarrow w = \sum_{i = 1}^n\alpha_iy_ix_i wL=0w=i=1nαiyixi
∂ L ∂ b = 0 ⇒ = ∑ i = 1 n α i y i = 0 \frac{\partial L}{\partial b} = 0 \Rightarrow = \sum_{i = 1}^n\alpha_iy_i = 0 bL=0⇒=i=1nαiyi=0
将上述结果带入L得出:

简要:要学会不断的打磨,公式,并且自己推导公式都行啦的样子与打算。

接着L关于α极大求解α(通过SMO算法求解,此处不做深入)。

max ⁡ α ∑ i = 1 n α i − 1 2 ∑ i , j = 1 n α i α j y i y j x i T x j \max_{\alpha} \sum_{i = 1}^n\alpha_i - \frac{1}{2}\sum_{i,j = 1}^n\alpha_i\alpha_jy_iy_jx^T_ix_j αmaxi=1nαi21i,j=1nαiαjyiyjxiTxj
s , t α i ≥ 0 i = 1 , 2 , . . . , n s,t \alpha_i \geq 0 \\ i = 1,2,...,n s,tαi0i=1,2,...,n
∑ i = 1 n α i y i = 0 \sum_{i = 1}^n\alpha_i y_i = 0 i=1nαiyi=0

最后便可以根据求解出的 α \alpha α,计算出 w , b w,b w,b,从而可以得到分类超平面函数:

在对新的点进行预测时,实际上就是将数据点 x ∗ x* x代入分类函数 f ( x ) = w ′ x + b f(x)=w'x+b f(x)=wx+b中,若 f ( x ) > 0 f(x)>0 f(x)>0,则为正类, f ( x ) < 0 f(x)<0 f(x)<0,则为负类,根据前面推导得出的 w 与 b w与b wb
在这里插入图片描述
,分类函数如下所示,此时便出现了上面所提到的内积形式。

这里 实际上只需计算新样本与支持向量的内积,因为对于非支持向量的数据点,其对应的拉格朗日乘子一定为0,根据最优化理论(K-T条件),对于不等式约束:
y ( w ′ x + b ) − 1 ≥ 0 y(w'x+b)-1≥0 y(wx+b)10,满足:

核函数

由于上述的超平面只能解决线性可分的问题,对于线性不可分的问题,例如:异或问题,我们需要使用核函数将其进行推广。一般地,解决线性不可分问题时,常常采用映射的方式,将低维原始空间映射到高维特征空间,使得数据集在高维空间中变得线性可分,从而再使用线性学习器分类。如果原始空间为有限维,即属性数有限,那么总是存在一个高维特征空间使得样本线性可分。若 ∅ ∅ 代表一个映射,则在特征空间中的划分函数变为:
f ( x ) = w T ϕ ( x ) + b f(x) = w^T\phi(x) + b f(x)=wTϕ(x)+b

按照同样的方法,先写出新目标函数的拉格朗日函数,接着写出其对偶问题,求 L L L关于 W W W b b b的极大值,最后运行SMO求解 α \alpha α,可以得出:
原对偶问题变为:

原分类函数变为:
F ( X ) = ∑ i = 1 n α i y i < ϕ ( x i ) , ϕ ( x ) > + b F(X) = \sum_{i = 1}^n\alpha_iy_i<\phi(x_i),\phi(x)> +b F(X)=i=1nαiyi<ϕ(xi),ϕ(x)>+b

求解过程,只涉及到了高维空间中的内积运算,由于特征空间中的维数可能会非常大,例如:若原始空间为二维,映射后的特征空间为5维,若原始空间为三维,映射后的特征空间为19维,之后甚至可能出现无穷维,根本无法进行内积运算,于是便引入了核函数概念。

因此,核函数可以直接计算隐式映射到高维特征空间后的向量内积,而不需要显式地写出映射后的结果,它虽然完成了将特征从低维到高维的转换,但最终却是在低维空间中完成向量内积计算,与高维特征空间中的计算等效(低维计算,高维表现),从而避免了直接在高维空间无法计算的问题。引入核函数后,原来的对偶问题与分类函数则变为:

对偶问题:

分类问题:
f ( x ) = ∑ i = 1 n α i y i K ( x i , x ) + b f(x) = \sum_{i = 1}^n\alpha_iy_iK(x_i,x) + b f(x)=i=1nαiyiK(xi,x)+b

因此,在线性不可分问题中,核函数选择成了支持向量机得最大变数,若选择了不合适的核函数,则意味着将样本映射到了一个不合适的特征空间,则极可能导致性能不佳,同时,核函数需要满足以下必要条件:

由于核函数构造十分困难,通常我们都是从一些常用的核函数中选择,下面列出了几种常用的核函数:

软间隔与支持向量机

前面的讨论中,我们主要解决了两个问题:当数据线性可分时,直接使用最大间隔的超平面划分;当数据线性不可分时,则通过核函数将数据映射到高维特征空间,使之线性可分。然而在现实问题中,对于某些情形还是很难处理,例如数据中有噪声的情形,噪声数据(outlier)本身就偏离了正常位置,但是在前面的SVM模型中,我们要求所有的样本数据都必须满足约束,如果不要这些噪声数据还好,当加入这些outlier后导致划分超平面被挤歪了,如下图所示,对支持向量机**的泛化性能造成很大的影响
**

为了解决这些问题,我们允许某些数据点不满足约束,即可以在一定程度上偏离超平面,同时使得不满足约束的数据点尽可能少,这便印出来软间隔支持向量机概念:

  • 允许某些数据点不满足约束 y ( w ′ x + b ) ≥ 1 y(w'x+b)≥1 y(wx+b)1
  • 同时又使得不满足约束的样本尽可能少
    这样的优化目标函数变为:
    min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m L 0 / 1 ( y i ( w T x i + b ) − 1 ) \min_{w,b}\frac{1}{2}||w||^2 + C\sum_{i = 1}^mL_{0/1}(y_i(w^Tx_i + b) - 1) w,bmin21∣∣w2+Ci=1mL0/1(yi(wTxi+b)1)

L 0 / 1 = L_{0/1} = L0/1=
L 0 / 1 = { 1 , z < 0 0 , o t h e r w i s e (1) L_{0/1}= \begin{cases} 1,\quad z< 0\\ 0, otherwise \end{cases} \tag{1} L0/1={1,z<00,otherwise(1)

如同阶跃函数,0~1损失函数显然效果不是最好的,但是数学不佳,因此,常用其他作为替代损失函数。

支持向量机中的损失函数为hinge损失,引入“松弛变量”,目标函数与约束条件可以写为:

其中 C C C为一个参数,控制着目标函数与新引入正则项之间的权重,这样显然每个样本数据都有一个对应的松弛变量,用以表示该样本不满足约束的程度,将新的目标函数转化为拉格朗日函数得到:

按照与之前相同的方法,先让 L L L求关于 w w w b b b以及松弛变量的极小,再使用SMO求出 α α α,有:

w w w带入 L L L化简,便得到其对偶问题:

将软间隔下产生的对偶问题与源对偶问题对比可以发现,新的对偶问题只是约束条件中的 α α α多出了一个上限 C C C,其它的完全相同,因此在引入核函数处理线性不可分问题时,便能使用与“硬间隔**”支持向量机完全相同的方**法。

学习心得

有时间好好学一学SMO算法:
大致基本上理解了,有时间把公式好好的推导一遍,并深入理解以下核函数公式,全部将其推导完成都行啦的理由与打算。
好好研究一下,全部将其研究透彻!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

big_matster

您的鼓励,是给予我最大的动力!

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

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

打赏作者

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

抵扣说明:

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

余额充值