SVM支持向量机

1.背景

1.1 最早是由Vladimir N.Vapnik和Alexey Ya.Chervonekis在1963年提出。

1.2 目前的版本(soft margin)是由Corinna和Vapnik在1993年提出,并在1995年发表。

1.3 深度学习(2012)出现之前,SVM被认为机器学习中近十几年最成功,表现最好的算法。

2.介绍

2.1 例子:

在这里插入图片描述
两类?哪条线最好?

2.2 SVM寻找区分两类的超平面(hyper plane),使边际(margin)最大。

在这里插入图片描述
总共可以有多少个可能的超平面?无数条
如何选取使边际(margin)最大的超平面(Max Margin Hyperplane)?超平面到一侧最近点的距离最大
某一个超平面中,找出超平面到一侧最近点的距离最大
在这里插入图片描述在这里插入图片描述
在无数个超平面的距离中找出最大的距离 max margin
在这里插入图片描述

超平面到一侧最近点的距离等于到另一侧最近点的距离,两侧的超平面平行。

3.分类

线性可分(linear separable)和线性不可分(linear inseparable);硬间隔(hard margin)和软间隔(soft margin)
在这里插入图片描述

4.定义与公式建立

类比二维空间下,一元一次函数的建立,
超平面可以定义为:
W T ⋅ X + b = 0 W^T ·X + b = 0 WTX+b=0
其中,
W T : w e i g h t v e c t o t W^T:weight vectot WTweightvectot
W T = { w 1 T , w 2 T , . . . , w N T } W^T=\{w^T_1,w^T_2,...,w^T_N\} WT={w1T,w2T,...,wNT}

N是特征值的个数;
X是训练实例;
b是偏置。

4.2 二维特征向量

在这里插入图片描述
假设2维特征向量: X = ( x 1 , x 2 ) X =(x_1, x_2) X=x1,x2
超平面方程为: b + w 1 T x 1 + w 2 T x 2 = 0. b+w^T_1x_1+w^T_2x_2 = 0. b+w1Tx1+w2Tx2=0.

4.2.1 s.t.

所有超平面右上方的点满足:
b + w 1 T x 1 + w 2 T x 2 > 0 , f o r   y i = + 1 b+w^T_1x_1+w^T_2x_2 > 0,for\ y_i=+1 b+w1Tx1+w2Tx2>0for yi=+1
所有超平面左下方的点满足:
b + w 1 T x 1 + w 2 T x 2 < 0 , f o r   y i = − 1 b+w^T_1x_1+w^T_2x_2 < 0,for\ y_i=-1 b+w1Tx1+w2Tx2<0for yi=1
综合两式,得到: y i ( b + w i T x i ) = y i ( b + w 1 T x 1 + w 2 T x 2 ) > 0 , f o r   i = 1 , 2. y_i(b+w^T_ix_i)=y_i(b+w^T_1x_1+w^T_2x_2) > 0, for\ i = 1,2. yi(b+wiTxi)=yi(b+w1Tx1+w2Tx2)>0,for i=1,2.

4.2.2 距离

在这里插入图片描述所以最大边际距离为:
{ m a x   m a r g i n ( w , b ) = m a x   m i n w , b , x i   d i s t a n c e ( w , b , x i ) = m a x w , b   m i n x i ( 1 ∣ ∣ w ∣ ∣ ∣ w T x i + b ∣ ) y i ( w T x i + b ) > 0 \begin{cases} max\ margin(w,b)=max\ min_{w,b,x_i}\ distance(w,b,x_i)=max_{w,b}\ min_{x_i}{(\frac {1}{||w||}|w^Tx_i+b|)}\\ y_i(w^Tx_i+b)>0 \end{cases} {max margin(w,b)=max minw,b,xi distance(w,b,xi)=maxw,b minxi(w1wTxi+b)yi(wTxi+b)>0
即:
{ m a x w , b 1 ∣ ∣ w ∣ ∣ m i n x i y i ( w T x i + b ) y i ( w T x i + b ) > 0 \begin{cases} max_{w,b}\frac {1}{||w||}min_{x_i}y_i(w^Tx_i+b)\\y_i(w^Tx_i+b)>0 \end{cases} {maxw,bw1minxiyi(wTxi+b)yi(wTxi+b)>0
r = y i ( w T x i + b ) , 则 y i ( w T x i + b ) = r , r > 0 r = y_i(w^Tx_i+b),则y_i(w^Tx_i+b)=r,r>0 r=yi(wTxi+b),yi(wTxi+b)=r,r>0
y i = ± 1 , 那 么 边 界 平 面 方 程 为 w T x i + b = ∣ r ∣ y_i=±1,那么边界平面方程为w^Tx_i+b=|r| yi=±1wTxi+b=r
调整weight,使 r = 1 r=1 r=1,此时, m a x   m a r g i n ( w , b ) = m a x w , b 1 ∣ ∣ w ∣ ∣ max\ margin(w,b)=max_{w,b}\frac {1}{||w||} max margin(w,b)=maxw,bw1
超平面定义边际的两边:
{ H 1 : b + w 1 T x 1 + w 2 T x 2 ≥ 1 , f o r   y i = + 1 , H 2 : b + w 1 T x 1 + w 2 T x 2 ≤ 1 , f o r   y i = − 1. \begin{cases} H_1:b+w^T_1x_1+w^T_2x2≥1,for\ y_i=+1,\\ H_2:b+w^T_1x_1+w^T_2x2≤1,for\ y_i=-1. \end{cases} {H1:b+w1Tx1+w2Tx21for yi=+1,H2:b+w1Tx1+w2Tx21for yi=1.
如下图:

在这里插入图片描述
所有坐落在边际的两边的超平面上的点被称作“支持向量(support vectors)”
分界的超平面和H1或H2上任意一点的距离为 1 ∣ ∣ w ∣ ∣ \frac {1}{||w||} w1,其中||W||是向量的范数(norm)。

5 求解

5.1 SVM如何找出最大边际的超平面呢(MHH)?

利用一些数学推导,将公式 y i ( b + w i T x i ) > 1 y_i(b+w^T_ix_i)>1 yi(b+wiTxi)>1变为有限制的凸优化问题(convex quadratic optim)
利用Karush-Kuhn-Tucker(KTT)条件和拉格朗日公式,可以推出MMH可以被表示为以下决策边界(decision boundary)
分离超平面可以写成:
∑ i = 1 l λ i ∗ y i ( x ⋅ x i ) + b 0 ) = 0 \sum_{i=1}^l\lambda^*_iy_i(x·x_i)+b_0)=0 i=1lλiyi(xxi)+b0)=0
分类决策函数可以写成:
d ( x T ) = s i g n ( W ∗ T x + b ∗ ) = s i g n ( ∑ i = 1 l λ i ∗ y i ( x ⋅ x i ) + b 0 ) = s i g n ( ∑ i = 1 l λ i ∗ y i x i x T + b 0 ) d(x^T)=sign(W^{*T}x+b^*)=sign(\sum_{i=1}^l\lambda^*_iy_i(x·x_i)+b_0)=sign(\sum_{i=1}^l\lambda^*_iy_ix_ix^T+b_0) d(xT)=sign(WTx+b)=sign(i=1lλiyi(xxi)+b0)=sign(i=1lλiyixixT+b0)
其中, y i 是 支 持 向 量 点 x i 的 类 别 标 记 ; x T 是 要 测 试 的 实 例 ; y_i是支持向量点x_i的类别标记;x^T是要测试的实例; yixixT
λ i ∗ 和 b 0 都 是 单 一 数 值 型 参 数 ; l 是 支 持 向 量 点 的 个 数 。 \lambda^*_i和b_0都是单一数值型参数;l是支持向量点的个数。 λib0l

这就是说,分类决策函数只依赖于输入x和训练样本输入的内积。

5.2 硬间隔公式推导

在这里插入图片描述在这里插入图片描述对于给定的线性可分训练数据集,可以首先求对偶问题的解 λ ∗ \lambda^* λ;再利用对 w 和 b w和b wb的求导等于0的公式求得原始问题的解 w ∗ , b ∗ w^*,b^* w,b;从而得到分离超平面及分类决策函数。这种算法称为线性可分支持向量机的对偶学习算法。

5.3 软间隔公式推导

在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

6. 线性不可分情况

6.1 数据集在空间中对应的向量不可被一个超平面区分开。

6.2 两个步骤来解决:

在这里插入图片描述

一:利用一个非线性的映射把原数据及中的向量点转化到一个更高纬度的空间中;
二:在这个高纬度的空间中找到一个线性的超平面来根据线性可分的情况处理。

在这里插入图片描述

6.3 如何利用非线性映射把原始数据转化到高维中?

6.3.1 例子:

3维输入向量:
X = ( x 1 , x 2 , x 3 ) X=(x_1,x_2,x_3) X=(x1,x2,x3)
转化到6维空间 Z Z Z中去:
Φ 1 ( X ) = x 1 , Φ 2 ( X ) = x 2 , Φ 3 ( X ) = x 3 , Φ 4 ( X ) = ( x 1 ) 2 , Φ 5 ( X ) = x 1 x 2 , Φ 6 ( X ) = x 1 x 3 \Phi_1(X)=x_1,\Phi_2(X)=x_2,\Phi_3(X)=x_3,\\ \Phi_4(X)=(x_1)^2,\Phi_5(X)=x_1x_2,\Phi_6(X)=x_1x_3 Φ1(X)=x1Φ2(X)=x2Φ3(X)=x3Φ4(X)=(x1)2Φ5(X)=x1x2Φ6(X)=x1x3
新的决策超平面:
d ( Z ) = W T Z + b d(Z)=W^TZ+b d(Z)=WTZ+b
其中 W W W Z Z Z是向量,这个超平面是线性的,解出 W W W b b b之后,并且带入原方程:
d ( Z ) = w 1 T x 1 + w 2 T x 2 + w 3 T x 3 + w 4 T ( x 1 ) 2 + w 5 T x 1 x 2 + w 6 T x 1 x 3 + b = w 1 T z 1 + w 2 T z 2 + w 3 T z 3 + w 4 T z 4 + w 5 T z 5 + w 6 T z 6 + b d(Z)=w^T_1x_1+w^T_2x_2+w^T_3x_3+w^T_4(x_1)^2+w^T_5x_1x_2+w^T_6x_1x_3+b\\=w^T_1z_1+w^T_2z_2+w^T_3z_3+w^T_4z_4+w^T_5z_5+w^T_6z_6+b d(Z)=w1Tx1+w2Tx2+w3Tx3+w4T(x1)2+w5Tx1x2+w6Tx1x3+b=w1Tz1+w2Tz2+w3Tz3+w4Tz4+w5Tz5+w6Tz6+b

6.3.2 思考问题:

  1. 如何选择合理的非线性转化把数据转到高纬度中?
  2. 如何解决计算内积时算法复杂度非常高的问题?
    答案:使用核方法(kernel trick)
    在线性SVM中转化为最优化问题时求解的公式计算都是以内积(dot product)的形式出现的
    Φ ( X i ) Φ ( X j ) \Phi(X_i)\Phi(X_j) Φ(Xi)Φ(Xj)
    其 中   Φ ( X ) 其中\ \Phi(X)  Φ(X)是把训练集中的向量点转化到高维的非线性映射函数,因为内积的算法复杂度非常大,所以利用核函数来取代计算非线性映射函数的内积。

6.4 核方法

6.4.1 以下核函数和非线性映射函数的内积等同

K ( X i , X j ) = Φ ( X i ) Φ ( X j ) K(X_i,X_j)=\Phi(X_i)\Phi(X_j) K(Xi,Xj)=Φ(Xi)Φ(Xj)

6.4.2 核函数举例

在这里插入图片描述

6.4.3 常用的核函数(kernel functions)

在这里插入图片描述

7. SVM扩展

SVM扩展可解决多个类别分类问题:
对于每个类,有一个当前类和其他类的二类分类器(one-vs-rest)

8. 结论

  1. 训练好的模型的算法复杂度是由支持向量的个数决定的,而不是由数据的维度决定的。所以SVM不太容易产生overfitting;
  2. SVM训练出来的模型完全依赖于支持向量(Support Vectors),即使训练集里面所有非支持向量的点都被去除,重复训练过程,结果仍然会得到完全一样的模型;
  3. 一个SVM如果训练得出的支持向量个数比较小,SVM训练出的模型比较容易被泛化。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值