SVM通俗易懂理解

前言

SVM这个东西,反复看过无数遍,但每次看完,后面再用时就会忘记。SVM作为机器学习领域的封神算法,个人认为有必要将其巩固作为自己的基础知识,需要达到随心所欲利用的境界。因此决定自己动手将所有的公式和代码实现一遍,极尽详细,持续更新,计划一个月写完,每天写一个小时(左抄右抄抄一个小时),欢迎进行批评和指正。

SVM简介

SVM,支持向量机,基本模型是定义在特征空间上间隔最大的线性分类器,间隔最大使其有别于感知机(感知机算法仅要求将不同数据分开就行,不要求间隔最大)。学习策略就是间隔最大化,可形式化为一个求解凸二次规划的问题,也等价于正则化的合页损失函数的最小化问题。支持向量机的学习算法是求解凸二次规划的最优化算法。

SVM学习方法包含构建由简至繁的模型。当训练数据线性可分时,通过硬间隔最大化学习线性分类器;当训练数据近似线性可分时,通过软间隔最大化,也学习一个线性分类器;当训练数据不可分时,通过核技巧和软间隔最大化,学习非线性支持向量机。

1、线性可分支持向量机与硬间隔最大化

假定数据线性可分,训练数据集
T = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x N , y N ) } T=\left \{(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{N},y_{N})\right \} T={(x1,y1),(x2,y2),...,(xN,yN)}
其中, x i ϵ χ = R n x_{i}\epsilon \chi=R^{n} xiϵχ=Rn, y i ϵ { − 1 , + 1 } y_{i}\epsilon\left \{-1,+1 \right \} yiϵ{1,+1}, i = 1 , 2 , . . . , N i=1,2,...,N i=1,2,...,N, x i x_{i} xi为第i个特征向量,也称为实例, y i y_{i} yi x i {x_{i}} xi的类标记,+1标记为正例,-1标记为负例。

学习的目标是在特征空间中找到一个分离超平面,能将实例分到不同的分类。分离超平面对应方程, w ∗ x + b = 0 w*x+b=0 wx+b=0,它由法向量w和截距b决定,可用 ( w , b ) (w,b) (w,b)来表示。分离超平面将特征空间划分为两部分,一部分是正类,一部分是负类。

一般地,当训练数据集线性可分时,存在无穷个分离超平面将两类数据正确分开。感知机利用误分类最小的策略,求得分离超平面,不过这时的解有无穷多个。线性可分支持向量机利用间隔最大化求得最优分离超平面,这时,解是唯一的。(感知机求出的无数个解中最好的那个解是SVM的解)

定义(线性可分支持向量机) 给定线性可分训练数据集,通过间隔最大化或等价地求解相应的凸二次规划问题学习到的分离超平面为
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)
称为线性可分支持向量机。

如何求解线性可分支持向量机呢,在求解之前,先讲解一下函数间隔与几何间隔的概念。
定义(函数间隔) 对于给定的训练集T和超平面(w,b),定义超平面关于样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔为
γ ^ i = y i ( w ⋅ x i + b ) \gamma\hat{}_{i}=y_{i}(w \cdot x_{i}+b) γ^i=yi(wxi+b)
定义超平面(w,b)关于训练数据集T的函数间隔为超平面(w,b)关于T中所有样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔的最小值

注意,单个样本点关于超平面具有函数间隔,整个数据集关于样本点也有函数间隔,后面介绍的几何间隔同样如此。

为什么要有函数间隔这个概念呢,在利用超平面进行分类过程中,被预测点距离超平面距离越远,即函数间隔越大,则可信度越高。反之,若该点就在超平面附近,即距离超平面距离越近,则分类的可信度就越低。

函数间隔可以正确地表示分类预测的正确性及置信度。但是选择分离超平面时,只有函数间隔还不够。**这是因为只要成比例地改变w和b,例如改为2w和2b,超平面没有改变,但是函数间隔却变为原来的2倍。**因此,我们需要对超平面的法向量添加一些约束,将其规范化,例如设定||w||=1,使得函数间隔是统一的,这个时候,函数间隔变化为几何间隔。

定义(几何间隔) 对于给定的训练数据集T和超平面(w,b),定义超平面(w,b)关于样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的几何间隔为
γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) \gamma_{i}=y_{i}(\frac{w}{||w||} \cdot x_{i}+\frac{b}{||w||}) γi=yi(wwxi+wb)
定义超平面(w,b)关于训练数据集T的几何间隔为超平面(w,b)关于T中所有样本点 ( x i , y i ) (x_{i},y_{i}) (xi,yi)的函数间隔的最小值

这里,当||w||=1时,函数间隔和几何间隔相等。当w和b成比例改变时,函数间隔也成比例改变,但几何间隔保持不变。

介绍完函数间隔和几何间隔之后,介绍求解超平面的过程,也就是间隔最大化。

支持向量机学习的基本想法就是求解能够正确划分训练数据集并且几何间隔最大的分离超平面。如何求解几何间隔最大的分离超平面,这个问题可以表示为下面的约束最优化问题。
m a x w , b γ \underset{w,b}{max } \quad \gamma w,bmaxγ
s . t . y i ( w ∣ ∣ w ∣ ∣ ⋅ x i + b ∣ ∣ w ∣ ∣ ) ≥ γ s.t. \quad y_{i}(\frac{w}{||w||}\cdot x_{i}+\frac{b}{||w||}) \geq \gamma s.t.yi(wwxi+wb)γ
即我们希望最大化超平面(w,b)关于训练数据集的几何间隔 γ \gamma γ,约束条件表示的是超平面(w,b)关于每个训练样本点的几何间隔至少是 γ \gamma γ

考虑到函数间隔与几何间隔之间的关系,这个问题可改写为:
m a x w , b γ ^ \underset{w,b}{max } \quad \hat{\gamma } w,bmaxγ^
s . t . y i ( w ⋅ x i + b ) ≥ γ ^ s.t. \quad y_{i}({w}\cdot x_{i}+{b}) \geq \hat{\gamma } s.t.yi(wxi+b)γ^
函数间隔的取值对于最优化的解是没有影响的,这样,可以将函数间隔 r ^ = 1 \hat{r}=1 r^=1,这样的话,将上述的最优化问题再次转变为:
m i n w , b 1 2 ∣ ∣ w ∣ ∣ 2 \underset{w,b}{min } \quad \frac{1}{2}||w||^{2} w,bmin21w2
s . t . y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , . . . N s.t. \quad y_{i}({w}\cdot x_{i}+{b}) -1\geq 0,i=1,2,...N s.t.yi(wxi+b)10,i=1,2,...N
这样,就将原始问题转化为一个凸二次规划问题。如果能求出这个约束最优化问题的解 w ∗ , b ∗ w^{*},b^{*} w,b,那么就得到了最大间隔分离超平面 w ∗ x + b ∗ = 0 w^{*}x+b^{*}=0 wx+b=0以及分类决策函数 f ( x ) = s i g n ( w ∗ x + b ∗ ) f(x)=sign(w^{*}x+b^{*}) f(x)=sign(wx+b),即求解出了对应的线性可分支持向量机模型。

这里需要说一下,最大间隔分离超平面的存在是唯一的,证明过程则省略,我们从直观理解也可得出这个结论。

支持向量和支持边界

在线性可分的情况下,训练数据集的样本点中与分离超平面距离最近的样本的实例可称为支持向量,这也是支持向量机名称的由来。
支持向量是使得约束条件等号成立的点。即
y i ( w ⋅ x i + b ) − 1 = 0 y_{i}(w\cdot x_{i}+b)-1=0 yi(wxi+b)1=0
对于label为1的正例点支持向量:
H 1 : w ⋅ x + b = 1 H1: w\cdot x+b=1 H1:wx+b=1
对于label为-1的负例支持向量:
H 2 : w ⋅ x + b = − 1 H2: w \cdot x+b=-1 H2:wx+b=1
注意到,H1和H2平行,并且没有实例点落在他们之间。H1与H2之间的距离称为间隔,间隔依赖于分离超平面的法向量w,等于 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} w2,H1和H2称为间隔边界。

在决定分离超平面时只有支持向量起作用,而其他实例点并不起作用。因此,支持向量机对于数据的分布无要求,样本训练数据可以类别不平衡,可以不符合正态分布。

学习的对偶算法

上述将支持向量机的算法进行推导之后,后续便需要对支持向量机进行求解。在这里,我们将上述的凸二次规划问题转化为其对偶问题。转化为对偶问题的目的有两个,一是对偶问题往往更容易求解,二是可以自然地引入核函数,进而推广到非线性分类问题。
首先构建拉格朗日函数,引入拉格朗日乘子,对于 α i ≥ 0 , i = 1 , 2 , . . . , N \alpha_{i} \geq 0,i=1,2,...,N αi0,i=1,2,...,N:
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,\alpha)=\frac{1}{2}||w||^{2}-\sum_{i=1}^{N} \alpha_{i}y_{i}(w \cdot x_{i}+b)+\sum_{i=1}^{N} \alpha_{i} L(w,b,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi
其中, s = ( α 1 , α 2 , . . . , α N ) T s=(\alpha_{1},\alpha_{2},...,\alpha_{N})^{T} s=(α1,α2,...,αN)T为拉格朗日乘子向量。
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题。
α m a x L ( w , b , α ) \overset{max}{\alpha} L(w,b,\alpha) αmaxL(w,b,α)
为了得到对偶问题的解,需要先求对 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)对w,b的极小,再求对 α \alpha α的极大。
有必要对这个极大极小问题进行解释一下。

参考资料

  1. 《统计学习方法》 李航著
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值