版权声明:本文为博主原创文章,转载请一定附上博主原文链接,并署名转自ZeroZone零域。 https://blog.csdn.net/ksws0292756/article/details/83479491
前言
起初让我最头疼的是拉格朗日对偶和SMO,后来逐渐明白拉格朗日对偶的重要作用是将w的计算提前并消除w,使得优化函数变为拉格朗日乘子的单一参数优化问题。而SMO里面迭代公式的推导也着实让我花费了不少时间。
对比这么复杂的推导过程,SVM的思想确实那么简单。它不再像logistic回归一样企图去拟合样本点(中间加了一层sigmoid函数变换),而是就在样本中去找分隔线,为了评判哪条分界线更好,引入了几何间隔最大化的目标。
之后所有的推导都是去解决目标函数的最优化上了。在解决最优化的过程中,发现了w可以由特征向量内积来表示,进而发现了核函数,仅需要调整核函数就可以将特征进行低维到高维的变换,在低维上进行计算,实质结果表现在高维上。由于并不是所有的样本都可分,为了保证SVM的通用性,进行了软间隔的处理,导致的结果就是将优化问题变得更加复杂,然而惊奇的是松弛变量没有出现在最后的目标函数中。最后的优化求解问题,也被拉格朗日对偶和SMO算法化解,使SVM趋向于完美。
1. 支持向量机基本概念及原理
1.1 间隔与支持向量
给定训练样本集
D=(x
(1),y(1)),(x
(2),y(2)),..,(x
(m),y(m)),yi∈−1,+1(二分类问题),x
(i)=(x1(i);x2(i);...;xd(i)) (注意,这里用的是分号, 表示这是一个列向量), SVM做的事情就是试图把一根"木棍"放在最佳位置, 好让"木棍"的两边都有尽可能大的"间隔".
这个"木棍"就叫做"划分超平面", 可以用下面的线性方程来描述:
w
Tx
+b=0
, 其中
w
=(w1;w2;...;wd) 为
d 维法向量(注意,这里用的是分号, 表示这是一个列向量),
x
为"木棍"上的点的坐标,
b 为位移项.
根据点到"直线"的距离公式,我们可以得到样本空间中任意点
x
到超平面
(w
,b) 的距离为:
r=∥w
∥∣w
Tx
+b∣
∥w
∥=w12+w22+...+wd2
为向量长度(也即向量的L2范式)
首先假设 当前的超平面可以将所有的训练样本正确分类, 那么就有如下式子:
{w
Tx
(i)+b≥0,w
Tx
(i)+b≤0,y(i)=+1y(i)=−1
上式可以统一写成如下的约束不等式:()
y(i)(w
Tx
(i)+b)≥0
上面的式子其实是冗余的, 因为假设样本点不在超平面上, 所以不可能出现等于0的情况, 又因为超平面方程两边都乘一个不等于0的数,还是 同一个超平面, 因此为了简化问题的表述, 我们对
w
和
b 加上如下约束(这里的1没有什么特别的含义, 可以是任意的常数, 因为这里的点
x
(i) 不是超平面上的点, 所以所得值不为0):
imin∣w
Tx
(i)+b∣=1
即离超平面最近的正, 负样本距离超平面的距离为:
∥w
∥1 , 我们将这些距离超平面最近的几个训练样本点为定义"支持向量", 那么, 两个异类支持向量到超平面的距离之和就为
γ=∥w
∥2 , 我们将这称为"间隔".
同时, 根据此约束, 我们可以消除超分类平面约束的冗余, 得到新的超分类平面约束如下:
y(i)(w
Tx
(i)+b)≥1
SVM的目的就是找到具有"最大间隔"的划分超平面, 也就是要找到满足约束
y(i)(w
Tx
(i)+b)≥1中的参数
w
,b , 使得其具有最大的间隔
γ , 也就:
argw
,bmax∥w
∥2
s.t.y(i)(w
Tx
(i)+b)≥1,i=1,...,m
显然, 为了最大化间隔
γ , 我们仅需要最大化
∥w
∥−1 , 这就等于最小化
∥w
∥2, 于是上式等价为:
argw
,bmin21∥w
∥2=argw
,bmin21w
Tw
(1)
s.t.y(i)(w
Tx
(i)+b)≥1,i=1,...,m
下图即为SVM示意图, 注意,图中的1可以被任意常数替换(只要前面乘上对应的系数即可, =0说明在超分类平面上, !=0说明在两侧)
以上就是线性可分时的SVM基本型(现实中大多数问题是线性不可分的, 所以线性可分的SVM没有太多实用价值)
1.2 对偶问题求解
w
和
b
1.2.1 问题说明
凸二次规划问题(convex quadratix programming): 目标函数是变量的二次函数, 约束条件是变量的线性不等式
对偶问题(dual problem):在求出一个问题解的同时, 也给出了另一个问题的解
我们希望通过求解式(1)来得到具有最大间隔的划分超平面的模型参数,由于该式是一个凸二次规划问题 因此,对该式使用拉格朗日乘子法得到其"对偶问题"
对于式(1)的每条样本点约束添加拉格朗日乘子
α(i)≥0, 则该问题的拉格朗日函数为:
L(w
,b,α)=21∥w
∥2+i=1∑mα(i)(1−y(i)(w
Tx
(i)+b))(2)
其中,
α
=(α(1),α(2),...,α(m)),每一个α(i)均为标量 .接着对
L(w
,b,α
) 对
w
和
b 求偏导, 并令其为0, 可得:
∂w
∂L(w
,b,α
)=w
−i=1∑mα(i)y(i)x
(i)=0(3)
∂b∂L(w
,b,α
)=−i=1∑mα(i)y(i)=0(4)
将(3)和(4)代入(2)式中, 消去
w
和
b ( 注意, 这里
∑i=1mα(i)y(i)=0, 但是不代表
α(i)y(i)=0 ), 可得:
L(w
,b,α
)=21(i=1∑mα(i)y(i)x
(i))2+i=1∑mα(i)−i=1∑mα(i)y(i)(j=1∑mα(j)y(j)x
(j))Tx
(i)−i=1∑mα(i)y(i)b
=i=1∑mα(i)−21i=1∑mj=1∑mα(i)y(i)α(i)y(j)x
(i)Tx
(j)
这里
x
(i),x
(j) 位置可互换, 为了好看,我将
x
(i) 写在了前面. 到此, 我们就得到了式(2)的对偶问题:
argα
max(i=1∑mα(i)−21i=1∑mj=1∑mα(i)α(j)y(i)y(j)x
(i)Tx
(j))(5)
s.t.i=1∑mα(i)y(i)=0,其中α(i)≥0
为了满足原始问题(1) 和对偶问题(5)之间的充分必要条件, 上述推导过程还需要满足KKT(Karush-Kuhn-Tucker)条件(其中前两条已经在上述推导过程中满足) , 即要求:
⎩⎪⎨⎪⎧α(i)≥0;y(i)f(x
(i))−1≥0;α(i)(y(i)f(x
(i))−1)=0.
当我们解出上式得到
α
后, 就可以通过求得
w
和
b 的值, 进而可得到划分超平面对应的模型:
f(x
)=w
Tx
+b=i=1∑mα(i)y(i)x
(i)Tx
+b
根据KKT条件我们可以轻易得出, 对任意的训练样本
(x
(i),y(i)) , 总有
α(i)=0 或
y(i)f(x
(i))=1 . 若
α(i)=0 , 则该项对应的样本不会出现在求和项中 ; 若
α(i)>0 , 则必有
y(i)f(x
(i))=1 , 这说明该样本点出现在最大间隔边界上, 是一个支持向量. 这显示出支持向量机的一个重要性质: 训练完成后, 大部分的训练样本都不需要保留(该样本对应的系数
α(i)=0 ), 最终模型仅与支持向量有关.
使用SMO算法求对偶问题的解
从(5)式可以看出, 这仍是一个二次规划问题, 可以使用通用的二次规划法来求解, 但是, 该问题的规模正比于训练样本数量, 在实际任务中使用通用解法会造成很大的开销, 因此, 需要使用更高效的算法—SMO(Sequential Minimal Optimization, 序列最小算法)
SMO的基本思路: 先固定
α(i) 之外的所有参数, 然后求
α(i) 上的极值. 但是这里由于
α(i) 之间不是互相独立的, 需要满足约束
∑i=1mα(i)y(i)=0 , 即一个分量改变, 另一个也要随之改变,因此每次在优化变量中选取两个分量
α(i) 和
α(j) ,并将其他参数固定, 然后在参数初始化后, 不断执行如下两个步骤直至收敛:
- 选取一对需要更新的变量
α(i) 和
α(j)
- 固定
α(i) 和
α(j) 以外的参数, 求解(5)式更新后的
α(i) 和
α(j)
具体的求解过程如下:
首先假设需要优化的参数是
α(i) 和
α(j) , 于是我们将剩下的分量
∑k=1,k̸=i,jmα(k)y(k) 固定, 作为常数处理, 可得下式:
α(i)y(i)+α(j)y(j)=−k=1,k̸=i,j∑mα(k)y(k)=C
对上式两边同乘以
y(j) ,由于
y(j)×y(j)=1 可得:
α(j)=Cy(j)−α(i)y(i)y(j)=y(j)(C−α(i)y(i))
将上式代入(5)式, 消去变量
α(j) , 得到一个关于
α(i) 的单变量二次规划问题, 所有的常数项用
C 表示, (5)式被转换成如下,:
F(α(i))=α(i)+(y(j)(C−α(i)y(i)))−21α(i)α(i)y(i)y(i)x
(i)Tx
(i)−21(y(j)(C−α(i)y(i)))2y(j)y(j)x
(j)Tx
(j)
−α(i)(y(j)(C−α(i)y(i)))y(i)y(j)x
(i)Tx
(j)
−α(i)y(i)k=1,k̸=i,j∑mα(k)y(k)x
(i)Tx
(k)−(y(j)(C−α(i)y(i)))y(j)k=1,k̸=i,j∑mα(k)y(k)x
(j)Tx
(k)
=α(i)+(y(j)(C−α(i)y(i)))−21(α(i))2x
(i)Tx
(i)−21(C−α(i)y(i))2x
(j)Tx
(j)−α(i)((C−α(i)y(i)))y(i)x
(i)Tx
(j)−α(i)y(i)v(i)−(C−α(i)y(i))v(j)+C
=α(i)+(y(j)(C−α(i)y(i)))−21(α(i))2Ki,i−21(C−α(i)y(i))2Kj,j−α(i)((C−α(i)y(i)))y(i)Ki,j−α(i)y(i)v(i)−(C−α(i)y(i))v(j)+C
上式为了简便, 将
x
(i)Tx
(j) 简记为
Ki,j (后文会用K代表核函数, 这里姑且认为此时的核函数
K 为恒等映射),将上式对
α(i) 求导, 并令其等于0, 可得:
∂α(i)∂F(α(i))=1−y(i)y(j)−α(i)Ki,i+y(i)(C−α(i)y(i))Kj,j−(C−α(i)y(i)−α(i)y(i))y(i)Ki,j−y(i)v(i)+y(i)v(j)
=1−y(i)y(j)−α(i)(Ki,i+Kj,j−2Ki,j)+Cy(i)Kj,j−Cy(i)Ki,j−y(i)(v(i)−v(j))=0
下面对上式进行变形, 使得可以用
αold(i) 来更新
αnew(i) .
因为SVM对数据点的预测值为:
f(x
)=∑i=1mα(i)y(i)K(x
(i),x
)+b, 则
v(i) 以及
v(j) 的值可以表示成:
v(i)=k=1,k̸=i,j∑mα(k)y(k)Ki,k=f(x(i))−α(i)y(i)Ki,i−α(j)y(j)Ki,j+b
v(j)=k=1,k̸=i,j∑mα(k)y(k)Kj,k=f(x(j))−α(j)y(j)Kj,j−α(i)y(i)Kj,i+b
将
α(j)=y(j)(C−α(i)y(i)) 带到上式, 可得到
v(i)−v(j) 的表达式为:
v(i)−v(j)=f(x(i))−f(x(j))−α(i)y(i)Ki,i+(y(j)(C−α(i)y(i)))y(j)Kj,j−(y(j)(C−α(i)y(i)))y(j)Ki,j+α(i)y(i)Kj,i
=f(x(i))−f(x(j))−α(i)y(i)Ki,i+CKj,j−α(i)y(i)Kj,j−CKi,j+2α(i)y(i)Ki,j
=f(x(i))−f(x(j))−α(i)y(i)(Ki,i+Kj,j−2Ki,j)+CKj,j−CKi,j
注意
v(i)−v(j) 中
α(i) 是更新前初始化的值, 我们将其记作
αold(i) ,以便与我们期望获得的更新后的分量
αnew(i) 相区分 , 将
v(i)−v(j) 的表达式代入
∂αnew(i)∂F(α(i)) 中 , 可得到:
∂αnew(i)∂F(αnew(i))=1−y(i)y(j)−αnew(i)(Ki,i+Kj,j−2Ki,j)+Cy(i)Kj,j−Cy(i)Ki,j−y(i)(f(x(i))−f(x(j))−αold(i)y(i)(Ki,i+Kj,j−2Ki,j)+CKj,j−CKi,j)
=(y(i))2−y(i)y(j)−y(i)f(x(i))+y(i)f(x(j))−αnew(i)(Ki,i+Kj,j−2Ki,j)+αold(i)(Ki,i+Kj,j−2Ki,j)
=f(x(j))−y(j)−(f(x(i))−y(i))−αnew(i)(Ki,i+Kj,j−2Ki,j)+αold(i)(Ki,i+Kj,j−2Ki,j)
我们记
E(i) 为SVM预测值与真实值的误差:
E(i)=f(x(i))−y(i) . 并令
η=Ki,i+Kj,j−2Ki,j , 则最终的一阶导数表达式可以简化为:
∂αnew(i)∂F(αnew(i))=−ηαnew(i)+ηαold(i)+y(i)(E(j)−E(i))=0
由此, 我们可以根据当前的参数值, 直接得到更新后的参数值:
αnew(i)=αold(i)+ηy(i)(E(j)−E(i))=>αnew,unclipped(i)(6)
这里注意, (6)式的推导过程并未考虑下面的约束, 因此, 我们暂且将(6)式中的
αnew(i) 记作
αnew,unclipped(i), 然后考虑如下约束:
α(i)y(i)+α(j)y(j)=−k=1,k̸=i,j∑mα(k)y(k)=C
0≤α(i),α(j)≤C
我们分别以
α(i),α(j) 为坐标轴, 于是上述约束可以看作是一个方形约束(Bosk constraint), 在二维平面中我们可以看到这是个限制在方形区域中的直线, 如下图所示, 直线在方形区域内滑动(对应不同的截距), 同时
αnew(i) 的上下边界也在改变:
当
y(i)̸=y(j) 时(如左图), 限制条件可以写成
α(i)−α(j)=ξ ,根据
ξ 的正负可以得到不同的上下界, 因此
αnew(i) 的上下界可以统一表示成:
- 下界:
L=max(0,αold(i)−αold(j))
- 上界:
H=min(C,C+αold(i)−αold(j))
当
y(i)=y(j) 时(如右图), 限制条件可以写成
α(i)+α(j)=ξ , 于是
αnew(i) 的上下界为:
- 下界:
L=max(0,αold(i)+αold(j)−C)
- 上界:
H=min(C,αold(i)+αold(j))
根据得到的上下界, 我们可以得到"修剪"后的
αnew,clipped(i) :
αnew,clipped(i)=⎩⎪⎨⎪⎧Hαnew,unclipped(i)Lαnew,unclipped(i)>HL≤αnew,unclipped(i)≤Hαnew,unclipped(i)<L(7)
得到了
αnew,clipped(i) 以后, 便可以根据
αold(i)y(i)+αold(j)y(j)=αnew(i)y(i)+αnew(j)y(j) 得到
αnew(j) :
αnew,clipped(j)=αold(j)+y(i)y(j)(αold(i)−αnew,clipped(i))(8)
通过(7)(8)式, 我们便可以高效的计算出更新后的
α(i) 和
α(j) .
当更新了一对
α(i) 和
α(j) 之后, 我们需要计算偏移项
b 注意到, 对于任意支持向量
(x
(s),y(s)) , 都有
y(s)f(x(s))=1 , 即:
y(s)(i∈S∑α(i)y(i)x
(i)Tx
(s)+b)=1
式中
S 为所有支持向量的下标集. 理论上, 可以选取任意支持向量来获得
b , 但现实中我们采取更加鲁棒的做法: 使用所有支持向量求解的平均值(式中所有量均已知,
α
使用的是支持向量对应的系数):
b=∣S∣1s∈S∑(y(s)1−i∈S∑α(i)y(i)x
(i)Tx
(s))
还有另一种更新
b 的方式是, 只使用当前更新的变量
αnew(i) 和
αnew(j) 来对
b 进行更新,如此一来, 为了满足KKT条件, 就有以下几种情况:
- 如果
αnew(i) 在界内(即此时
0<αnew(i)<C , 当前对应样本为支持向量), 则
b=bnew(i)
- 如果
αnew(j) 在界内(即此时
0<αnew(j)<C , 当前对应样本为支持向量), 则
b=bnew(j)
- 如果
αnew(i) 和
αnew(j) 都在界上,且
L̸=H时, 则
bnew(i) 和
bnew(j) 之间的所有的值都符合KKT条件, SMO一般选择终点作为新的偏移量:
bnew=2bnew(i)+bnew(j)
以上讨论中,
bnew(i) 的推导过程为, 当
αnew(i) 在界内时, 对应的样本为支持向量 (根据KKT条件得出) , 此时
y(i)(w
Tx
(i)+b)=1 , 两边同时乘上
y(i) ,得到
∑k=1mα(k)y(k)Kk,i+b=y(i), 将该式展开, 得到:
bnew(i)=y(i)−k=1,k̸=i,j∑mα(k)y(k)Kk,i−αnew(i)y(i)Ki,i−αnew(j)y(j)Kj,i
其中前两项可以写成:
y(i)−k=1,k̸=i,j∑mα(k)y(k)Kk,i=−E(i)+αold(i)y(i)Ki,i+αold(j)y(j)Kj,i+bold
于是有:
bnew(i)=−E(i)−(αnew(i)−αold(i))y(i)Ki,i−(αnew(j)−αold(j))y(j)Kj,i+bold
同理有:
bnew(j)=−E(j)−(αnew(j)−αold(j))y(j)Kj,j−(αnew(i)−αold(i))y(j)Ki,j+bold
如何恰当的选取需要更新的变量
α(i) 和
α(j)
采用启发式的规则来选取, 直觉上我们知道, 我们应该首先优化那些违反KKT条件最严重的样本, 因此我们首先首先遍历所有满足约束条件
0<α(i)<C 的样本点, 即位于间隔边界上的支持向量点(直觉上也能发现这些点最有可能分类错误), 检验它们是否满足KKT条件. 如果这些样本都满足KKT条件,则遍历整个训练样本集,判断它们是否满足KKT条件,直到找到一个违反KKT条件的变量
α(i) (即使
α(i) 位于边界上,也有可能违反KKT条件).
当找到了第一个分量
α(i) 后, 接下来寻找第二个分类
α(j), 而选取的标准是使得它有足够大的变化, 也就是说使选取的两变量所对应的样本之间的间隔最大, 一种直观的解释是, 这样的两个变量有很大的差别, 与对两个相似的变量进行更新相比(相似说明有可能属于同一类, 更新意义不大), 对它们进行更新会带给目标函数值更大的变化. 第二个乘子的迭代步长正比于
∣E(i)−E(j)∣ , 因此, 我们希望选择的乘子能够具有最大的
∣E(i)−E(j)∣. 即当
E(i) 为正时选择绝对值最大的赋值
E(j) , 反之, 选择正值最大的
E(i)
1.3 核函数
在之前的讨论中,我们假设 训练样本 是线性可分的, 然而在现实任务中, 原始样本空间内也许并不存在一个能正确划分两类样本的超平面, 对于这样的问题, 可将一样本从原始空间映射到一个更高维的特征空间, 使得样本在这个特征空间内线性可分 .
需要知道, 如果原始空间是有限维, 即属性数有限, 那么一定存在一个高维特征空间使样本可分
令
ϕ(x
) 表示将
x
映射后的特征向量, 于是, 在特征空间中划分超平面所对应的模型可表示为:
f(x
)=w
Tϕ(x
)+b
类似式(1), 有:
argw
,bmin21∥w∥2
s.t.y(i)(w
Tϕ(x
(i))+b),i=1,2,..,m
其对偶问题为:
argα
max=i=1∑mα(i)−21i=1∑mj=1∑mα(i)α(j)y(i)y(j)ϕ(x
(i))Tϕ(x
(j))(9)
s.t.i=1∑mα(i)y(i)=0,α(i)≥0,i=1,2,...,m
求解上式涉及到计算
ϕ(x
(i))Tϕ(x
(j) , 这是样本
x
(i) 与
x
(j) 映射到特征空间之后的内积, 由于特征空间维数可能很高, 甚至是无穷维, 因此直接计算
ϕ(x
(i))Tϕ(x
(j) 是很困难的, 为了避开这个障碍, 可以设想这样一个函数:
K(x
(i),x
(j))=ϕ(x
(i))Tϕ(x
(j)
即
x(i) 与
x(j) 在特征空间的内积等于它们在原始样本空间中通过函数
K(⋅,⋅) 计算的结果. (有可能是先内积再函数映射, 也有可能是求范式再函数映射). 于是(9)式可重写为:
argα
maxi=1∑mα(i)−21i=1∑mj=1∑mα(i)α(j)y(i)y(j)K(x
(i),x
(j))
s.t.i=1∑mα(i)y(i)=0
α(i)≥0,i=1,2,...,m
注意, 前面几个小节的推导过程也用了符号
K , 但是就像前面所说的, 前几个小节的
K 是为了方便书写而使用的, 你可以把它看作是一个恒等映射的核函数
当我们解出上式得到
α
后, 就可以得到划分超平面对应的模型(式中
x
为样本点,
f(x
) 为该样本点的预测结果):
f(x
)=w
Tx
+b=i=1∑mα(i)y(i)K(x
,x
(j))+b
核函数定理: 令
χ 为输入空间
K(⋅,⋅) 是定义在
χ×χ 上的对称函数, 则
K(⋅,⋅) 是核函数 当且仅当 对于任意数据
D=x
(1),x
(2),...,x
(m) , 核矩阵
K 总是半正定的
从以上分析可知, 核函数的选择决定了特征空间的好坏, 因此, 一个合适的核函数,就成为了支持向量机的最大变数.
下面是几种常用的核函数:
名称 |
表达式 |
参数 |
线性核 |
|
|
高斯核 |
|
|
拉普拉斯核 |
|
|
Sigoid核 |
|
|
此外,还可以通过函数组合得到:
- 若
K1 和
K2 都是核函数 ,则对任意的正数
γ1,γ2 , 其线性组合
γ1K1+γ2K2 也是核函数
- 若
K1 和
K2 为核函数, 则函数的直积
K1⊗K2(x
,z
)=K1(x
,z
)K2(x
,z
)
- 若
K1 是核函数, 则对任意函数
g(x
),
K(x
,z
)=g(x
)K1(x
,z
)g(z
) 也是核函数
1.4 软间隔与正则化
在实现任务中, 往往很难确定合适的核函数, 使得训练样本在特征空间中线性可分, 即便是找到了, 也无法断定是否是由于过拟合造成的 , 因此, 我们需要 允许支持向量机在一些样本上出错 , 以缓解上面的问题.
硬间隔(hard margin)与软间隔(soft margin)的区分:
- 硬间隔: 所有样本都必须分类正确
- 软间隔: 允许某些样本不满足约束(11)式(即,预测结果和真实结果符号相反,分类错误,或预测结果绝对值小于1,相当于越过了支持向量划定的边界)
我们要在最大化间隔的同时, 使得不满足约束的样本应尽可能的少, 于是, 优化目标可写为:
w
,bmin21∥w∥2+Ci=1∑ml0/1(y(i)(w
Tx(i)+b)−1)(10)
y(i)(w
Tx
(i)+b)≥1(11)
其中,
C>0 是一个常数(注意与前几节推导SVM时的常数区分),
l0/1 是 “0/1 损失函数”:
l0/1(z)={1,0,if z<0;otherwise.
当C无穷大时, (10)式就会迫使所有样本均满足约束, 也就是令所有训练样本都分类正确(容易产生过拟合), 当C取有限值时, 则允许有一些样本不满足约束(11)式.
但是,
l0/1 非凸, 不连续, 数学性质不好, 因此, 通常使用其他函数来替代, 称为" 替代损失", 下面为三种常用的替代损失:
- hinge损失:
lhinge(z)=max(0,1−z)
- 指数损失(exponential loss):
lexp(z)=exp(−z)
- 对率损失(logistic loss):
llog(z)=log(1+exp(−z))
假设采用hinge损失损失, 然后可以引入"松弛变量"(slack variables)
ξ(i)≥0 ,每一个样本都有一个对应的松弛变量, 用以表征该样本不满足约束(11)的程度 则可将(10)式重写为:
w
,b,ξ(i)min21∥w
∥2+Ci=1∑mξ(i)(12)
s.t.y(i)(w
Tx(i)+b)≥1−ξ(i)
ξ(i)≥,i=1,2,...,m.
可以看出, 上式是与之前推导相似的二次规划问题, 只不过是约束条件变的宽松了(为了允许一些样本犯错), 因此,同样利用拉格朗日乘子法求解, 首先得到上式的拉格朗日函数:
L(w
,b,α
,ξ
,μ
)=21∥w∥2+Ci=1∑mξ(i)+i=1∑mα(i)(1−ξ(i)−y(i)(w
Tx
(i)+b))−i=1∑mμ(i)ξ(i)
其中,
α(i)≥0,μ(i)≥0 是拉格朗日乘子, 令
L(w
,b,α
,ξ
,μ
) 对
w
,b,α
,ξ
求偏导, 并令其为0 , 可得:
w
=i=1∑mα(i)y(i)x
(i)
0=i=1∑mα(i)y(i)
C=α(i)+μ(i)
得到(12)式对应的对偶问题如下:
αmaxi=1∑mα(i)−21i=1∑mj=1∑mα(i)α(j)y(i)y(j)Ki,j
s.t.i=1∑mα(i)y(i)=0
0≤α(i)≤C,i=1,2,...,m
可以看到, 此时,
α(i) 的约束条件变成了
0≤α(i)≤C , 上式的KKT条件要求为:
⎩⎪⎪⎪⎨⎪⎪⎪⎧α(i)≥0,μ(i)≥0y(i)f(x
(i))−1+ξ(i)≥0,α(i)(y(i)f(x
(i))−1+ξ(i))=0,ξ(i)≥0,μ(i)ξ(i)=0
于是, 从KKT条件中我们可以看出, 对任意的训练样本
(x
(i),y(i)), 总有
α(i)=0 或
y(i)f(x
(i))=1−ξ(i).
- 若
α(i)=0, 则该样本不会对
f(x
) 产生影响.
- 若
α(i)>0, 则必有
y(i)f(x
(i))=1−ξ(i), 即该样本是支持向量
- 因为
C=α(i)+μ(i) , 所以, 若
α(i)<C , 则有
μ(i)>0 , 进而有
ξ(i)=0, 即该样本在最大间隔边界上(是否也就是支持向量?)
- 若
α(i)=C , 则有
μ(i)=0, 此时若
ξ(i)≤1, 则该样本落在最大间隔内部, 若
ξ(i)>1, 则该样本被错误分类.
以上讨论, 我们可以看出, 最终的模型依然只与支持向量有关, 保持了稀疏性(hinge损失有一块平坦的零区域,这使得SVM的解具有稀疏性)
以上是对使用hinge损失时讨论的情况, 还可以将其替换成别的损失函数以得到其他学习模型, 这些模型的性质与所用的替代函数直接相关, 但它们具有一个共性: 优化目标中的第一项用来描述划分超平面的"间隔"大小, 另一项用来表示训练集上的误差, 可写为更一般的形式:
fminΩ(f)+Ci=1∑ml(f(x
(i)),y(i))
其中,
Ω(f) 称为"结构风险"(structural risk), 用于描述模型
f 自身的性质; 第二项
C∑i=1ml(f(x
(i)) 称为"经验风险"(empirical risk), 用于描述模型与训练数据的契合程度.
C 用于对二者进行折衷.
从预测误差的角度来看, 第二项相当于模型误差, 第一项相当于正则化项, 表述了模型本身的性质, 一方面, 这为引入领域知识和用户意图提供了途径, 另一方面, 该信息有助于消减假设空间, 降低过拟合风险
3. 问答
为什么SVM的分类结果仅依赖于支持向量?
百机p53
核函数中不同参数的影响
https://mp.weixin.qq.com/s?__biz=MzU4MjQ3MDkwNA==&mid=2247484495&idx=1&sn=4f3a6ce21cdd1a048e402ed05c9ead91&chksm=fdb699d8cac110ce53f4fc5e417e107f839059cb76d3cbf640c6f56620f90f8fb4e7f6ee02f9&scene=21#wechat_redirect
既然深度学习技术性能表现以及全面超越SVM, SVM还有存在的必要吗?
6.Reference
[1] https://mp.weixin.qq.com/s?__biz=MzU4MjQ3MDkwNA==&mid=2247483937&idx=1&sn=84a5acf12e96727b13fd7d456c414c12&chksm=fdb69fb6cac116a02dc68d948958ee731a4ae2b6c3d81196822b665224d9dab21d0f2fccb329&scene=21#wechat_redirect
[2] 西瓜书
[3] http://www.cnblogs.com/jerrylead/archive/2011/03/18/1988419.html
https://zhuanlan.zhihu.com/p/29212107