支持向量机(SVM)原理小结(1)线性支持向量机

SVM系列文章:

支持向量机(SVM)原理小结(1)线性支持向量机
支持向量机(SVM)原理小结(2)非线性支持向量机
支持向量机(SVM)原理小结(3)支持向量回归SVR

本博客中使用到的完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

支持向量机(support vector machine,SVM)是二类分类模型,是定义在特征空间上的 间隔最大线性分类器。通过使用核技巧,使得SVM成为实质上的非线性分类器。SVM的学习策略是:间隔最大化,等价于正则化的合页损失函数的最小化问题。SVM的学习算法是:序列最小优化(SMO)算法

适用问题:二类分类

模型特点:分离超平面;核技巧

模型类型:判别模型

损失函数:合页损失

学习策略:极小化正则化的合页损失;最大化软间隔

学习算法:序列最小优化算法 SMO

1. 线性可分支持向量机(硬间隔SVM)

假设输入空间和特征空间是2个不同的空间,输入被映射到特征空间,得到特征向量。SVM是在 特征空间 进行的。

当训练数据是 线性可分 时,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)

但是SVM感知机的不同是,SVM得到的分离超平面是唯一的,而感知机求得的分离超平面却有无穷多个。这是因为他们采用的 学习策略 不同,感知机是 误分类(距离)最小化 ,而SVM是 间隔最大化

1.1 函数间隔和几何间隔

样本点到超平面 ( w , b ) (w,b) (w,b)函数间隔 γ ^ i = y i ( w ⋅ x + b ) = ∣ ∣ w ∣ ∣ γ i \hat\gamma_i=y_i(w\cdot x+b)={||w||}\gamma_i γ^i=yi(wx+b)=wγi

数据集T到超平面 ( w , b ) (w,b) (w,b)函数间隔 γ ^ = min ⁡ i = 1 , . . . , N γ ^ i \hat\gamma=\min\limits_{i=1,...,N}\hat\gamma_i γ^=i=1,...,Nminγ^i

函数间隔可以表示分类的正确性(符号的正负)和确信度( ∣ w ⋅ x + b ∣ |w\cdot x+b| wx+b)能相对的表示点x 距离超平面的远近程度。

样本点到超平面 ( w , b ) (w,b) (w,b)几何间隔 γ i = y i ( w ∣ ∣ w ∣ ∣ ⋅ x + b ∣ ∣ w ∣ ∣ ) = γ ^ i ∣ ∣ w ∣ ∣ \gamma_i=y_i(\frac{w}{||w||}\cdot x+\frac{b}{||w||})=\frac{\hat\gamma_i}{||w||} γi=yi(wwx+wb)=wγ^i

数据集T到超平面 ( w , b ) (w,b) (w,b)几何间隔 γ = min ⁡ i = 1 , . . . , N γ i \gamma=\min\limits_{i=1,...,N}\gamma_i γ=i=1,...,Nminγi

几何间隔表示实例点到超平面的带符号的距离,当超平面参数w,b成比例改变时(超平面不变),几何间隔不变,但是函数间隔会按此比例改变。

1.2 学习策略:硬间隔最大化

线性可分的数据集,其 几何间隔唯一 的。

基本想法:求解能够正确分类并且几何间隔最大的分离超平面,即最大间隔分离超平面

将此问题表示为带约束的最优化问题:

max ⁡ w , b γ s.t. y i ( w ∥ w ∥ ⋅ x i + b ∥ w ∥ ) ≥ γ , i = 1 , 2 , ⋯   , N \begin{array}{cl}\max\limits_{w,b}&\gamma\\\text{s.t.}&y_i\left(\frac{w}{\|w\|}\cdot x_i+\frac{b}{\|w\|}\right)\ge\gamma,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.γyi(wwxi+wb)γ,i=1,2,,N

约束条件表示超平面(w,b)关于每个训练样本点的几何间隔至少是 γ \gamma γ

可改写为:

max ⁡ w , b γ ^ ∥ w ∥ s.t. y i ( w ⋅ x i + b ) ≥ γ ^ , i = 1 , 2 , ⋯   , N \begin{array}{cl}\max\limits_{w,b}&\frac{\hat\gamma}{\|w\|}\\\text{s.t.}&y_i\left(w\cdot x_i+b\right)\ge\hat\gamma,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.wγ^yi(wxi+b)γ^,i=1,2,,N

函数间隔 γ ^ \hat\gamma γ^的取值并不影响最优化问题的解。取 γ ^ = 1 \hat\gamma=1 γ^=1,则目标转化为最大化 1 ∥ w ∥ \frac{1}{\|w\|} w1,约束转化为 y i ( w ⋅ x i + b ) ≥ 1 y_i\left(w\cdot x_i+b\right)\ge1 yi(wxi+b)1。又因为最大化 1 ∥ w ∥ \frac{1}{\|w\|} w1和最小化 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^2 21w2(更方便求导)等价,所以约束最优化问题可进一步改写为:

max ⁡ w , b 1 2 ∥ w ∥ 2 s.t. y i ( w ⋅ x i + b ) − 1 ≥ 0 , i = 1 , 2 , ⋯   , N \begin{array}{cl}\max\limits_{w,b}&\frac{1}{2}\|w\|^2\\\text{s.t.}&y_i\left(w\cdot x_i+b\right)-1\ge0,\quad i=1,2,\cdots,N\end{array} w,bmaxs.t.21w2yi(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),即线性可分支持向量机模型。

间隔最大化的直观解释:
对训练数据集找到几何间隔最大的超平面,意味着以充分大的确信度对训练数据进行分类。也就是说,不仅将正负实例点分开,而且最难分的点(离超平面最近的点)也有足够大的确信度把它们分开。而这样的超平面,对未知的新实例,应该有很好的分类预测能力。

1.3 学习算法—最大间隔法

线性可分训练数据集的最大间隔超平面是 存在且唯一 的。

线性可分SVM算法-最大间隔法
线性可分SVM算法-最大间隔法

支持向量和间隔边界

线性可分的情况下,离分离超平面最近的样本点,称为支持向量。支持向量是约束不等式等号成立的点,即 y i ( w ⋅ x i + b ) − 1 = 0 y_i\left(w\cdot x_i+b\right)-1=0 yi(wxi+b)1=0

支持向量

超平面 H 1 : w ⋅ x + b = 1 H_1:w\cdot x+b=1 H1:wx+b=1和超平面 H 2 : w ⋅ x + b = − 1 H_2:w\cdot x+b=-1 H2:wx+b=1上的点就是 支持向量 H 1 H_1 H1 H 2 H_2 H2称为 间隔边界,他们之间没有实例点, H 1 H_1 H1 H 2 H_2 H2之间的距离成为 间隔(margin)间隔的大小等于 2 ∥ w ∥ \frac{2}{\|w\|} w2

在决定分离超平面时,只有支持向量起作用,而其他实例点并不起作用。这也是模型名称支持向量机的由来。支持向量个数一般很少,所以支持向量机由很少的但却很重要的训练样本确定。

1.4 学习算法—对偶形式

对偶算法的 优点

  1. 对偶问题往往 更容易求解(内积形式
  2. 自然引入 核函数,进而推广到非线性分类问题

首先写出有约束最优化的 原始问题拉格朗日无约束优化函数

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}\left(w \cdot x_{i}+b\right)+\sum_{i=1}^{N} \alpha_{i} L(w,b,α)=21w2i=1Nαiyi(wxi+b)+i=1Nαi

其中 α i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,i=1,...,N αi0,i=1,...,N,称为拉格朗日乘子。

约束最优化的原始问题可以表示为 拉格朗日极小极大问题 min ⁡ w , b max ⁡ α L ( w , b , α ) \min\limits_{w,b}\max\limits_{\alpha} L(w,b,\alpha) w,bminαmaxL(w,b,α)

由于 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)和约束条件函数为连续可微的凸函数,且满足KKT条件,则原始问题的解与对偶问题的解是等价的,那么可以通过求解对偶问题求解原始问题。

原始问题的对偶问题拉格朗日极大极小问题 max ⁡ α min ⁡ w , b L ( w , b , α ) \max\limits_{\alpha}\min\limits_{w,b} L(w,b,\alpha) αmaxw,bminL(w,b,α)

(1)求 min ⁡ w , b L ( w , b , α ) \min\limits_{w,b} L(w,b,\alpha) w,bminL(w,b,α)

L ( w , b , α ) L(w, b, \alpha) L(w,b,α)分别对 w w w b b b求偏导数,并令其等于0。

∇ 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 \nabla_{w} L(w, b, \alpha)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\\nabla_{b} L(w, b, \alpha)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 wL(w,b,α)=wi=1Nαiyixi=0bL(w,b,α)=i=1Nαiyi=0

w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i\\\sum_{i=1}^{N}\alpha_iy_i=0 w=i=1Nαiyixii=1Nαiyi=0

代入得

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 y i ( ( ∑ j = 1 N α j y j x j ) ⋅ x i + b ) + ∑ i = 1 N α i = − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \begin{aligned}L(w, b, \alpha) =&\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum_{i=1}^{N} \alpha_{i} y_{i}\left(\left(\sum_{j=1}^{N} \alpha_{j} y_{j} x_{j}\right) \cdot x_{i}+b\right)+\\&\sum_{i=1}^{N} \alpha_{i} \\=&-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\end{aligned} L(w,b,α)==21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαiyi((j=1Nαjyjxj)xi+b)+i=1Nαi21i=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 \min_{w,b}L(w, b, \alpha)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,bminL(w,b,α)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

(2)求 min ⁡ w , b L ( w , b , α ) \min\limits_{w,b} L(w,b,\alpha) w,bminL(w,b,α) α \alpha α的极大,即对偶问题

max ⁡ α − 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 \begin{array}{ll}\max\limits_{\alpha} & -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} αmax s.t. 21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nα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 \begin{array}{ll}\min\limits_{\alpha} & \frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& \alpha_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} αmin s.t. 21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=0αi0,i=1,2,,N

上式即为 对偶最优化问题

对偶最优化问题对 α \alpha α的解设为 α ∗ \alpha^* α,那么原始问题最优化问题的解 w ∗ , b ∗ w^*,b^* w,b也可求出。

即求得

w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^{N}\alpha_i^*y_ix_i w=i=1Nαiyixi

任选一个 α ∗ \alpha^* α的分量 α j ∗ \alpha_j^* αj满足 α j ∗ > 0 \alpha_{j}^* > 0 αj>0用来求 b ∗ b^* b(即任选一支持向量用来求 b ∗ b^* b):

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)

分离超平面可以写为

∑ 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 ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\text{sign}\left(\sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*\right) f(x)=sign(i=1Nαiyi(xxi)+b)

对偶算法中,分类决策函数只依赖于输入 x x x 和 训练样本 x i x_i xi的内积,而上式称为线性可分支持向量机的对偶形式

线性可分SVM算法-对偶算法

总结来说,对于线性可分的数据集来说,先求解对偶问题的解 α ∗ \alpha^* α,再求原始问题的解 w ∗ , b ∗ w^*,b^* w,b,从而得到分离超平面和分类决策函数。

支持向量

w ∗ , b ∗ w^*,b^* w,b只依赖于训练数据中对应于 α i > 0 \alpha_i>0 αi>0的样本点 ( x i , y i ) (x_i,y_i) (xi,yi),其他样本点对 w ∗ , b ∗ w^*,b^* w,b无影响(保证了 解的稀疏性,最终模型仅与支持向量有关 )。训练数据中对应于 α i > 0 \alpha_i>0 αi>0的样本点称为 支持向量

由KKT互补条件知, α i ( y i ( w ∗ ⋅ x + b ∗ ) − 1 ) = 0 \alpha_i(y_i(w^*\cdot x+b^*)-1)=0 αi(yi(wx+b)1)=0,当 α i > 0 \alpha_i>0 αi>0时,则一定有 y i ( w ∗ ⋅ x + b ∗ ) − 1 = 0 y_i(w^*\cdot x+b^*)-1=0 yi(wx+b)1=0,即 w ∗ ⋅ x + b ∗ = ± 1 w^*\cdot x+b^*=\pm1 wx+b=±1,即 x i x_i xi一定在间隔边界上,这与“最大间隔法”中定义的支持向量一致。

2. 线性支持向量机(软间隔SVM)

训练集线性可分太理想化了,现实中的数据往往是线性不可分的,例如训练集中含有噪声或特异点时,此时硬间隔最大化的SVM就不再适用了,而需要使用更一般化的软间隔最大化SVM。

2.1 学习策略:软间隔最大化

假设数据集特点数据集不是线性可分的,除去少许特异点后,大部分样本组成的集合是线性可分的

对每个样本点 ( x i , y i ) (x_i,y_i) (xi,yi)引入一个松弛变量 ξ i ≥ 0 \xi_i\ge0 ξi0,使得约束变为: y i ( w ⋅ x + b ) ≥ 1 − ξ i y_i(w\cdot x +b)\ge1-\xi_i yi(wx+b)1ξi,同时对每个松弛变量支付一个代价 ξ i \xi_i ξi这里的代价 ξ i \xi_i ξi,其实就是不满足约束的程度,结合后面合页损失来看,也是一样的意思:满足约束的即间隔大于1的,代价为0;勉强满足约束的即点落在间隔边界和分离超平面之间的,代价比较小,完全背离约束的即落在超平面误分一侧的,代价最大),则线性不可分线性支持向量机的的学习问题就转化为如下的约束最优化的原始问题:

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 \begin{array}{ll}\min\limits_{w, b, \xi} & \frac{1}{2}\|w\|^{2}+C \sum\limits_{i=1}^{N} \xi_{i} \\\text { s.t. } & y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\& \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} w,b,ξmin s.t. 21w2+Ci=1Nξiyi(wxi+b)1ξi,i=1,2,,Nξi0,i=1,2,,N

其中 C > 0 C>0 C>0为惩罚因子,C越大,对误分类的惩罚增大,会迫使样本去满足约束;C越小,对误分类的惩罚减小。最小化目标函数除了要使得间隔( 2 ∥ w ∥ \frac{2}{\|w\|} w2)尽量大( 1 2 ∥ w ∥ 2 \frac{1}{2}\|w\|^{2} 21w2尽量小),还要使得误分类点个数尽量小( ∑ i = 1 N ξ i \sum\limits_{i=1}^{N} \xi_{i} i=1Nξi尽量小)。

上面问题的解:w是唯一的,但b不是唯一的,而是在一个区间内。

求出上述约束最优化问题的解 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),即 线性支持向量机模型

2.2 学习算法—对偶形式

首先写出有约束最优化的原始问题拉格朗日无约束优化函数

L ( w , b , ξ , α , μ ) ≡ 1 2 ∥ w ∥ 2 + C ∑ i = 1 N ξ i − ∑ i = 1 N α i ( y i ( w ⋅ x i + b ) − 1 + ξ i ) − ∑ i = 1 N μ i ξ i L(w, b, \xi, \alpha, \mu) \equiv \frac{1}{2}\|w\|^{2}+C \sum_{i=1}^{N} \xi_{i}-\sum_{i=1}^{N} \alpha_{i}\left(y_{i}\left(w \cdot x_{i}+b\right)-1+\xi_{i}\right)-\sum_{i=1}^{N} \mu_{i} \xi_{i} L(w,b,ξ,α,μ)21w2+Ci=1Nξii=1Nαi(yi(wxi+b)1+ξi)i=1Nμiξi

其中 α i ≥ 0 , μ i ≥ 0 , i = 1 , . . . , N \alpha_i\ge0,\mu_i\ge0,i=1,...,N αi0,μi0,i=1,...,N,称为拉格朗日乘子。

约束最优化的原始问题可以表示为 拉格朗日极小极大问题 min ⁡ w , b , ξ max ⁡ α , μ L ( w , b , ξ , α , μ ) \min\limits_{w,b,\xi}\max\limits_{\alpha,\mu} L(w, b, \xi, \alpha, \mu) w,b,ξminα,μmaxL(w,b,ξ,α,μ)

由于 L ( w , b , ξ , α , μ ) L(w, b, \xi, \alpha, \mu) L(w,b,ξ,α,μ)和约束条件函数为连续可微的凸函数,且满足KKT条件,则原始问题的解与对偶问题的解是等价的,那么可以通过求解对偶问题求解原始问题。

原始问题的对偶问题拉格朗日极大极小问题 max ⁡ α , μ min ⁡ w , b , ξ L ( w , b , ξ , α , μ ) \max\limits_{\alpha,\mu}\min\limits_{w,b,\xi} L(w, b, \xi, \alpha, \mu) α,μmaxw,b,ξminL(w,b,ξ,α,μ)

(1)求 min ⁡ w , b , ξ L ( w , b , ξ , α , μ ) \min\limits_{w,b,\xi} L(w, b, \xi, \alpha, \mu) w,b,ξminL(w,b,ξ,α,μ)

L ( w , b , ξ , α , μ ) L(w, b, \xi, \alpha, \mu) L(w,b,ξ,α,μ)分别对 w w w, b b b ξ \xi ξ求偏导数,并令其等于0。

∇ 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 L ( w , b , ξ , α , μ ) = C − α i − μ i = 0 \nabla_{w} L(w, b, \xi, \alpha, \mu)=w-\sum_{i=1}^{N} \alpha_{i} y_{i} x_{i}=0 \\\nabla_{b} L(w, b, \xi, \alpha, \mu)=-\sum_{i=1}^{N} \alpha_{i} y_{i}=0 \\\nabla_{\xi_i} L(w, b, \xi, \alpha, \mu)=C-\alpha_i-\mu_i=0 wL(w,b,ξ,α,μ)=wi=1Nαiyixi=0bL(w,b,ξ,α,μ)=i=1Nαiyi=0ξiL(w,b,ξ,α,μ)=Cαiμi=0

w = ∑ i = 1 N α i y i x i ∑ i = 1 N α i y i = 0 C − α i − μ i = 0 w=\sum_{i=1}^{N}\alpha_iy_ix_i\\\sum_{i=1}^{N}\alpha_iy_i=0 \\C-\alpha_i-\mu_i=0 w=i=1Nαiyixii=1Nαiyi=0Cαiμi=0

代入得

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 \begin{aligned}L(w, b, \xi, \alpha, \mu) =&-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i}\end{aligned} L(w,b,ξ,α,μ)=21i=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 \min_{w,b,\xi}L(w, b, \xi, \alpha, \mu)=-\frac{1}{2} \sum_{i=1}^{N} \sum_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum_{i=1}^{N} \alpha_{i} w,b,ξminL(w,b,ξ,α,μ)=21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi

(2)求 min ⁡ w , b , ξ L ( w , b , ξ , α , μ ) \min\limits_{w,b,\xi}L(w, b, \xi, \alpha, \mu) w,b,ξminL(w,b,ξ,α,μ) α \alpha α的极大,即对偶问题

max ⁡ α − 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 C − α i − μ i = 0 α i ⩾ 0 μ i ⩾ 0 , i = 1 , 2 , ⋯   , N \begin{array}{ll}\max\limits_{\alpha} & -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& C-\alpha_i-\mu_i=0 \\& \alpha_{i} \geqslant 0 \\& \mu_i \geqslant 0 , \quad i=1,2, \cdots, N\end{array} αmax s.t. 21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαii=1Nαiyi=0Cαiμi=0αi0μi0,i=1,2,,N

等价于(利用等式 C − α i − μ i = 0 C-\alpha_i-\mu_i=0 Cαiμi=0消去 μ i \mu_i μi,并将求max转化为求min):

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 0 ⩽ α i ⩽ C , i = 1 , 2 , ⋯   , N \begin{array}{ll}\min\limits_{\alpha} & \frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)-\sum\limits_{i=1}^{N} \alpha_{i} \\\text { s.t. } & \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 \\& 0 \leqslant\alpha_{i} \leqslant C, \quad i=1,2, \cdots, N\end{array} αmin s.t. 21i=1Nj=1Nαiαjyiyj(xixj)i=1Nαii=1Nαiyi=00αiC,i=1,2,,N

上式即为 对偶最优化问题

对偶最优化问题对 α \alpha α的一个解设为 α ∗ \alpha^* α,那么原始问题最优化问题的解 w ∗ , b ∗ w^*,b^* w,b也可求出。

即求得

w ∗ = ∑ i = 1 N α i ∗ y i x i w^*=\sum_{i=1}^{N}\alpha_i^*y_ix_i w=i=1Nαiyixi

任选一个 α ∗ \alpha^* α的分量 α j ∗ \alpha_j^* αj满足 0 < α j ∗ < C 0 <\alpha_{j}^* < C 0<αj<C用来求 b ∗ b^* b(即任选一支持向量用来求 b ∗ b^* b):

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)

分离超平面可以写为

∑ 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 ) = sign ( ∑ i = 1 N α i ∗ y i ( x ⋅ x i ) + b ∗ ) f(x)=\text{sign}\left(\sum_{i=1}^{N}\alpha_i^*y_i(x\cdot x_i)+b^*\right) f(x)=sign(i=1Nαiyi(xxi)+b)

对偶算法中,分类决策函数只依赖于输入 x x x和 训练样本 x i x_i xi的内积,而上式称为线性支持向量机的对偶形式

线性不可分SVM算法-对偶算法
线性不可分SVM算法-对偶算法

支持向量

将对偶问题的解 α ∗ = ( α 1 ∗ , α 2 ∗ , ⋯   , α N ∗ ) T \alpha^*=\left(\alpha_1^*,\alpha_2^*,\cdots,\alpha_N^*\right)^T α=(α1,α2,,αN)T中对应与 α i ∗ > 0 \alpha_i^*>0 αi>0的样本点 ( x i , y i ) (x_i,y_i) (xi,yi)的实例 x i x_i xi称为 支持向量(软间隔的支持向量)

软间隔支持向量机的最终模型,也是仅与支持向量有关,即依然保证了 稀疏性

软间隔的支持向量

支持向量 x i x_i xi间隔边界注意这里是间隔边界,而不是分离超平面)的距离为 ξ i ∥ w ∥ \frac{\xi_i}{\|w\|} wξi

此时支持向量的位置比线性可分的情况复杂

  • 在间隔边界上
  • 或者在间隔平面与分离超平面之间
  • 或者在分离超平面误分一侧

(1)当 α i ∗ < C \alpha_i^* <C αi<C时,则有 μ i ∗ = C − α i ∗ > 0 \mu_i^*=C-\alpha_i^* > 0 μi=Cαi>0,由KKT互补条件知, μ i ∗ ξ i ∗ = 0 \mu_i^*\xi_i^*=0 μiξi=0,则一定有 ξ i = 0 \xi_i=0 ξi=0,即支持向量 x i x_i xi恰好落在间隔边界上;
(2)当 α i ∗ = C \alpha_i^* =C αi=C时,则有 μ i ∗ = C − α i ∗ = 0 \mu_i^*=C-\alpha_i^* = 0 μi=Cαi=0,对于 ξ i ∗ \xi_i^* ξi要分情况讨论:
(2.1)当 0 < ξ i < 1 0<\xi_i <1 0<ξi<1时,分类正确,支持向量 x i x_i xi落在间隔边界与分离超平面之间;
(2.2)当 ξ i = 1 \xi_i =1 ξi=1时,支持向量 x i x_i xi落在分离超平面上;
(2.3)当 ξ i > 1 \xi_i >1 ξi>1时,分类错误,支持向量 x i x_i xi落在分离超平面误分一侧

2.3 合页损失函数

支持向量机还有另外一种解释,最小化

∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \sum_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+}+\lambda\|w\|^{2} i=1N[1yi(wxi+b)]++λw2

第一项是经验损失或经验风险 L ( y ( w ⋅ x + b ) ) = [ 1 − y i ( w ⋅ x i + b ) ] + L(y(w\cdot x+b))=\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} L(y(wx+b))=[1yi(wxi+b)]+,称为合页损失函数。下标 + + +表示:

[ z ] + = { z , z > 0 0 , z ≤ 0 [z]_+=\begin{cases}z,\quad z>0\\0,\quad z\le0\end{cases} [z]+={z,z>00,z0

第二项是系数为 λ \lambda λ w w w L 2 L_2 L2范数,是正则化项

合页损失的直观解释:
当样本点被正确分类且函数间隔(确信度)满足 y i ( w ⋅ x i + b ) > 1 y_{i}\left(w \cdot x_{i}+b\right)>1 yi(wxi+b)>1时,损失才会为0,而处于分离超平面与间隔边界之间的点,即使它能被正确分类,也会产生 1 − y i ( w ⋅ x i + b ) 1-y_{i}\left(w \cdot x_{i}+b\right) 1yi(wxi+b)的损失。

使用合页损失的最优化问题与原始最优化问题等价:

原始最优化问题:

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 \begin{array}{ll}\min\limits_{w, b, \xi} & \frac{1}{2}\|w\|^{2}+C \sum\limits_{i=1}^{N} \xi_{i} \\\text { s.t. } & y_{i}\left(w \cdot x_{i}+b\right) \geqslant 1-\xi_{i}, \quad i=1,2, \cdots, N \\& \xi_{i} \geqslant 0, \quad i=1,2, \cdots, N\end{array} w,b,ξmin s.t. 21w2+Ci=1Nξiyi(wxi+b)1ξi,i=1,2,,Nξi0,i=1,2,,N

目标为最小化合页损失的最优化问题:

min ⁡ w , b , ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \min\limits_{w, b,} \sum_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} +\lambda\|w\|^{2} w,b,mini=1N[1yi(wxi+b)]++λw2

合页损失函数

上图中横轴为函数间隔 y i ( w ⋅ x i + b ) y_{i}(w \cdot x_{i}+b) yi(wxi+b),纵轴为损失。

  • 0-1损失,二分类问题真正的损失函数,不是连续可导的,直接优化由其构成的目标函数较困难
  • 虚线:感知机的损失函数: [ y i ( w ⋅ x i + b ) ] + \left[y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} [yi(wxi+b)]+
  • 实线:hinge合页损失函数,不仅要分类正确,而且确信度要足够高时损失才为0,对学习有更严格更高的要求。hinge损失有一块“平坦”的零区域,这使得SVM的解具有 稀疏性,无需依赖更多的样本。

注意:硬间隔和软间隔的对偶问题,唯一的差别就在于对偶变量的约束不同,硬间隔是 0 ⩽ α i 0\leqslant\alpha_i 0αi,而软间隔是 0 ⩽ α i ⩽ C 0\leqslant\alpha_i \leqslant C 0αiC

3. 序列最小最优化算法 SMO

一个样本 x i x_i xi对应一个 α i \alpha_i αi,所以问题求解规模与训练样本数成正比,当训练样本容量很大时,求解 α \alpha α就很困难。 α \alpha α的求解一般使用 序列最小最优化SMO算法,基本思路就是:先固定除了 α i \alpha_i αi之外的所有参数,然后求 α i \alpha_i αi的极值。但由于存在约束: ∑ i = 1 N α i y i = 0 \sum\limits_{i=1}^{N} \alpha_{i} y_{i}=0 i=1Nαiyi=0,如果固定 α i \alpha_i αi以外的变量, α i \alpha_i αi可由其他变量导出,所以SMO每次选择两个变量 α i , α j \alpha_i,\alpha_j αi,αj,并固定其他参数。然后在参数初始化后,不断执行如下两个步骤直至收敛:

  • 选择一对需要更新的变量 α i , α j \alpha_i,\alpha_j αi,αj
  • 固定 α i , α j \alpha_i,\alpha_j αi,αj以外的参数,求解 max ⁡ α − 1 2 ∑ i = 1 N ∑ j = 1 N α i α j y i y j ( x i ⋅ x j ) + ∑ i = 1 N α i \max\limits_{\alpha} -\frac{1}{2} \sum\limits_{i=1}^{N} \sum\limits_{j=1}^{N} \alpha_{i} \alpha_{j} y_{i} y_{j}\left(x_{i} \cdot x_{j}\right)+\sum\limits_{i=1}^{N} \alpha_{i} αmax21i=1Nj=1Nαiαjyiyj(xixj)+i=1Nαi,以获得更新后的 α i , α j \alpha_i,\alpha_j αi,αj

SMO在选择 α i , α j \alpha_i,\alpha_j αi,αj时采用启发式:使选取的两个变量所对应的样本之间的间隔最大

详情可参考刘建平老师的支持向量机原理(四)SMO算法原理,这里不深入展开,因为我觉得不是SVM的核心key idea。

4. 线性SVM 和线性LR(逻辑回归)的比较

而LR的负对数似然函数: L ( w ^ ) = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) + ( 1 − y i ) l o g ( p ( y i ~ = 0 ∣ x ) ) ] = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) + ( 1 − y i ) l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) ] = − [ ∑ i = 1 N y i l o g p ( y i ~ = 1 ∣ x ) l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) + l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) ] \begin{array}{ll}L(\hat{w})&= -\left[ \sum\limits_{i=1}^N y_ilogp(\tilde{y_i}=1|x)+(1-y_i)log(p(\tilde{y_i}=0|x))\right] \\&=-\left[ \sum\limits_{i=1}^N y_ilogp(\tilde{y_i}=1|x)+(1-y_i)log(1-p(\tilde{y_i}=1|x))\right]\\&=-\left[ \sum\limits_{i=1}^N y_i\frac{logp(\tilde{y_i}=1|x)}{log(1-p(\tilde{y_i}=1|x))}+log(1-p(\tilde{y_i}=1|x))\right]\end{array} L(w^)=[i=1Nyilogp(yi~=1x)+(1yi)log(p(yi~=0x))]=[i=1Nyilogp(yi~=1x)+(1yi)log(1p(yi~=1x))]=[i=1Nyilog(1p(yi~=1x))logp(yi~=1x)+log(1p(yi~=1x))]

为了方便, w , x w,x w,x记为增广向量 w ^ , x ^ \hat{w},\hat{x} w^,x^,其中 w ^ = < w , b > , x ^ = < x , 1 > \hat{w}=<w,b>,\hat{x}=<x,1> w^=<w,b>,x^=<x,1>

因为 p ( y = 1 ∣ x ) = 1 1 + e − w ^ ⋅ x ^ = e w ^ ⋅ x ^ 1 + e w ^ ⋅ x ^ p(y=1|x)=\frac{1}{1+e^{-\hat{w}\cdot \hat{x}}}=\frac{e^{\hat{w}\cdot \hat{x}}}{1+e^{\hat{w}\cdot \hat{x}}} p(y=1x)=1+ew^x^1=1+ew^x^ew^x^ p ( y = 0 ∣ x ) = 1 1 + e w ^ ⋅ x ^ p(y=0|x)=\frac{1}{1+e^{\hat{w}\cdot \hat{x}}} p(y=0x)=1+ew^x^1,即有:

l o g   p ( y = 1 ∣ x ) l o g   p ( y = 0 ∣ x ) = l o g   p ( y = 1 ∣ x ) 1 − l o g   p ( y = 1 ∣ x ) = w ^ ⋅ x ^ = w ⋅ x + b \frac{log\,p(y=1|x)}{log\,p(y=0|x)}=\frac{log\,p(y=1|x)}{1-log\,p(y=1|x)}=\hat{w}\cdot \hat{x}=w\cdot x +b logp(y=0x)logp(y=1x)=1logp(y=1x)logp(y=1x)=w^x^=wx+b

l o g ( 1 − p ( y i ~ = 1 ∣ x ) ) = − l o g ( 1 + exp ⁡ ( w ⋅ x + b ) ) log(1-p(\tilde{y_i}=1|x))=-log(1+\exp(w\cdot x+b)) log(1p(yi~=1x))=log(1+exp(wx+b))

所以 L ( w , b ) = − [ ∑ i = 1 N y i ( w ⋅ x i + b ) − l o g ( 1 + exp ⁡ ( w ⋅ x i + b ) ) ] L(w,b)=-\left[ \sum\limits_{i=1}^N y_i (w\cdot x_i+b)-log(1+\exp(w\cdot x_i+b))\right] L(w,b)=[i=1Nyi(wxi+b)log(1+exp(wxi+b))]

所以LR的优化目标是: min ⁡ w , b , − [ ∑ i = 1 N y i ( w ⋅ x i + b ) − l o g ( 1 + exp ⁡ ( w ⋅ x i + b ) ) ] \min\limits_{w, b,} -\left[ \sum\limits_{i=1}^N y_i (w\cdot x_i+b)-log(1+\exp(w\cdot x_i+b))\right] w,b,min[i=1Nyi(wxi+b)log(1+exp(wxi+b))]

带正则项的LR 优化目标是:

min ⁡ w , b , − ∑ i = 1 N y i ( w ⋅ x i + b ) + l o g ( 1 + exp ⁡ ( w ⋅ x i + b ) ) + 1 2 ∥ w ∥ 2 \min\limits_{w, b,} - \sum\limits_{i=1}^N y_i (w\cdot x_i+b)+log(1+\exp(w\cdot x_i+b))+\frac{1}{2}\|w\|^2 w,b,mini=1Nyi(wxi+b)+log(1+exp(wxi+b))+21w2

从合页损失来看SVM的优化目标: min ⁡ w , b , ∑ i = 1 N [ 1 − y i ( w ⋅ x i + b ) ] + + λ ∥ w ∥ 2 \min\limits_{w, b,} \sum\limits_{i=1}^{N}\left[1-y_{i}\left(w \cdot x_{i}+b\right)\right]_{+} +\lambda\|w\|^{2} w,b,mini=1N[1yi(wxi+b)]++λw2

他们都具有如下类似的形式:

min ⁡ f ∈ F ∑ i = 1 N L ( y i , f ( x i ) ) + λ Ω ( f ) \min\limits_{f\in\mathcal F}\sum\limits_{i=1}^NL(y_i,f(x_i))+\lambda \Omega(f) fFmini=1NL(yi,f(xi))+λΩ(f)

第一项表示了在训练集上的损失,即经验风险,第2项表示了模型的复杂度,作为正则化项,可以抑制过拟合,带有正则化项的损失叫做结构风险 λ ⩾ 0 \lambda \geqslant0 λ0作为惩罚系数,用以权衡了经验风险和模型复杂度。结构风险除了能对训练数据较好的拟合外,对于未知数据也能有较好的预测,更具有泛化性。

线性LR和线性SVM的比较:

线性LR和线性SVM的优化目标相近,通常情况下性能也相当。在实际的分类任务中,线性Logistic回归和线性支持向量机往往得到非常相似的结果 。但是:

  • (1)LR的优势在于其输出具有自然的概率意义,SVM要输出概率需要进行特殊处理
  • (2)LR能直接应用于多分类任务,SVM则需要进行推广
  • (3)SVM的hinge损失有一块“平坦”的零区域,这使得SVM的解具有**稀疏性**,无需依赖更多的样本。而LR的对率损失 l l o g ( z ) = l o g ( 1 + e − z l_{log}(z)=log({1+e^{-z}} llog(z)=log(1+ez是光滑的单调递减函数,不能导出类似支持向量的概念,因此LR的解需要更多的训练样本。
  • (4)逻辑回归试图最大化训练数据的条件似然性,这使得它比支持向量机更容易出现离群值,后者主要关心最接近决策边界的点(支持向量)。
  • (5) 另一方面,Logistic回归具有更简单的模型和更容易实现的优点。
  • (6)此外,Logistic回归模型可以很容易地更新,这在处理流数据时很有吸引力。

5. 代码示例:linear SVM解决线性可分问题

准备数据集:

# 准备鸢尾花数据集
iris = datasets.load_iris()

# iris.data 一共有4个特征
X = iris.data[:,[2,3]] # 只使用2个特征: petal length and petal width 以及3个类别
y = iris.target
print(X.shape, y.shape)
print('Class labels:', np.unique(y))

输出:

(150, 2) (150,)
Class labels: [0 1 2]

划分数据集以及对数据进行预处理(特征标准化):

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=1, stratify=y)
# standardize the features 以获得最佳性能
sc = StandardScaler()
sc.fit(X_train)
X_train_std = sc.transform(X_train)
X_test_std = sc.transform(X_test)

训练并绘制分类决策边界:

X_combined_std = np.vstack((X_train_std, X_test_std))
y_combined = np.hstack((y_train, y_test))

svm = SVC(kernel='linear', C=1.0, random_state=1)
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105, 150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()

linear-kernel SVM 分类决策边界

上面使用的是线性核,如果使用RBF核,分类决策边界将会更加soft,关于核函数相关内容会在非线性支持向量机中介绍。下面看一下使用RBF核的SVM的分类决策边界:

# 实现rbf核以及相对较小的\gamma 值,能得到更加soft的决策边界
svm = SVC(kernel='rbf', random_state=1, gamma=0.2, C=1.0)
svm.fit(X_train_std, y_train)
plot_decision_regions(X_combined_std, y_combined, classifier=svm, test_idx=range(105,150))
plt.xlabel('petal length [standardized]')
plt.ylabel('petal width [standardized]')
plt.legend(loc='upper left')
plt.show()

rbf-kernel SVM 分类决策边界

完整代码地址

完整代码请移步至: 我的github:https://github.com/qingyujean/Magic-NLPer,求赞求星求鼓励~~~

最后:如果本文中出现任何错误,请您一定要帮忙指正,感激~

参考

[1] 统计学习方法(第2版) 李航
[2] Python_Machine_Learning_2nd_Edition
[3] 西瓜书-机器学习  周志华

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页