通过实例揭开支持向量机的神秘面纱

最近在学习支持向量机,看了不少资料,但是由于实例较少,总感觉理解起来比较抽象,特别是线性不可分的时候。本文通过解决“异或”的分类问题,揭开了支持向量机的神秘面纱。
本文适合具有一定svm理论基础但是有些地方理解得比较模糊的朋友进行学习交流,如果从来没接触过svm,建议先学习svm基本理论。
原创不易,如果你觉得本文对你有帮助,请点一个赞,谢谢!

支持向量机(线性)的模型及其求解

本小节参考周志华老师的《机器学习》,建议阅读相关章节。
支持向量机的思路:在已知训练样本集D={( x 1 , y 1 x_1,y_1 x1,y1),( x 2 , y 2 x_2,y_2 x2,y2),…,( x m , y m x_m,y_m xm,ym)}, y i y_i yi ϵ \epsilon ϵ {-1,1},现在需要在样本空间中找到一个划分超平面,将不同类别的样本分开。在线性可分的条件下,超平面通过如下方程表示:
w T x + b = 0 ( 1.1 ) w^{T}x+b=0\qquad(1.1) wTx+b=0(1.1)
其中 w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd) d d d表示 x x x的维度。
我们的目的则是求解 w , b w,b w,b,使得计算出来的结果容错率能够达到最高。为了使得容错率达到最高,需要使得两个异类支持向量到超平面的距离之和 γ = 2 ∣ ∣ w ∣ ∣ \gamma =\frac{2}{||w||} γ=w2达到最大,最终求解目标表示为:
m i n w , b   1 2 ∥ w ∥ 2 ( 1.2 ) s . t .   y i ( w T x i + b ) ≥ 1 ,   i = 1 , 2 , . . . , m . \mathop{min}\limits_{w,b} \ \frac{1}{2}\left \| w \right \|^{2}\qquad(1.2) \\s.t.\ y_{i}(w^{T}x_{i}+b)\geq 1,\ i=1,2,...,m. w,bmin 21w2(1.2)s.t. yi(wTxi+b)1, i=1,2,...,m.
为了对上述表达式高效求解,需要经过一定的数学处理,即使用拉格朗日乘子法得到其对偶问题:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) ( 1.3 ) L(w,b,\alpha )=\frac{1}{2}\left \| w \right \|^{2}+\sum_{i=1}^{m}\alpha _{i}(1-y_{i}(w^{T}x_{i}+b))\qquad(1.3) L(w,b,α)=21w2+i=1mαi(1yi(wTxi+b))(1.3)
其中 α = ( α 1 ; α 2 ; . . . α m ) \alpha =(\alpha _{1};\alpha _{2};...\alpha _{m}) α=(α1;α2;...αm)。令 L ( w , b , α ) L(w,b,\alpha ) L(w,b,α) w w w b b b求偏导为零可得:

w = ∑ i = 1 m α i y i x i ( 1.4 ) \\w=\sum_{i=1}^{m}\alpha _{i}y_{i}x_{i}\qquad(1.4) w=i=1mαiyixi(1.4)
0 = ∑ i = 1 m α i y i \\0=\sum_{i=1}^{m}\alpha _{i}y_{i} 0=i=1mαiyi
α \alpha α可通过如下表达式求得:
m a x α   ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j ( 1.5 ) s . t .   ∑ i = 1 m α i y i = 0 α i ≥ 0 ,   i = 1 , 2 , . . . , m \mathop{max}\limits_{\alpha}\ \sum_{i=1}^{m}\alpha _{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _{i}\alpha _{j}y_{i}y_{j}\pmb{x_{i}^{T}x_{j}}\qquad(1.5) \\s.t.\ \sum_{i=1}^{m}\alpha_{i}y_{i}=0 \\ \alpha_{i}\geq 0,\ i=1,2,...,m αmax i=1mαi21i=1mj=1mαiαjyiyjxiTxjxiTxjxiTxj(1.5)s.t. i=1mαiyi=0αi0, i=1,2,...,m
求解出 α \alpha α后,及可求出w,b,最终求得超平面方程:
f ( x ) = w T x + b = ∑ i = 1 m α i y i x i T x + b ( 1.6 ) f(x)=w^{T}x+b=\sum_{i=1}^{m}\alpha _{i}y_{i}\pmb{x_{i}^{T}x}+b\qquad(1.6) f(x)=wTx+b=i=1mαiyixiTxxiTxxiTx+b(1.6)
需要注意的是上述超平面方程是一个“ 标 量 \pmb{标量} 标量”,而不是矢量,比如: x 1 + x 2 + 1 = 0 x_{1}+x_{2}+1=0 x1+x2+1=0

支持向量机(非线性)的模型及其求解

由于不是所有的数据都是线性可分的,对于线性不可分的数据,假设现在已知一个映射 φ \varphi φ,可以把低纬度的数据映射到高维,变得线性可分,我们只需要把上一小节中的x替换为 φ ( x ) \varphi(x) φ(x),则经过推导,我们可以用式(1.5)变换得来的如下式子求出对应的 α \alpha α
m a x α   ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j φ ( x i T ) φ ( x j ) ( 2.1 ) s . t .   ∑ i = 1 m α i y i = 0 α i ≥ 0 ,   i = 1 , 2 , . . . , m \mathop{max}\limits_{\alpha}\ \sum_{i=1}^{m}\alpha _{i}-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha _{i}\alpha _{j}y_{i}y_{j}\pmb{\varphi(x_{i}^{T})\varphi(x_{j})}\qquad(2.1) \\s.t.\ \sum_{i=1}^{m}\alpha_{i}y_{i}=0 \\ \alpha_{i}\geq 0,\ i=1,2,...,m αmax i=1mαi21i=1mj=1mαiαjyiyjφ(xiT)φ(xj)φ(xiT)φ(xj)φ(xiT)φ(xj)(2.1)s.t. i=1mαiyi=0αi0, i=1,2,...,m
求出 α \alpha α后,最终可以求得高维空间的超平面方程,如下所示:
f ( x ) = w T φ ( x ) + b = ∑ i = 1 m α i y i φ ( x i ) T φ ( x ) + b ( 2.2 ) \\f(x)=w^{T}\pmb{\varphi (x)}+b=\sum_{i=1}^{m}\alpha _{i}y_{i}\pmb{\varphi (x_{i})^{T}\varphi (x)}+b\qquad(2.2) f(x)=wTφ(x)φ(x)φ(x)+b=i=1mαiyiφ(xi)Tφ(x)φ(xi)Tφ(x)φ(xi)Tφ(x)+b(2.2)
需要注意的是,分割面在高维空间是一个平面,而在低维空间则是曲线(面),如果不借助于例子理解,始终感觉有点抽象。下面就以“异或”问题为例子,彻底揭开它的面纱。
现在有以下四个点,图像如图所示:

在这里插入图片描述
通过分析可知,在二维空间内不可能用一条直线将两类数据分开。
假设现在已知有某个映射 φ \varphi φ能够把这些点从二维映射到三维(先忽略这个映射是怎么来的),使得其在三维线性可分,其表达式如下所示:
φ ( x ) = [ x 1 2 , x 2 2 , 2 x 1 x 2 ] = [ z 1 , z 2 , z 3 ] ( 2.3 ) \\\varphi (x)=[x_{1}^{2},x_{2}^{2},\sqrt{2}x_{1}x_{2}]=[z_{1},z_{2},z_{3}]\qquad(2.3) φ(x)=[x12,x22,2 x1x2]=[z1,z2,z3](2.3)
则根据式(2.1),求出 α \alpha α的值如下所示:
α 1 = α 2 = α 3 = α 4 = 1 8 \\\alpha _{1}=\alpha _{2}=\alpha _{3}=\alpha _{4}=\frac{1}{8} α1=α2=α3=α4=81
又因为 w = ∑ i = 1 m α i y i x i , w=\sum_{i=1}^{m}\alpha _{i}y_{i}x_{i}, w=i=1mαiyixi,可以分别求出 w 0 w_{0} w0,且 b b b也可以用相关方法求出,这里不再详细描述,结果如下所示:
w 0 = − 1 8 [ 1 1 2 ] + 1 8 [ 1 1 − 2 ] + 1 8 [ 1 1 − 2 ] − 1 8 [ 1 1 2 ] = [ 0 0 − 2 2 ] b = 0 w_{0}= -\frac{1}{8}\begin{bmatrix}1\\ 1\\ \sqrt{2}\end{bmatrix} +\frac{1}{8}\begin{bmatrix}1\\ 1\\ -\sqrt{2}\end{bmatrix} +\frac{1}{8}\begin{bmatrix}1\\ 1\\ -\sqrt{2}\end{bmatrix} -\frac{1}{8}\begin{bmatrix}1\\ 1\\ \sqrt{2}\end{bmatrix} =\begin{bmatrix}0\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix} \\b=0 w0=81112 +81112 +81112 81112 =0022 b=0
所以根据式(2.2)求解出其超平面方程如下所示:
w 0 T φ ( x ) + b = [ 0 0 − 2 2 ] T [ x 1 2 , x 2 2 , 2 x 1 x 2 ] = 0 即 2 x 1 ∗ x 2 = 0 , 也 就 是 z 3 = 0 \\w_{0}^{T}\varphi (x)+b=\begin{bmatrix}0\\ 0\\ -\frac{\sqrt{2}}{2}\end{bmatrix}^{T} [x_{1}^{2},x_{2}^{2},\sqrt{2}x_{1}x_{2}]=0 \\即\sqrt{2}x_{1}*x_{2}=0,也就是z_{3}=0 w0Tφ(x)+b=0022 T[x12,x22,2 x1x2]=02 x1x2=0,z3=0
现在我们来判断一下 z 3 = 0 z_{3}=0 z3=0是不是高维空间的(最佳)分类面呢,
根据式(2.3),表2.1中的四个点映射为如下四个点,其图像如图所示:
在这里插入图片描述
可以看出, z 3 = 0 z_{3}=0 z3=0确实是映射后的高维空间的一个分割平面。但是 z 3 z_{3} z3= 2 x 1 ∗ x 2 \sqrt{2}x_{1}*x_{2} 2 x1x2,照理说 2 x 1 ∗ x 2 = 0 \sqrt{2}x_{1}*x_{2}=0 2 x1x2=0应该是原空间的一个分割面才对,但是求解出的结果 x 1 = 0 x_{1}=0 x1=0或者 x 2 = 0 x_{2}=0 x2=0,表示的是原空间的两条坐标轴,仿佛并不是原空间的分割面,这是怎么回事呢?
为了一探究竟,我们改变一下思维,既然 z 3 = 0 z_{3}=0 z3=0是高维空间的最佳分割面,那 z 3 = 1 z_{3}=1 z3=1也是高维空间的一个分割面(不是最佳的),对应的 z 3 z_{3} z3= 2 x 1 ∗ x 2 = 1 \sqrt{2}x_{1}*x_{2}=1 2 x1x2=1,即 x 2 = 1 2 x 1 x_{2}=\frac{1}{\sqrt{2}x_{1}} x2=2 x11,这不正是我们熟悉的反比例曲线吗?那这条反比例曲线是原空间的分割面(线)吗?我们作出其图像,如下图所示:
在这里插入图片描述
发现 x 2 = 1 2 x 1 x_{2}=\frac{1}{\sqrt{2}x_{1}} x2=2 x11确实是原空间的分割面,不过是“两条”反比例曲线。受上述启发,我们再来研究一下 2 x 1 ∗ x 2 = 0 = z 3 \sqrt{2}x_{1}*x_{2}=0=z_{3} 2 x1x2=0=z3,根据之前的结论, z 3 = 0 z_{3}=0 z3=0是三维空间的最佳分割面,那对应的 2 x 1 ∗ x 2 = 0 \sqrt{2}x_{1}*x_{2}=0 2 x1x2=0是原二维空间的最佳分割面吗?
现假设有曲线 2 x 1 ∗ x 2 = C \sqrt{2}x_{1}*x_{2}=C 2 x1x2=C C C C为常数,通过分析知道 C C C越小,则反比例曲线越贴近坐标轴,那么当 C C C=0的时候,则不正是与坐标轴重合了吗?我们用图像来表示上述内容:
在这里插入图片描述
所以说 2 x 1 ∗ x 2 = 0 \sqrt{2}x_{1}*x_{2}=0 2 x1x2=0也确实是原空间的最佳分割面,这原本是一个理所应该的结论,但是由于0的特殊性掩盖了映射的真实面目,通过这个例子,揭开了这层面纱。
更一般的,在高维空间中,令 z i z_{i} zi φ ( x ) \varphi (x) φ(x)的第i个分量,比如此例中的 φ ( x ) = [ x 1 2 , x 2 2 , 2 x 1 x 2 ] = [ z 1 , z 2 , z 3 ] = Z \varphi (x)=[x_{1}^{2},x_{2}^{2},\sqrt{2}x_{1}x_{2}]=[z_{1},z_{2},z_{3}]=Z φ(x)=[x12,x22,2 x1x2]=[z1,z2,z3]=Z
那么在高维空间中以 z i z_{i} zi为自变量,得出的分割面一定是平面,其表达式为 w 0 T Z + b = 0 w_{0}^{T}Z+b=0 w0TZ+b=0;而在对应的低维空间中,则为曲面(线),其表达式为 w 0 T φ ( x ) + b = 0 w_{0}^{T}\varphi (x)+b=0 w0Tφ(x)+b=0

支持向量机(非线性)的深入理解

在上节的计算中,我们很轻松愉快的找到了高维空间的分割面 z 3 = 0 z_{3}=0 z3=0,但是这是在映射函数φ(x)已知的情况下,在实际应用中,我们并不知道φ(x)的具体表达式,并且即使有具体表达式,其纬度也可能非常高,导致计算量非常大,应该怎么办呢?在解决这个问题之前先把上面式(2.2)中的 φ ( x i ) T φ ( x ) \varphi (x_{i})^{T}\varphi (x) φ(xi)Tφ(x)稍微进行一下变化:
φ ( x i ) T φ ( x ) = [ x i 1 2 , x i 2 2 , 2 x i 1 x i 2 ] T [ x 1 2 , x 2 2 , 2 x 1 x 2 ] = x i 1 2 x 1 2 + x i 2 2 x 2 2 + 2 x i 1 x i 2 x 1 x 2 = ( x 1 x i 1 + x 2 x i 2 ) 2 = ( x i T x ) 2 = k ( x i T x ) ( 3.1 ) \varphi (x_{i})^{T}\varphi (x) =[x_{i1}^{2},x_{i2}^{2},\sqrt{2}x_{i1}x_{i2}]^{^{T}}[x_{1}^{2},x_{2}^{2},\sqrt{2}x_{1}x_{2}] \\=x_{i1}^{2}x_{1}^{2}+x_{i2}^{2}x_{2}^{2}+2x_{i1}x_{i2}x_{1}x_{2} \\=(x_{1}x_{i1}+x_{2}x_{i2})^{2}=(x_{i}^{T}x)^{2}=k(x_{i}^{T}x)\qquad(3.1) φ(xi)Tφ(x)=[xi12,xi22,2 xi1xi2]T[x12,x22,2 x1x2]=xi12x12+xi22x22+2xi1xi2x1x2=(x1xi1+x2xi2)2=(xiTx)2=k(xiTx)(3.1)
神奇的一幕发生了,这表明之前的计算除了可以用 φ ( x i ) T φ ( x ) \varphi (x_{i})^{T}\varphi (x) φ(xi)Tφ(x)(先计算非线性映射φ,再计算它们的内积),还可以用 ( x i T x ) 2 (x_{i}^{T}x)^{2} (xiTx)2这种方式计算(先计算内积 x i T x x_{i}^{T}x xiTx,再计算非线性映射k)
受此启发,再来看刚刚的问题,在实际应用中我们不知道映射φ的具体表达式,但是由于φ的表达式一般来说有无穷多种,使得我们可以用 k ( x i T x ) k(x_{i}^{T}x) k(xiTx) 逼 近 \pmb{逼近} 逼近 φ ( x i ) T φ ( x ) \varphi (x_{i})^{T}\varphi (x) φ(xi)Tφ(x),都很有可能使得逼近的结果比较理想,更一般的,用 k ( x i T , x ) k(x_{i}^{T},x) k(xiT,x)去逼近它们,来达到分类的目的,常见的核函数有如下:
线 性 核 : k ( x i , x j ) = x i T x j 多 项 式 核 : k ( x i , x j ) = ( c + x i T x j ) d 高 斯 核 k ( x i , x j ) = e − ∥ x i − x j ∥ 2 2 σ 2 线性核:k(x_{i},x_{j})=x_{i}^{T}x^{j} \\多项式核:k(x_{i},x_{j})=(c+x_{i}^{T}x^{j})^{d} \\高斯核k(x_{i},x_{j})=e^{^{-\frac{\left \| x_{i}-x_{j} \right \|^{2}}{2\sigma 2}}} 线k(xi,xj)=xiTxjk(xi,xj)=(c+xiTxj)dk(xi,xj)=e2σ2xixj2
事实上,式(3.1)中的核即为 c = 0 , d = 2 c=0,d=2 c=0,d=2的多项式核。

总结与注意事项

1.支持向量机的功能是分类,在给定数据集及标签的条件下,通过求解中间参数 α \alpha α,最终求出 w w w, b b b,得到分割面方程。
2.如果在原空间线性不可分并且在已知映射 φ \varphi φ的情况下,可以先把数据从低位映射到高维,然后再用线性可分的求解方法去求解高维空间的分割平面,并且该分割平面在原低维空间对应的是分割曲面(线)。
3.在实际情况中,上一条涉及的 φ \varphi φ很难求解出来,并且维度可能非常高,所以用 k ( x i T , x ) k(x_{i}^{T},x) k(xiT,x)去逼近 φ ( x i ) T φ ( x ) \varphi (x_{i})^{T}\varphi (x) φ(xi)Tφ(x),通过调节参数,往往也能得到理想的结果。
4.支持向量机(非线性)的深入理解这一小节虽然简单并且没有做到图文并茂,但是我认为很重要
5.有些细节和错误还需要完善,由于时间关系,以后再处理

参考资料

周志华 《机器学习》第六章
https://blog.csdn.net/hugolyl/article/details/52210784
https://wenku.baidu.com/view/90a8dd27ba0d4a7303763a12

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值