支持向量机(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)
称为线性可分支持向量机。

一般来说,一个点距离分离超平面的远近可以表示分类预测的确信程度,而 w ⋅ x + b w\cdot x+b wx+b的符号与类标记 y y y的符号是否一致可以表示分类是否正确。因此可以用 y ( w ⋅ x + b ) y(w\cdot x+b) y(wx+b)来表示分类的正确性以及确信度。

对于给定的训练集 T T T和超平面 ( w , b ) (w,b) (w,b),定义超平面 ( w , b ) (w,b) (w,b)关于样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔为
γ ^ i = y i ( w ⋅ x + b ) \hat{γ}_i=y_i(w\cdot x+b) γ^i=yi(wx+b)
定义超平面 ( w , b ) (w,b) (w,b)关于训练数据集 T T T的函数间隔为超平面 ( w , b ) (w,b) (w,b)关于 T T T中所有样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的函数间隔之最小值,即
γ ^ = min ⁡ i = 1 , . . . , N γ ^ i \hat{γ}=\min_{i=1,...,N}{\hat{γ}_i} γ^=i=1,...,Nminγ^i
由于只定义了函数间隔并不唯一,例如将 w w w b b b成倍增加,此时分离超平面没有改变,函数间隔却改变了。因此可以对分离超平面的法向量做一些限制,例如令 ∣ ∣ w ∣ ∣ = 1 ||w||=1 w=1,此时间隔唯一确定,函数间隔变为几何间隔
γ ^ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x + b ∣ ∣ w ∣ ∣ ) \hat{γ}_i=y_i(\frac{w}{||w||}\cdot x+\frac{b}{||w||}) γ^i=yi(wwx+wb)
同理,超平面与数据集的几何间隔为超平面与数据集中所有样本点的几何间隔的最小值
γ ^ = min ⁡ i = 1 , . . . , N γ ^ i \hat{γ}=\min_{i=1,...,N}{\hat{γ}_i} γ^=i=1,...,Nminγ^i

间隔最大化

支持向量机学习的基本想法是求解能够正确划分训练数据集并且集合间隔最大的分离超平面。
该问题可以表述为一个优化问题
max ⁡ w , b γ \max_{w,b}γ w,bmaxγ
s.t. y i ( w ∣ ∣ w ∣ ∣ ⋅ x + b ∣ ∣ w ∣ ∣ ) ⩾ γ , i = 1 , 2 , . . . , N y_i(\frac{w}{||w||}\cdot x+\frac{b}{||w||})\geqslant γ, i=1,2,...,N yi(wwx+wb)γ,i=1,2,...,N
考虑到几何间隔与函数间隔之间的关系 γ = γ ^ ∣ ∣ w ∣ ∣ γ=\frac{\hat{γ}}{||w||} γ=wγ^,可以将问题改写为:
max ⁡ w , b γ ^ ∣ ∣ w ∣ ∣ \max_{w,b}\frac{\hat{γ}}{||w||} w,bmaxwγ^
s.t. y i ( w ⋅ x + b ) ⩾ γ ^ , i = 1 , 2 , . . . , N y_i(w\cdot x+b)\geqslant \hat{γ}, i=1,2,...,N yi(wx+b)γ^,i=1,2,...,N
考虑到函数间隔 γ ^ \hat{γ} γ^的取值不影响规划问题的最优解,可取 γ ^ = 1 \hat{γ}=1 γ^=1,并且最大化 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1与最小化 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21w2是等价的,因此可以得到线性可分支持向量机学习的最优化问题
min ⁡ w , b 1 2 ∣ ∣ w ∣ ∣ 2 \min_{w,b}\frac{1}{2}||w||^2 w,bmin21w2
s.t. y i ( w ⋅ x i + b ) − 1 ⩾ 0 , i = 1 , 2 , . . . , N y_i(w\cdot x_i+b)-1\geqslant0,i=1,2,...,N yi(wxi+b)10,i=1,2,...,N
此问题为一个凸二次规划问题。
求解出该问题的解 w ∗ , b ∗ w^*, b^* w,b,可以得到分离超平面
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)

支持向量指的是令约束条件成立的样本点,间隔依赖于分离超平面的法向量 w w w,等于 2 ∣ ∣ w ∣ ∣ \frac{2}{||w||} w2。支持向量机由很少的“重要的”训练样本决定。
在求解时采用对偶方法,首先构造拉格朗日函数
L ( w , b , α ) = 1 2 ∣ ∣ w ∣ ∣ 2 − ∑ i = 1 N α i y i ( w ⋅ x i + b ) + ∑ i = 1 N α i L(w,b,α)=\frac{1}{2}||w||^2-\sum_{i=1}^Nα_iy_i(w\cdot x_i+b)+\sum_{i=1}^Nα_i L(w,b,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi
根据拉格朗日对偶性,原始问题的对偶问题是极大极小问题:
max ⁡ α min ⁡ w , b L ( w , b , α ) \max_{α}\min_{w,b}L(w,b,α) αmaxw,bminL(w,b,α)
首先求 min ⁡ w , b L ( w , b , α ) \min{w,b}L(w,b,α) minw,bL(w,b,α)
将拉格朗日函数分别对w,b求偏导并令其等于0。
得到
w = ∑ i = 1 N α i y i x i w = \sum_{i=1}^Nα_iy_ix_i w=i=1Nαiyixi
∑ i = 1 N α i y i = 0 \sum_{i=1}^Nα_iy_i=0 i=1Nαiyi=0
将两个式子带入拉格朗日函数,则有:
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 \min_{w,b}L(w,b,\alpha)=-\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha _i\alpha_jy_iy_j(x_i\cdot x_j)+\sum_{i=1}^N\alpha_i w,bminL(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi
此时问题转化为
min ⁡ α 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) − ∑ i = 1 N α i \min_{\alpha}\frac{1}{2}\sum_{i=1}^N\sum_{j=1}^N\alpha_i\alpha_jy_iy_j(x_i\cdot x_j)-\sum_{i=1}^N\alpha_i αmin21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαi
s.t.
∑ i = 1 N α i y i = 0 \sum_{i=1}^N\alpha_iy_i = 0 i=1Nαiyi=0
α i ⩾ 0 , i = 1 , 2 , . . . , N \alpha_i\geqslant0,i=1,2,...,N αi0,i=1,2,...,N
对于线性可分数据集,假设对偶问题的解为 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α ∗ N ) T \alpha^*=(\alpha^*_1,\alpha^*_2,...,\alpha^*N)^T α=(α1,α2,...,αN)T,则可以由 α ∗ \alpha^* α求出 w ∗ , b ∗ w^*,b^* w,b.
w ∗ = ∑ i = 1 N α i y i x i w^*=\sum_{i=1}^N\alpha_iy_ix_i w=i=1Nαiyixi
b ∗ = y j − ∑ i = 1 N α i ∗ y i ( x i ⋅ x j ) b^*=y_j-\sum_{i=1}^N\alpha_i^*y_i(x_i\cdot x_j) b=yji=1Nαiyi(xixj)
其中,存在 j j j使得 α j ∗ > 0 \alpha_j^*>0 αj>0

则最终求得的模型,分离超平面为
∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ = 0 \sum_{i=1}^N\alpha_i^*y_i(x\cdot x_i)+b^*=0 i=1Nαiyi(xxi)+b=0
分类决策函数为
f ( x ) = s i g n ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=sign(\sum_{i=1}^N\alpha_i^*y_i(x\cdot x_i)+b^*) f(x)=sign(i=1Nαiyi(xxi)+b)

参考:《统计学习方法》 李航著

你可能感兴趣的