【机器学习】SVM支持向量机算法

【机器学习】Support Vector Machine支持向量机算法

SVM简介

     支持向量机(Support Vector Machine,简称SVM)算法是一种分类算法,SVM算法的基本想法就是在特征空间中找到一个超平面将不同类别的样本分开,它的基本模型是指在特征空间中,使得不同类的样本的间隔最大的线性分类器。SVM算法是用来解决二分类问题的有监督学习算法,在引入了核方法后其也可以用来解决非线性问题。本文主要围绕线性可分支持向量机展开。 由于其在解决小样本、非线性及高维数据集中展现出许多特有的优势,因此其被广泛应用于各个领域。

SVM原理

     给定样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , … , ( x m , y m ) } D=\{(x_1,y_1),(x_2,y_2),\ldots,(x_m,y_m)\} D={(x1,y1),(x2,y2),,(xm,ym)} y i ∈ { − 1 , 1 } y_i\in\{-1,1\} yi{1,1},其中 x i x_i xi表示样本特征, y i y_i yi表示样本标签。学习的目的就是在特征空间中可以找到一个分离超平面,能将样本进行分类,分离超平面对应于方程则为 ω ⋅ x + b = 0 \omega\cdot x+b=0 ωx+b=0,它是由法向量 ω \omega ω和截距 b b b决定,可以表示为 ( ω , b ) (\omega,b) (ωb)
在这里插入图片描述
     此时,存在无数个超平面可以将样本分类。一个好的分离超平面应该是有较好的“冗余度”,如上图所示,对于黑色超平面,假如新的样本点比较靠近超平面,那么对其影响就会很大,而对红色超平面的影响就较小,因为红色超平面相对居中,即间隔较大。因此,我们利用最大化间隔来求得最优的分离超平面。接下来本文将对间隔进行介绍。

函数间隔

     如下图所示,三角形和圆形分别表示正负样本,其中 ◯ \bigcirc 表示正类, △ \triangle 表示负类,且训练集线性可分,中间的实线则表示使正负样本间隔正确划分且间隔最大的分离超平面。
在这里插入图片描述
     假如需要预测 A A A B B B C C C三个点的类别,可以看到,点 A A A距离分离超平面比较远,如果预测点 A A A为负类样本,那么其预测准确度较高;点 C C C距离分离超平面比较近,如果预测点 C C C为负类样本,那么其预测准确度较低;点 B B B的预测精确度则处于 A A A C C C之间。
     我们可以认为,一个点的分类预测的准确度与该点到分类超平面的距离大小是相关的。在分离超平面 ω ⋅ x + b = 0 \omega\cdot x+b=0 ωx+b=0确定的前提下, ∣ ω ⋅ x + b ∣ |\omega\cdot x+b| ωx+b可以相对地表示该点到超平面的距离大小,然后 ω ⋅ x + b \omega\cdot x+b ωx+b的符号与标签 y y y的符号是否一致可以表示该点的分类是否正确,如果两者符号一致,则表明分类正确,反之即表明分类错误。将两者相结合, y ( ω ⋅ x + b ) y(\omega\cdot x+b) y(ωx+b)既可以表示分类的正确性还可以表示分类的准确度,这个就是函数间隔(functional margin)
     对于函数间隔,给定训练集 D D D和超平面 ( ω , b ) (\omega,b) (ωb),样本点 ( x i , y i ) (x_i,y_i) (xi,yi)所对应的函数间隔为:
γ ^ i = y i ( ω ⋅ x i + b ) \widehat{\gamma}_i=y_i(\omega\cdot x_i+b) γ i=yi(ωxi+b)而对于训练集 D D D的函数间隔,这里取训练集 D D D中全部样本的函数间隔的最小值,即:
γ ^ = min ⁡ γ ^ i \widehat{\gamma}=\min\widehat{\gamma}_i γ =minγ i     然而在选择最优分离超平面时,仅靠函数间隔是不够的的,因为只要成比例的改变 ω \omega ω b b b,例如将它们改为 3 ω 3\omega 3ω 3 b 3b 3b,该超平面没有改变,但是函数间隔却变成了原来的3倍。这样子的话,就不能保证最优分离超平面的唯一性。为了解决该状况,我们对分离超平面的法向量 ω \omega ω加一定的约束限制,如规范化,令 ∣ ∣ ω ∣ ∣ = 1 ||\omega||=1 ω=1,使得间隔是确定的,此时函数间隔就变成了几何间隔(geometric margin)

几何间隔

     如果给出超平面 ( ω , b ) (\omega,b) (ωb)以及其法向量 ω \omega ω,那么一个点到该超平面的距离为:
γ i = ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ \gamma_i=\frac{\omega}{||\omega||}\cdot x_i+\frac{b}{||\omega||} γi=ωωxi+ωb其中 ∣ ∣ ω ∣ ∣ ||\omega|| ω表示 ω \omega ω L 2 L_2 L2范数,当然上式是在 y i = + 1 y_i=+1 yi=+1时的距离。
     因此对于给定的样本集 D D D和超平面 ( ω , b ) (\omega,b) (ωb),定义超平面 ( ω , b ) (\omega,b) (ωb)关于样本点 ( x i , y i ) (x_i,y_i) (xiyi)的几何间隔为:
γ i = y i ( ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ ) \gamma_i=y_i(\frac{\omega}{||\omega||}\cdot x_i+\frac{b}{||\omega||}) γi=yi(ωωxi+ωb)而对于训练集 D D D的几何间隔,这里取训练集 D D D中全部样本的几何间隔的最小值,即:
γ = min ⁡ γ i \gamma=\min\gamma_i γ=minγi     我们可以看到,函数间隔与几何间隔有以下的关系:
γ i = γ ^ i ∣ ∣ ω ∣ ∣ \gamma_i=\frac{\widehat{\gamma}_i}{||\omega||} γi=ωγ i γ = γ ^ ∣ ∣ ω ∣ ∣ \gamma=\frac{\widehat{\gamma}}{||\omega||} γ=ωγ 从以上关系可以看到,如果 ∣ ∣ ω ∣ ∣ = 1 ||\omega||=1 ω=1,那么函数间隔与几何间隔相等。此时,如果 ω \omega ω b b b成比例扩大缩小,函数间隔也成比例扩大缩小,但是几何间隔不变。

间隔最大化

     SVM的基本思路是找到可以正确划分训练集且几何间隔最大的分离超平面。间隔最大化的直观解释是:对训练数据集找到几何间隔最大的超平面意味着以充分大的准确度对训练数据进行分类。通俗的讲,不仅将正负样本完成分类,而且对最难分类的样本(离超平面最近的点)也有足够大的准确度将它们分开。这样的超平面对未知的新样本也有很好的分类预测能力。
     为了去找到这一个几何间隔最大的分离超平面,这个问题可以表示为一个约束优化问题:
max ⁡ ω , b γ s . t . y i ( ω ∣ ∣ ω ∣ ∣ ⋅ x i + b ∣ ∣ ω ∣ ∣ ) ⩾ γ \begin{aligned} &\max_{\omega,b} && \gamma \\ \\ &s.t. && y_i(\frac{\omega}{||\omega||}\cdot x_i+\frac{b}{||\omega||})\geqslant\gamma \end{aligned} ω,bmaxs.t.γyi(ωωxi+ωb)γ其中 i = 1 , 2 , ⋯ , N i=1,2,\cdots,N i=1,2,N。上式目标函数说明我们希望最大化超平面 ( ω , b ) (\omega,b) (ωb)关于训练集的几何间隔,约束条件说明每个样本到超平面的几何间隔至少是 γ \gamma γ
     考虑到几何间隔与函数间隔的关系,可以改写为:
max ⁡ ω , b γ ^ ∣ ∣ ω ∣ ∣ s . t . y i ( ω ⋅ x i + b ) ⩾ γ ^ \begin{aligned} &\max_{\omega,b} && \frac{\widehat{\gamma}}{||\omega||} \\ \\ &s.t. && y_i(\omega\cdot x_i+b)\geqslant \widehat{\gamma} \end{aligned} ω,bmaxs.t.ωγ yi(ωxi+b)γ      函数间隔 γ ^ \widehat{\gamma} γ 的取值并不影响最优化问题的解,因为假设将 ω \omega ω b b b成比例改变为 λ ω \lambda\omega λω λ b \lambda b λb,此时函数间隔变为 λ γ ^ \lambda \widehat{\gamma} λγ 。我们可以看到函数间隔的改变对我们的问题没有影响。因此,我们这里取 γ ^ = 1 \widehat{\gamma}=1 γ =1,并将 γ ^ = 1 \widehat{\gamma}=1 γ =1代入上式的最优化问题,同时,将最大化问题转化为最小化问题,可得到:
min ⁡ ω , b 1 2 ∣ ∣ ω ∣ ∣ 2 s . t . y i ( ω ⋅ x i + b ) − 1 ⩾ 0 \begin{aligned} &\min_{\omega,b} && \frac{1}{2}||\omega||^2 \\ \\ &s.t. && y_i(\omega\cdot x_i+b)-1\geqslant 0 \end{aligned} ω,bmins.t.21ω2yi(ωxi+b)10可以看到,这是一个凸二次规划问题。
     下图所示为简单的间隔示意图,加粗的样本为支持向量,支持向量是距离分离超平面最近的样本。
在这里插入图片描述

求解过程

     对于上述上述的凸二次规划问题,这里使用拉格朗日乘子法求解其对偶问题来得到原始问题的最优解。首先使用拉格朗日乘子法得到其对偶问题。对上式的约束条件添加拉格朗日乘子 α i ⩾ 0 \alpha_i\geqslant 0 αi0,即:
L ( ω , b , α ) = 1 2 ∣ ∣ ω ∣ ∣ 2 + ∑ i = 1 N α i ( 1 − y i ( ω T x i + b ) ) L(\boldsymbol\omega,b,\boldsymbol\alpha)= \frac{1}{2}||\omega||^2+\sum _{i=1}^{N}\alpha_i(1-y_i(\omega^Tx_i+b)) L(ω,b,α)=21ω2+i=1Nαi(1yi(ωTxi+b))其中 α = ( α 1 , α 2 , … , α N ) \boldsymbol\alpha=(\alpha_1,\alpha_2,\ldots,\alpha_N) α=(α1,α2,,αN)。令 L ( ω , b , α ) L(\boldsymbol\omega,b,\boldsymbol\alpha) L(ω,b,α) ω \boldsymbol\omega ω b b b的偏导为零可得:
ω = ∑ i = 1 N α i y i x i 0 = ∑ i = 1 N α i y i \begin{aligned} \boldsymbol\omega & = & \sum_{i=1}^N \alpha_iy_i \bm{x}_i \\ 0 & = & \sum_{i=1}^N \alpha_iy_i \end{aligned} ω0==i=1Nαiyixii=1Nαiyi将上面两个式子代入到拉格朗日函数中,就可以将 L ( ω , b , α ) L(\boldsymbol\omega,b,\boldsymbol\alpha) L(ω,b,α)中的 ( ω (\boldsymbol\omega (ω b b b消去,就可以得到原问题的对偶问题:
L ( ω , b , α ) = 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i − ∑ i = 1 N α i y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) = ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) \begin{aligned} L(\boldsymbol\omega,b,\boldsymbol\alpha)& =\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(\bm x_i\cdot\bm x_j)+\sum_{i=1}^N\alpha_i -\sum_{i=1}^N\alpha_iy_i((\sum_{j=1}^N\alpha_jy_j\bm x_j)\cdot\bm x_i+b)\\ & = \sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(\bm x_i\cdot\bm x_j)\\ \end{aligned} L(ω,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi((j=1Nαjyjxj)xi+b)=i=1Nαi21i=1Nj=1Nαiαjyiyj(xixj)即:
max ⁡ α ∑ i = 1 N α i − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) s . t . ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} &\max_{\bm\alpha} &&\sum_{i=1}^N\alpha_i-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(\bm x_i\cdot\bm x_j) \\ \\ &s.t. && \sum_{i=1}^N \alpha_iy_i=0 \\ & &&\alpha_i\geqslant 0,\quad i=1,2,\ldots,N \end{aligned} αmaxs.t.i=1Nαi21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi=0αi0,i=1,2,,N     将目标函数由求最大转换成求最小,即:
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 α i ⩾ 0 , i = 1 , 2 , … , N \begin{aligned} &\min_{\bm\alpha} &&\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(\bm x_i\cdot\bm x_j)-\sum_{i=1}^N\alpha_i \\ \\ &s.t. && \sum_{i=1}^N \alpha_iy_i=0 \\ & &&\alpha_i\geqslant 0,\quad i=1,2,\ldots,N \end{aligned} αmins.t.21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=0αi0,i=1,2,,N     根据上述对偶问题,假设通过SMO算法求解得到的 α \bm \alpha α的解是 α ∗ = ( α 1 ∗ , α 2 ∗ , … , α N ∗ ) T \bm \alpha^*=(\alpha_1^*,\alpha_2^*,\ldots,\alpha_N^*)^T α=(α1,α2,,αN)T,那么就可以由 α ∗ \bm \alpha^* α求得原始问题的 ω \bm\omega ω b b b所对应的解。
ω ∗ = ∑ i = 1 N α i ∗ y i x i \bm\omega^*=\sum_{i=1}^N\alpha_i^*y_ix_i\\ ω=i=1Nαiyixi对于 b ∗ b^* b的求解,我们首先需要找出某个支持向量,即满足 α j ∗ > 0 \alpha_j^*>0 αj>0对应的样本 ( x j , y j ) (x_j,y_j) (xj,yj),然后求得 b ∗ b^* b为:
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b=yji=1Nαiyi(xixj)     假设我们有 S S S个支持向量,则对应我们求出 S S S b ∗ b^* b,理论上这些 b ∗ b^* b都可以作为最终的结果, 但是我们一般采用一种更健壮的办法,即求出所有支持向量所对应的 b ∗ b^* b,然后将其平均值作为最后的结果。
b ∗ = 1 S ∑ i = 1 S b i ∗ b^*=\frac{1}{S}\sum_{i=1}^Sb_i^* b=S1i=1Sbi     这样最终的分离超平面为:
w ∗ ⋅ x + b ∗ = 0 w^∗\cdot x+b^∗=0 wx+b=0     最终的分类决策函数为: f ( x ) = s i g n ( w ∗ ⋅ x + b ∗ ) f(x)=sign(w^∗\cdot x+b^∗) f(x)=sign(wx+b)其中由于原始问题中含有不等式约束,因此上述的过程需要满足KKT条件。

KKT条件

     本文将简单介绍KKT条件,考虑标准约束优化问题:
min ⁡ f ( x ) s . t . g j ( x ) = 0 , j = 1 , 2 , … , m h k ( x ) ≤ 0 , k = 1 , 2 , … , p \begin{aligned} &\min &&f(\bm x)\\ &s.t. && g_j(\bm x)=0 ,\quad j=1,2,\ldots,m\\ & &&h_k(\bm x)\leq0 ,\quad k=1,2,\ldots,p \end{aligned} mins.t.f(x)gj(x)=0,j=1,2,,mhk(x)0,k=1,2,,p定义上式的拉格朗日函数为:
L ( x , λ j , μ j ) = f ( x ) + ∑ j = 1 m λ j g j ( x ) + ∑ k = 1 p μ k h k ( x ) L(\bm x,\bm \lambda_j,\bm\mu_j)=f(\bm x)+\sum_{j=1}^m \lambda_jg_j(\bm x)+\sum_{k=1}^p \mu_kh_k(\bm x) L(x,λj,μj)=f(x)+j=1mλjgj(x)+k=1pμkhk(x)其中 λ j \lambda_j λj是对应 g j ( x ) = 0 g_j(\bm x)=0 gj(x)=0的Lagrange乘子, μ k \mu_k μk是对应 h k ( x ) ≤ 0 h_k(\bm x)\leq0 hk(x)0的Lagrange乘子。KKT条件包括
∂ L ∂ x = 0 g j ( x ) = 0 , j = 1 , 2 , … , m h k ( x ) ≤ 0 , k = 1 , 2 , … , p μ k ≥ 0 μ k h k ( x ) = 0 \begin{alignedat}{3} \frac{\partial L}{\partial \bm x} & =0 \\ g_j(\bm x)& =0 ,\quad j=1,2,\ldots,m\\ h_k(\bm x)& \leq0 ,\quad k=1,2,\ldots,p\\ \mu_k&\geq0\\ \mu_kh_k(\bm x)&=0 \end{alignedat} xLgj(x)hk(x)μkμkhk(x)=0=0,j=1,2,,m0,k=1,2,,p0=0具体KKT条件的原理和细节这里就不再赘述。


如有错误,欢迎批评指出,谢谢!

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值