支持向量机 二分类模型
基本模型:定义在特征空间上的间隔最大的线性分类器,间隔最大使之区别于感知机
扩展 模型:核技巧,实质上成为非线性分类器
学习策略:间隔最大化(原始问题),形式化为求解凸二次规划(对偶问题),也等价于极小化正则化的
合页损失函数(另外一种解释)
学习算法:求解凸二次规划的最优化算法
一 模型
SVM包含构建由简至繁的模型:线性可分支持向量机、线性支持向量机及非线性支持向量机。简单模型是复杂模型的基础,也是复杂模型的特殊情况。
训练数据特点 |
策略 |
模型 |
线性可分 |
硬间隔最大化 |
线性分类器=线性可分SVM/硬间隔SVM |
近似线性可分 |
软间隔最大化 |
线性分类器=线性SVM/软间隔SVM |
线性不可分 |
核技巧+软间隔最大化 |
非线性SVM |
核技巧: 当输入空间为欧氏空间或离散集合、特征空间为希尔伯特空间时,核函数表示将输入从输入空间映射到特征空间得到的特征向量之间的内积。通过使用核函数可以学习非线性支持向量机,等价于隐式地在高维的特征空间中学习线性支持向量机。这样的方法称为核技巧。核方法是比支持向童机更为一般的机器学习方法。
与感知机类似,针对线性可分数据SVM学习一个线性分类器,但是,当训练数据可分的时候,存在无穷多个分离超平面将两类数据正确分开,因此两者的区别在于,学习策略不同,感知机利用误分类最小策略求得超平面,这时超平面个数是无穷的,SVM利用间隔最大化求最优超平面,解是唯一的。当数据不可分的时候,会引入不同的策略学习超平面的参数,所以在模型的形式上,三种SVM是一样的,具体不同在策略中阐述。
模型原始形式:
从这个角度来说,两者建立的模型是一样的。给定线性可分数据集,通过不同的策略求解学习得到分离超平面
w∗⋅x+b∗=0以及相应的分类决策函数
f(x)=sign(w∗⋅x+b∗)
模型对偶形式:
定理:设
α∗=(α1∗,α2∗⋯,αl∗)是对偶最优化问题的解,也就是拉格朗日因子,那么存在下标
j,使得
αj∗≥0,可以按照下式求得原始问题的解
w∗,b∗:
w∗=i=1∑Nαi∗yixib∗=yj−i=1∑Nαi∗(xi⋅xj)根据以上定理,模型可以写成:
i=1∑Nαi∗yi(x⋅xi)+b∗=0f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)注:非线性SVM的对偶形式变为
f(x)=sign(∑i=1Nαi∗yiK(x⋅xi)+b∗),
K(x,z)是正定核函数。
二 策略
2.1 线性可分支持向量机与硬间隔最大化
2.1.1 函数间隔和几何间隔
函数间隔定义:对于给定的训练数据集T和超平面
(w,b),定义超平面
(w,b)关于样本点
(xi,yi)的函数间隔为:
γ
i=yi(w⋅xi+b)那么该超平面关于所有样本点的函数间隔的最小值就是
γ
=mini=1,2,⋅,Nγ
i
一般来说,一个点到分离超平面的距离可以表示分类预测的确信程度,在
w⋅x+b=0确定的情况下,
∣w⋅x+b∣可以相对表示点
x到超平面的远近,
w⋅x+b的符号于类标记
y的符号是否一致能够表示分类是否正确,所以
y(w⋅x+b)也就是函数间隔,可以表示分类预测的正确度和确信度。
但是,如果成比例的改变
w,b,超平面实际上并没有变化,但是函数间隔却改变了,这就导致最小化函数间隔求解
w∗,b∗就不现实了。如果对超平面的法向量
w加某些约束,如规范化
∥w∥=1,使得间隔是固定的,就是可实现的。
几何间隔实际上就是点到直线的距离,
Ax1+Bx2+C=0,点
(x1,x2)到该直线的距离是
x22+x22
∣Ax1+Bx2+C∣几何间隔定义
γi=yi(∥w∥w⋅xi+∥w∥b)同理,该超平面关于所有样本点的函数间隔的最小值就是
γ=mini=1,2,⋅,Nγi,一般是带符号距离,当样本点被正确分类,就是实例点到超平面的距离。
函数间隔与几何间隔的关系
γi=∥w∥γ
iγ=∥w∥γ
如果
∥w∥=1,函数间隔与几何间隔相等,如果
w,b成比例改变,函数间隔也成比例改变,而几何间隔保持不变。
2.1.2 间隔最大化
SVM–>正确划分训练数据集 && 超平面的几何间隔最大–> 意味着:以充分大的确信度对训练数据进行分类[对离超平面最近最难分的数据点也有足够的确定度将其分开]。
SVM模型需要求解
w∗,b∗,利用间隔最大化对参数建模,得到最优化问题:[每组参数
w,b对应一个训练数据的最小几何间隔,求所有间隔中最大的]:
w,bmaxγs.t.yi(∥w∥w⋅xi+∥w∥b)≥γ 根据函数间隔与几何间隔的关系,这个问题可以写成
w,bmax∥w∥γ
s.t.yi(w⋅xi+b)≥γ
函数间隔
γ
的值并不影响最优化问题的解,他的成倍变化,对应
w,b的成倍变化,成倍变化的
w,b对应相同的超平面。具体是指:假设
w,b按照比例变成
λw,λb,
∥w∥会变成
λ∥w∥,函数间隔也会变成
λγ,这对
max求解最优化问题的解是没有影响的。所以,为了方便,取
γ
=1,且注意到最大化
∥w∥1和
21∥w∥2是等价的,所以最终线性可分支持向量要学习的最优化问题是:
w,bmin21∥w∥2a.t.yi(w⋅xi+b)−1≥0 线性可分SVM的最大间隔超平面是存在且唯一的,证明参考书P101
支持向量与间隔边界
线性可分情侣下,支持向量是训练数据集中与分离超平面距离最近的样本点,是使约束条件成立的点,对于
yi=1的正例点,支持向量在超平面
H1:w⋅x+b=1,对于
yi=−1的负例点,支持向量在超平面
H2:w⋅x+b=−1,图中
H1.H2上的点就是支持向量。
注意到
H1和
H2平行,并且没有实例点落在它们中间。在
H1和
H2之间形成 一条长带,分离超平面与它们平行且位于它们中央。长带的宽度,即
H1和
H2之间的距离称为间隔(margin)。间隔依赖于分离超平面的法向量l
w,等于
∥w∥2,
H1和
H2称为间隔边界。
在决定分离超平面时只有支持向置起作用,而其他实例点并不起作用。如果移动支持向量将改变所求的解;但是如果在间隔边界以外移动其他实例点,甚至去掉这些点,则解是不会改变的。由于支持向童在确定分离超平面中起着决定性作用,所以将这种分类模型称为支持向最机。支持向量的个数一般很少,所以支 持向量机由很少的“重要的”训练样本确定。
2.1.3 学习的对偶算法
为了求解有约束的最优化问题,将上述优化问题作为原始问题,应用拉格朗日对偶性。通过求解对偶问题得到原始问题的解。优点:对偶问题往往更容易求解;自然引入核函数,推广到非线性分类问题。
首先构建拉格朗日函数,为此,对每一个不等式约束引进拉格朗日乘子
αi≥0,得到
L(w,b,α)=21∥w∥2−i=1∑Nαiyi(w⋅xi+b)+i=1∑Nαi根据拉格朗日的对偶性,原始问题的对偶问题使极大极小问题
maxαminw,bL(w,b,α)
1)求
minw,bL(w,b,α)
求
L(w,b,α)关于
w,b的偏导数,并令其等于0.
▽wL(w,b,α)=w−i=1∑Nαiyixi=0▽bL(w,b,α)=−i=1∑Nαiyi=0得到
w=i=1∑Nαiyixii=1∑Nαiyi=0带入原来的拉格朗日函数,化简得到
w,bminL(w,b,α)=−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαi2)求
minαL(w,b,α)对
α的极大,即使对偶问题
αmax−21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)+i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0将目标函数由求极大值转换成求极小值就是等价的额对偶问题最优化。
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0根据前面对偶模型可以得到问题的解,总结起来对偶学习算法为:
输入:线性可分训练集
输出:分离超平面和分类决策函数
- 构造并求解约束最优化问题
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=0αi≥0求解得到
α∗=(α1∗,α2∗⋯,αl∗)T
- 计算
w∗=i=1∑Nαi∗yixi并选择
α∗的一个正分量
αj∗≥0计算
b∗=yj−i=1∑Nαi∗(xi⋅xj)
- 求得分离超平面
i=1∑Nαi∗yi(x⋅xi)+b∗=0分类决策函数:
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)根据
w∗=∑i=1Nαi∗yixib∗=yj−∑i=1Nαi∗(xi⋅xj)可知只有
αi≥0时对应的样本点才起作用,而其他样本点对
w∗,b∗没有影响,所以训练数据集中
αi≥0的样本称为支持向量
2.2 线性支持向量机与软间隔最大化
2.2.1 线性支持向量机学习算法
当训练集的数据线性不可分的时候,上述算法就不适用了。因为对于一些特异样本点,不等式约束条件
yi(wi⋅xi+b)≥1不成立,为了解决这个问题可以给不等式约束条件引入一个变量
ξi、个0使
yi(wi⋅xi+b)≥1−ξi,这就相当于给原来的函数间隔加上了一个松弛变量使之仍然大于等于1.这时要对每个松弛变量支付一个代价,因此原来的目标函数变成
21∥w∥2+Ci=1∑Nξi
C是一个惩罚参数,一般由应用问题决定,由于是求目标函数的最小值,所以
C大对误分类的惩罚增大,
C小对误分类的惩罚减小。最小化该目标函数代表着1)使间隔尽量大2)使误分点点数尽量少
线性不可分的线性支持向量机学习问题变成
w,b,ξmin21∥w∥2+Ci=1∑Nξis.t.yi(w⋅xi+b)≥1−ξiξi≥0这是一个凸二次规划问题,因而关于
(w,b,ξ)是存在,并且可以证明
w是唯一的,
b的解可能不唯一,而是存在一个区间。
根据前面对偶问题的推导过程,可以得到,线性支持向量机的对偶问题为:
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C
线性支持向量机的学习算法为
输入:训练集
输出:分离超平面和分类决策函数
- 构造并求解约束最优化问题
αmin21i=1∑Nj=1∑Nαiαjyiyj(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C求解得到
α∗=(α1∗,α2∗⋯,αl∗)T
- 计算
w∗=i=1∑Nαi∗yixi并选择
α∗的一个分量
0≤αi≤C计算
b∗=yj−i=1∑Nαi∗(xi⋅xj)
- 求得分离超平面
i=1∑Nαi∗yi(x⋅xi)+b∗=0分类决策函数:
f(x)=sign(i=1∑Nαi∗yi(x⋅xi)+b∗)对任何一个
0≤αi≤C的
αj都可以求出一个
b∗,理论上
b的解不唯一。
支持向量
2.2.2 合页损失函数
对于线性支持向量机来说,其模型为分离超平面
w∗⋅x+b∗=0及其决策函数
f(x)=sign(w∗⋅x+b∗),其学习策略为软间隔最大化,学习算法为凸二次规划。
线性支持向量机还有另外一种解释,就是最小化以下目标函数:
i=1∑N[1−yi(w⋅xi+b)]++λ∥w∥2目标的第一项是经验损失函数或者经验风险,函数
L(yi(w⋅x+b))=[1−y(w⋅x+b)]+称为合页损失函数,表示样本点
(xi,yi)被正确分类且函数间隔(确信度)
yi(w⋅xi+b)>1时,损失是0,否则损失是
1−yi(w⋅xi+b),第二项是
w的
L2范数,是正则化项。令
[1−y(w⋅x+b)]+=ξi
λ=2C1可以将该目标函数写为原始的模型。
关于合页损失函数:
李航老师的《统计学习方法》上是这么说的:由于函数形状像一个合页,故命合页损失函数。如图,横轴表示函数间隔,我们从两个方面来理解函数间隔:
1)正负
当样本被正确分类时,
y(w⋅x+b)>0;当样本被错误分类时,
y(w⋅x+b)<0。
2)大小
y(w⋅x+b)的绝对值代表样本距离决策边界的远近程度。
y(w⋅x+b)的绝对值越大,表示样本距离决策边界越远。
因此,我们可以知道:
当
y(w⋅x+b)>0时,
y(w⋅x+b)的绝对值越大表示决策边界对样本的区分度越好
当
y(w⋅x+b)<0时,
y(w⋅x+b)的绝对值越大表示决策边界对样本的区分度越差
从图中我们可以看到
- 1)0-1损失
当样本被正确分类时,损失为0;当样本被错误分类时,损失为1。
- 2)感知机损失函数
当样本被正确分类时,损失为0;当样本被错误分类时,损失为-y(wx+b)。
- 3)合页损失函数
当样本被正确分类且函数间隔大于1时,合页损失才是0,否则损失是1-y(wx+b)。
相比之下,合页损失函数不仅要正确分类,而且确信度足够高时损失才是0。也就是说,合页损失函数对学习有更高的要求。
2.3 非线性支持向量机与核函数
2.3.1 核技巧
核技巧不仅应用于支持向量机,而且应用于其他统计学习。关于什么是核技巧,正定核常用核函数不再介绍了,对核技巧简单理解如下图,在低维空间对Input Space的数据无法进行线性分类,将数据很好的分开需要的是曲线或者曲面,但是如果将数据投影到高维特征空间,仍然可以用一个超平面对这些数据进行分类。关于核技巧的一些内容参考1 参考2 。
非线性支持向量机整个算法步骤只有计算内积的地方变了,也就是将输入空间投影到高维特征空间 ,对特征空间进行分类于输入空间分类结果是一样的。在核函数
K(x,z)给定的前提下,利用求解线性分类方法的求解非线性分类问题的支持向量机。
输入:训练集
输出:分离超平面和分类决策函数
- 构造并求解约束最优化问题
αmin21i=1∑Nj=1∑NαiαjyiyjK(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C求解得到
α∗=(α1∗,α2∗⋯,αl∗)T
- 计算
w∗=i=1∑Nαi∗yixi并选择
α∗的一个分量
0≤αi≤C计算
b∗=yj−i=1∑Nαi∗(xi⋅xj)
- 求得分离超平面
i=1∑Nαi∗yi(x⋅xi)+b∗=0分类决策函数:
f(x)=sign(i=1∑Nαi∗yiK(x⋅xi)+b∗)对任何一个
0≤αi≤C的
αj都可以求出一个
b∗,理论上
b的解不唯一。
三 算法[序列最小最优化算法SMO]
上述,我们将支持向量机的学习形象化为求解凸二次规划问题,很多最优化算法都可以得到全局最优解,但是当样本容量非常大的时候计算量非常大,求解的优化问题中拉格朗日乘子由样本容量那么多个。序列最小最优化(SMO)是一种高效快速的启发式求解方法。
要求解的凸二次规划的对偶问题为:
αmin21i=1∑Nj=1∑NαiαjyiyjK(xi⋅xj)−i=1∑Nαis.t.i=1∑Nαiyi=00≤αi≤C要求解的变量是拉格朗日乘子,一个变量
αi对应一个样本
(xi,yi),变量的总数等于样本容量
N。
如果所有变量的解都满足此最优化问题的KKT条件,那么这个最优化问题的解就得到了(因为KKT条件是该最优化问题的充分必要条件)。否则选择两个变量,固定其他的变量,针对这两个问题构建一个二次规划问题。这个二次规划问题的解应该更接近二次规划问题的解(因为这会使得原始二次规划问题的目标函数值更小)。而且,这时子问题可以通过解析方法求解,这样就大大提高了整个算法的计算速度。
每一次,子问题都有两个变量,一个是违反KKT条件最严重的那一个,另一个由约束条件自动确定。如此,SMO算法将原问题不断分解为子问题并对子问题求解,进而得到原问题的最终解。
注意,每个子问题有两个变量,而不能是1个变量,因为当选择一个变量时,由于约束条件,其他变量的值就固定了该变量的值也就固定了。所以子问题中同时更新两个变量。
深入理解拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
SMO算法包括两个部分:
- 求解两个变量二次规划问题的解析方法
- 选择变量的启发式方法
3.1 求解两个变量二次规划问题的解析方法
实际上只有一个是自由变量,假设变量是
α1,α2,那么其他的变量都是固定的,根据
∑i=1Nαiyi=0可知
α1=−y1∑i=2Nαiyi,所以一个子问题会同时更新两个变量。
基本思路:分析问题的约束条件,在约束条件下求解变量。不失一般性,假设更新的两个变量是
α1,α2,那么优化子问题就是
α1,α2的一个目标函数,又因为
α1=−y1∑i=2Nαiyi=−y1(α2y2+∑i=3Nαiyi),根据该公式消去变量
α1,就可以得到关于
α2的一个目标函数,利用Fermat定理,即求该目标函数的导数,并令其等于0,就可以得到
α2的最优值,需要根据约束条件进行截断,然后利用等式关系求解
α1,即完成一次子问题的最优值求解。
具体公式推导参见《统计学习方法》P127.有关于约束的条件的获得,一直算不清,手写了一下。
3.2 选择变量的启发式方法
SMO算法的每个子问题中需要选择两个变量进行优化,其中至少一个变量是违反KKT条件的。
第一个变量:
选择第一个变量的过程为外层循环,外层循环在训练样本中选择违反KKT条件最严重的样本点,并将其对应的变量作为第一个变量。具体地,检验训练样本点
(xi,yi)是否满足KKT条件:
αi=0⇔yig(xi)≥10<αi<C⇔yig(xi)=1αi=C⇔yig(xi)≤1其中
g(xi)=∑j=1NαjyjK(xi,xj)+b。书中提到该检验是在
ϵ范围内进行的,大概是容错率,由于KKT条件本身是比较严苛的,所以需要设定一个容忍值,只要误差在容忍值的范围内则优化可以结束。
如何才算是违反KKT条件呢?
例如,
αi=0,却有
yig(xi)<1,本来应该大于等于1。在检验的过程中,外层循环首先遍历所有满足条件
0<αi<C的点,也就是在间隔边界上的支持向量点,如果都满足KKT条件,那么遍历整个数据集,检验他们是否满足条件。
第二个变量
第二个变量的选择过程为内层循环,进入内层循环后选择第二个变量
α2,选择标准是希望
α2有足够的的变化。