手推SVM 支持向量机的简易推导和理解

前言

SVM - support vector machine, 俗称支持向量机,为一种监督学习算法,是一种二分类模型,学习策略是间隔最大化,可以形式为一个求解凸二次规划问题(此篇博客主要讲述),也等价于正则化的合页损失函数的最小化问题(Coursera 吴恩达 机器学习课程里面讲的SVM)。
支持向量机的优点:

  1. 可用于高维空间中的数据分类
  2. 在数据维度高于样本个数时,仍然可以有效学习
  3. 真正对支持向量机产生影响的是支持向量,通常支持向量只占一小部分,所以,其内存消耗低
  4. 多功能性。可选的核有很多,既有常用的核函数,也可自行定制特殊的核函数。

此篇博客大概会记录SVM的简单推导和大概理解,关于前置SVM的前置知识可以在之前的博文或者以下链接找到,在此就不加大篇幅阐述啦。

  1. 拉格朗日对偶性
  2. 希尔伯特空间
  3. 正定/非正定矩阵

    SVM

    关于这个图片的来源:2009年在Pittsburgh举行的G20峰会现场外面这位同学鱼目混珠的高举Support Vector Machine的牌子。你说你支持加强控制二氧化碳排放我懂,你支持的的这个Vector Machine是个什么东西啊? (有点冷)—Pluskid’s blog

    -

    1. 线性可分支持向量机

    我们首先先看SVM最简单的模型:线性可分支持向量机。学习目标是在特征空间找打一个分离超平面,将不同标记的样本分离且样本离分离超平面间隔最大。

    上图就很好的阐述了SVM的学习目标,找到了距离苹果与香蕉最大Margin的Boundary。其中涂上颜色的苹果和香蕉就称作支持向量(Support Vector),具体定义是训练数据集的样本点与分隔超平面最近的样本点。

    我们设该超平面函数为 f(x) f ( x )

    f(x)=sign(wx+b) f ( x ) = s i g n ( w ∗ x + b ∗ )

    函数间隔

    在特征空间中,一个点距离分隔超平面的远近可以表示为分类的确信程度。点 x x 距离超平面的距离为:

    |wx+b|

    这里我们引入函数间隔的概念,我们使用 γ^i γ ^ i 来表示点 xi x i 的函数间隔:

    γ^i=yi(wxi+b) γ ^ i = y i ( w ⋅ x i + b )

    几何间隔

    但是如果我们成倍的增大或者缩小 wb 和 和 和 w 和 b ,函数间隔也会成倍地增大或者缩小。为了固定间隔大小,我们继续引入集合间隔的概念。我们对法向量 w w 加某些约束,使得间隔是确定的:

    γi=yi(w||w||xi+b||w||)

    易得 γ=γ^||w|| γ = γ ^ | | w | | ,其中 ||w|| | | w | | w w 的L2范数。

    间隔最大化

    接下来回到最开始的问题上面了,如何使分隔超平面的间隔最大化呢?我们可以将问题描述成下面数学形式:

    maxw,bγs.t.  yi(w||w||xi+b||w||)γ

    考虑几何间隔和函数间隔的关系式,可以改写为:

    maxw,bγ^||w||s.t.  yi(wxi+b)γ max w , b γ ^ | | w | | s . t .     y i ( w ⋅ x i + b ) ≥ γ

    我们注意到函数间隔 γ^ γ ^ 的取值不影响最优化问题的解,我们取 γ^=1 γ ^ = 1 。并且可以得出最大化 1||w|| 1 | | w | | 和最小化 12||w||2 1 2 | | w | | 2 是等价的,于是得到下面的最优化问题:
    minw,b12||w||2s.t.  yi(wxi+b)10 min w , b 1 2 | | w | | 2 s . t .     y i ( w ⋅ x i + b ) − 1 ≥ 0

    将问题转化成此形式是为了方便我们之后用拉格朗日对偶性来求解。在此之前,我们可以证明最大间隔分离超平面的存在性唯一性。(此处证明略)

    引入拉格朗日对偶性

    可以分为两个步骤:

  4. 首先构建拉格朗日函数

    L(w,b,α)=12||w||2i=1Nαiyi(wxi+b)+i=1Nαi L ( w , b , α ) = 1 2 | | w | | 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i

    令L的偏导数为零,即
    wL(w,b,α)=0bL(w,b,α)=0}{w=Ni=1αiyixiNi=1αiyi=0 ∇ w L ( w , b , α ) = 0 ∇ b L ( w , b , α ) = 0 } ⟹ { w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0

    代入 L(w,b,α) L ( w , b , α ) 构造并求解约束最优化问题:
    minαs.t.12Ni=1Nj=1αiαjyiyj(xixj)Ni=1αiNi=1α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

    考虑原始最优化问题和对偶最优化问题,原始问题满足拉格朗日对偶性中的定理2的条件,所以存在 w,b,α w ∗ , b ∗ , α ∗ ,使 w,b w ∗ , b ∗ 是原始问题的解, α α ∗ 是对偶问题的解。 (这里省略了构造对偶问题,直接给出了结果)
    对线性可分训练数据集,假设对偶最优化问题对 α α 的解为α=(α1,α2,...,αN)T

  5. KTT条件成立,则

    wL(w,b,α)=wNi=1αiyixi=0bL(w,b,α)=Ni=1αiyi=0αi0, i=1,2,...,Nαi(yi(wxi+b)1)=0, i=1,2,...,Nyi(wxi+b)10, i=1,2,...,N ∇ w L ( w ∗ , b ∗ , α ∗ ) = w ∗ − ∑ i = 1 N α i ∗ y i x i = 0 ∇ b L ( w ∗ , b ∗ , α ∗ ) = − ∑ i = 1 N α i ∗ y i = 0 α i ∗ ≥ 0 ,   i = 1 , 2 , . . . , N α i ∗ ( y i ( w ∗ ⋅ x i + b ∗ ) − 1 ) = 0 ,   i = 1 , 2 , . . . , N y i ( w ∗ ⋅ x i + b ∗ ) − 1 ≥ 0 ,   i = 1 , 2 , . . . , N

    可得
    w=i=1Nαiyixi w ∗ = ∑ i = 1 N α i ∗ y i x i

    其中在 α α 中至少有一个αj>0(反证法,如果不存在,那么 w=0 w ∗ = 0 ,而 w=0 w ∗ = 0 不是原始优化问题的最优解),此时 yj(wxj+b)1=0 y j ( w ∗ ⋅ x j + b ∗ ) − 1 = 0 将上式代入该式中,有
    yj(i=1Nαiyi(xixj)+b)1=0 y j ( ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) + b ∗ ) − 1 = 0

    注意到 y2j=1(y=11) 或 者 或 者 或 者 y j 2 = 1 ( y = 1 或 者 − 1 ) ,可得
    b=yji=1Nαiyi(xixj) b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j )

    分离超平面为
    wx+b=0 w ∗ ⋅ x + b ∗ = 0

    小总结:

    至此线性可分支持向量机(硬间隔最大化)已推导完毕。可以看出,线性可分支持向量机中, w,b w ∗ , b ∗ 只依赖于训练数据中对应 αi> α ∗ i > 0的样本点 (xi,yi) ( x i , y i ) ,而其它样本点对 wb 和 和 和 w ∗ 和 b ∗ 没有影响,这些实例点称为支持向量。

    但是在显示情况,样本中往往有噪音特异点,导致样本集线性不可分。怎样才能将其拓展到线性不可分问题呢?我们需要修改硬间隔最大化=>软间隔最大化。

    2. 线性支持向量机(线性不可分情况)

    线性不可分意味着某些样本点不能满足函数间隔大于1的约束条件,为此,我们为每一个样本点引入一个松弛变量 ξi ξ i ,使得约束条件变为

    yi(wxi+b)1ξi y i ( w ∗ ⋅ x i + b ) ≥ 1 − ξ i

    同时,在目标函数中加入惩罚项,如下

    12||w||2+Ci=1Nξi 1 2 | | w | | 2 + C ∑ i = 1 N ξ i

    其中C>0称为惩罚参数,此时线性不可分的线性支持向量机的学习问题变成了如下凸二次规划问题:

    minw,b,ξs.t.12||w||2+CNi=1ξiyi(wxi+b)1ξi, i=1,2,...,Nξi0,i=1,2,...,N min w , b , ξ 1 2 | | w | | 2 + C ∑ i = 1 N ξ i s . t . y i ( w ⋅ x i + b ) ≥ 1 − ξ i ,   i = 1 , 2 , . . . , N ξ i ≥ 0 , i = 1 , 2 , . . . , N

    可以证明w的解是唯一的,但b的解不唯一,b的解在一个区间中。

    像线性可分向量机一样,我们先构造出原始问题的拉格朗日函数:

    L(w,b,ξ,α,μ)=12||w||2+Ci=1Nξii=1Nαi(yi(wxi+b)+ξi1)i=1Nμiξi L ( w , b , ξ , α , μ ) = 1 2 | | w | | 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) + ξ i − 1 ) − ∑ i = 1 N μ i ξ i

    其中

    αi0,μi0 α i ≥ 0 , μ i ≥ 0
    L(w,b,ξ,α,μ) L ( w , b , ξ , α , μ ) 的偏导为0:

    wL(w,b,ξ,α,μ)=0bL(w,b,ξ,α,μ)=0ξiL(w,b,ξ,α,μ)=0w=Ni=1αiyixiNi=1αiyi=0C=αi+μi,i=1,2,...,N ∇ w L ( w , b , ξ , α , μ ) = 0 ∇ b L ( w , b , ξ , α , μ ) = 0 ∇ ξ i L ( w , b , ξ , α , μ ) = 0 } ⟹ { w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 C = α i + μ i , i = 1 , 2 , . . . , N

    将计算偏导的结果代入拉格朗日函数中可得

    minw,b,ξL(w,b,ξ,α,μ)=12i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi min w , b , ξ L ( w , b , ξ , α , μ ) = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i

    使用拉格朗日对偶性求对偶问题可得解 α=(α1,α2,...,αN)T α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α N ∗ ) T 若存在 α α ∗ 的一个分量 αj,0<αj<C α j ∗ , 0 < α j ∗ < C 且原始问题是凸二次规划问题,解 (w,b) ( w ∗ , b ∗ ) 满足KKT条件,即得

    wL(w,b,ξ,α,μ)=wNi=1αiyixi=0bL(w,b,ξ,α,μ)=Ni=1αiyi=0ξL(w,b,ξ,α,μ)=Cαμ=0αi(yi(wxi+b)1+ξi)=0, i=1,2,...,Nμiξi=0, i=1,2,...,Nyi(wxi+b)1+ξi0, i=1,2,...,Nξi0, i=1,2,...,Nαi0, i=1,2,...,Nμi0, i=1,2,...,N ∇ w L ( w ∗ , b ∗ , ξ ∗ , α ∗ , μ ∗ ) = w ∗ − ∑ i = 1 N α i ∗ y i x i = 0 ∇ b L ( w ∗ , b ∗ , ξ ∗ , α ∗ , μ ∗ ) = − ∑ i = 1 N α i ∗ y i = 0 ∇ ξ L ( w ∗ , b ∗ , ξ ∗ , α ∗ , μ ∗ ) = C − α ∗ − μ ∗ = 0 α i ∗ ( y i ( w ∗ ⋅ x i + b ∗ ) − 1 + ξ i ∗ ) = 0 ,   i = 1 , 2 , . . . , N μ i ∗ ξ i ∗ = 0 ,   i = 1 , 2 , . . . , N y i ( w ∗ ⋅ x i + b ∗ ) − 1 + ξ i ∗ ≥ 0 ,   i = 1 , 2 , . . . , N ξ i ∗ ≥ 0 ,   i = 1 , 2 , . . . , N α i ∗ ≥ 0 ,   i = 1 , 2 , . . . , N μ i ∗ ≥ 0 ,   i = 1 , 2 , . . . , N

    由于 0<αj<C 0 < α j ∗ < C ,所以 ξj=0 ξ j = 0 ,则 yj(wxj+b)1=0 y j ( w ∗ ⋅ x j + b ∗ ) − 1 = 0 ,联合第一个公式得

    w=Ni=1αiyixib=yjNi=1αiyi(xixj) w ∗ = ∑ i = 1 N α i ∗ y i x i b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j )

    求得分离超平面

    wx+b=0 w ∗ ⋅ x + b ∗ = 0

    由于原始问题对b的解并不唯一,所以实际计算时可以取在所有符合条件的样本点上的平均值。

    3. 非线性支持向量机


    如图所示,非线性支持向量机将样本空间的样本点使用一个圆形分隔开来。

    核技巧(kernel trick)

    线性分类方法求解非线性分类问题可分为两步:
    (1) 使用一个变换将原空间的数据映射到新空间;
    (2) 在新空间里用线性分类学习方法从训练数据中学习分类模型。
    这种方法就称为核技巧

    核函数

    T T 是输入空间(欧式空间Rn的子集或离散集合),又设 H H 为特征空间(希尔伯特空间),如果存在一个从 T T H的映射

    ϕ(x):TH ϕ ( x ) : T → H

    使得对所有 x,zT x , z ∈ T ,核函数 K(x,z) K ( x , z ) 满足条件

    K(x,z)=ϕ(x)ϕ(z) K ( x , z ) = ϕ ( x ) ⋅ ϕ ( z )

    则称 K(x,z) K ( x , z ) 为核函数, ϕ(x) ϕ ( x ) 为映射函数,式中 ϕ(x)ϕ(z) ϕ ( x ) ⋅ ϕ ( z ) ϕ(x) ϕ ( x ) ϕ(z) ϕ ( z ) 的内积。

    结合线性支持向量机算法的 b,w b ∗ , w ∗ 公式来看,核技巧的想法是,在学习和预测中只定义核函数 K(x,z) K ( x , z ) ,而不显示地定义映射函数 ϕ ϕ 。在非线性支持向量机中使用核函数K,则 K K 需要满足正定核的充要条件:

    K X×XR X × X → R 是对称函数则 K(x,z) K ( x , z ) 为正定核函数的充要条件是对任意 xiX,i=1,2..m,K(x,z) x i ∈ X , i = 1 , 2.. m , K ( x , z ) 为Gram矩阵

    K=[K(xi,xj)]m×m K = [ K ( x i , x j ) ] m × m

    常用核函数

    • 多项式核函数

      K(x,z)=(xz+1)pf(x)=sign(i=1Nsαiyi(xix+1)p+b) K ( x , z ) = ( x ⋅ z + 1 ) p f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i ( x i ⋅ x + 1 ) p + b ∗ )

    • 高斯核函数

      K(x,z)=exp(||xz||22σ2)f(x)=sign(i=1Nsαiyiexp(||xz||22σ2)+b) K ( x , z ) = e x p ( − | | x − z | | 2 2 σ 2 ) f ( x ) = s i g n ( ∑ i = 1 N s α i ∗ y i e x p ( − | | x − z | | 2 2 σ 2 ) + b ∗ )

    • 字符串核函数

非线性支持向量机学习算法

  1. 选择合适的核函数K(x,z)和惩罚参数C>0,构造并求解凸二次规划问题

    minαs.t.12Ni=1Nj=1αiαjyiyjK(xi,xj)Ni=1αiNi=1αiyi=00αiC, i=1,2,...,N min α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j K ( x i , x j ) − ∑ i = 1 N α i s . t . ∑ i = 1 N α i y i = 0 0 ≤ α i ≤ C ,   i = 1 , 2 , . . . , N

    求的最优解 α=(α1,α2..αn)T α ∗ = ( α 1 ∗ , α 2 ∗ . . α n ∗ ) T

  2. 选择 α α ∗ 的一个分量 αj α j ∗ 适合条件 0<αj<C 0 < α j ∗ < C ,计算

    b=yji=1NαiyiK(xi,xj) b ∗ = y j − ∑ i = 1 N α i ∗ y i K ( x i , x j )

    分类决策函数为:

    f=sign(i=1NαiyiK(x,xi)+b) f = s i g n ( ∑ i = 1 N α i y i K ( x , x i ) + b ∗ )

这些算法通常需要借助序列最小优化算法(Sequential minimal optimization, SMO)实现,简化版的伪代码可以表示为:

创建一个alpha向量并将其初始化为O 向量
当迭代次数小于最大迭代次数时(外循环)
    对数据集中的每个数据向量(内循环):
    如果该数据向量可以被优化:
        随机选择另外一个数据向量
        同时优化这两个向量
        如果两个向量都不能被优化,退出内循环
    如果所有向量都没被优化,增加迭代数目,继续下一次循环

参考文献

  1. http://blog.pluskid.org/?p=632
  2. https://www.zhihu.com/question/21094489/answer/117246987
  3. 李航,统计学习方法
  4. 周志华,机器学习
  5. Peter Harrington,机器学习实战
  6. http://bytesizebio.net/2014/02/05/support-vector-machines-explained-well/
  7. https://www.youtube.com/watch?v=3liCbRZPrZA (很直观解释的视频)
  8. https://www.zhihu.com/question/21094489/answer/302111240 (SVM的考题)
  • 7
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值