作者:張張張張
github地址:https://github.com/zhanghekai
【转载请注明出处,谢谢!】
【机器学习系列】之SVM硬间隔和软间隔
【机器学习系列】之SVM核函数和SMO算法
【机器学习系列】之支持向量回归SVR
【机器学习系列】之sklearn实现SVM代码
假定给出训练样本集 D = { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x m , y m ) } , y i ∈ { − 1 , + 1 } D=\{(x_1,y_1),(x_2,y_2),...,(x_m,y_m)\},y_i \in \{-1,+1\} D={(x1,y1),(x2,y2),...,(xm,ym)},yi∈{−1,+1},为二分类问题,其中y为分类标签,有两类分别为+1和-1。分类学习最基本的想法就是基于训练集D在样本空间中找到一个划分超平,将不同类别的样本分开,但能将训练样本分开的划分超平面可能有很多,我们应该找哪一条呢?如下图所示,图中红色的那个超平面是最好的,因为这个划分超平面所产生的分类结果是最鲁棒的,对未见示例的泛化能力最强。支持向量机SVM所要解决的事情就是找到这样一个鲁棒性最好的超平面。
SVM算法的主要优点:
SVM算法的主要缺点:
在样本空间中,划分的超平面可用如下线性方程来表述:
w T x + b = 0 ( 1 ) w^Tx+b=0 \quad\quad\quad\quad(1) wTx+b=0(1)
其中 x = ( x 1 ; x 2 ; . . . ; x d ) x=(x_1;x_2;...;x_d) x=(x1;x2;...;xd)为样本点在样本空间中的坐标, x i x_i xi代表样本点在每一维度上坐标点的值; w = ( w 1 ; w 2 ; . . . ; w d ) w=(w_1;w_2;...;w_d) w=(w1;w2;...;wd)为法向量,决定了超平面的方向,x是几维的,就有几个w;b为位移项,决定了超平面与原点之间的距离。显然,划分超平面可被法向量w和位移b确定,记超平面为(w,b)。
样本空间中任意点x到超平面(w,b)的距离可写为:
r = ∣ w T + b ∣ ∣ ∣ w ∣ ∣ ( 2 ) r = \frac{|w^T+b|}{||w||}\quad\quad\quad\quad(2) r=∣∣w∣∣∣wT+b∣(2)
拓展:
L2范数: ∣ ∣ w ∣ ∣ = ∑ i = 1 k ∣ w i ∣ 2 ||w|| = \sqrt {\sum_{i=1}^{k}|w_i|^2} ∣∣w∣∣=∑i=1k∣wi∣2
二维空间点到直线的距离: d = ∣ A x + B y + c ∣ A 2 + B 2 d = \frac{|Ax+By+c|}{\sqrt{A^2+B^2}} d=A2+B2∣Ax+By+c∣,由此可以类比到多维空间上点到直线的距离。
假设超平面(w,b)能将训练样本正确分类,即对于二分类问题,训练样本上的点均为x坐标已知,对应的y分类已知:若 y i = + 1 y_i=+1 yi=+1,则有 w T x i + b > 0 w^Tx_i+b>0 wTxi+b>0;若 y i = − 1 y_i=-1 yi=−1,则有 w T x i + b < 0 w^Tx_i+b<0 wTxi+b<0,令:
{ w T x i + b ≥ + 1 , y i = + 1 w T x i + b ≤ − 1 , y i = − 1 ( 3 ) \begin{cases} w^Tx_i+b \geq +1, & y_i = +1 \\ \\ w^Tx_i+b \leq -1, & y_i=-1 \end{cases}\quad\quad\quad\quad(3) ⎩⎪⎨⎪⎧wTxi+b≥+1,wTxi+b≤−1,yi=+1yi=−1(3)
注释:
如上图所示,距离超平面最近的这几个训练样本点使公式(3)的等号成立,它们被称为“支持向量(support vector)”,两个异类支持向量到超平面的距离之和为公式(4)所示,它被称为“间隔(margin)”。
γ = 2 ∣ ∣ w ∣ ∣ ( 4 ) \gamma = \frac{2}{||w||}\quad\quad\quad(4) γ=∣∣w∣∣2(4)
注释:
欲找到具有“最大间隔(maximum margin)”的划分超平面,即:找到满足(3)式中约束的参数 w w w和 b b b,使得 γ \gamma γ最大,有:
m a x ⎵ w , b 2 ∣ ∣ w ∣ ∣ s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m \underbrace{max}_{w,b}\frac{2}{||w||}\\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m w,b max∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m
{ m i n ⎵ w , b 1 2 ∣ ∣ w ∣ ∣ 2 s . t . y i ( w T x i + b ) ≥ 1 , i = 1 , 2 , . . . , m ( 5 ) \begin{cases} \underbrace{min}_{w,b}\frac{1}{2}||w||^2\\ \\ s.t. \quad y_i(w^Tx_i+b)\geq 1,\quad i=1,2,...,m \end{cases}\quad\quad\quad(5) ⎩⎪⎪⎪⎨⎪⎪⎪⎧w,b min21∣∣w∣∣2s.t.yi(wTxi+b)≥1,i=1,2,...,m(5)
目前无需纠结解法,只需要理解SVM公式的使用,具体解法我们会在下一节中讲述。
已知一个如下图所示的训练数据集,其正例点是 x 1 = ( 3 , 3 ) T x_1=(3,3)^T x1=(3,3)T, x 2 = ( 4 , 3 ) T x_2=(4,3)^T x2=(4,3)T,负例点是 x 3 = ( 1 , 1 ) T x_3=(1,1)^T x3=(1,1)T,试列出求最大间隔分离超平面的公式。
解:根据训练数据集构造约束最优化问题:
{ m i n ⎵ w , b 1 2 ( w 1 2 + w 2 2 ) s . t . 3 w 1 + 3 w 2 + b ≥ 1 4 w 1 + 3 w 2 + b ≥ 1 − w 1 − w 2 − b ≥ 1 \begin{cases}\underbrace{min}_{w,b} \frac{1}{2}(w_1^2+w_2^2)\\ \\ s.t.\quad 3w_1+3w_2+b \geq1\\ \quad\quad \quad 4w_1+3w_2+b \geq 1\\ \quad\quad\quad -w_1-w_2-b \geq 1 \end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎧w,b min21(w12+w22)s.t.3w1+3w2+b≥14w1+3w2+b≥1−w1−w2−b≥1
注意:
我们可以通过拉格朗日乘子法将我们的优化目标公式(5)转换为无约束的优化函数,对公式(5)的每条约束添加拉格朗日乘子 α i ≥ 0 \alpha_i \geq 0 αi≥0,则该问题的拉格朗日函数可写为:
L ( w , b , α ) = 1 2 ∣ ∣ w 2 ∣ ∣ + ∑ i = 1 m α i ( 1 − y i ( w T x i + b ) ) ( 6 ) L(w,b,\alpha)=\frac{1}{2}||w^2||+\sum_{i=1}^{m}\alpha_i(1-y_i(w^Tx_i+b))\quad\quad\quad(6) L(w,b,α)=21∣∣w2∣∣+i=1∑mαi(1−yi(wTxi+b))(6)
其中 α = ( α 1 , α 2 , . . . , α m ) \alpha = (\alpha_1,\alpha_2,...,\alpha_m) α=(α1,α2,...,αm),这样可以通过每个样本点的 α \alpha α取值,知道该样本点相对于支持向量的位置。
拓展:拉格朗日乘子法——不等式约束优化
给定不等式约束问题:
m i n ⎵ x f ( x ) s . t . h ( x ) = 0 g ( x ) ≤ 0 \underbrace{min}_{x}f(x)\\ s.t.\quad h(x)=0\\ \quad g(x)\leq 0 x minf(x)s.t.h(x)=0g(x)≤0
等式约束和不等式约束: h ( x ) = 0 , g ( x ) ≤ 0 h(x)=0,g(x) \leq 0 h(x)=0,g(x)≤0分别是由一个等式方程和一个不等式方程组成的方程组。
拉格朗日乘子: λ = ( λ 1 , λ 2 , . . . , λ m ) α = ( α 1 , α 2 , . . . , α n ) \lambda = (\lambda_1,\lambda_2,...,\lambda_m) \quad \alpha=(\alpha_1,\alpha_2,...,\alpha_n) λ=(λ1,λ2,...,λm)α=(α1,α2,...,αn)
拉格朗日函数: L ( x , λ , α ) = f ( x ) + λ h ( x ) + α g ( x ) L(x,\lambda,\alpha) = f(x)+\lambda h(x)+\alpha g(x) L(x,λ,α)=f(x)+λh(x)+αg(x)
注释:将拉格朗日乘子法应用于SVM
给定不等式约束问题: f ( x ) = m i n ⎵ w , b 1 2 ∣ ∣ w ∣ ∣ 2 f(x) = \underbrace{min}_{w,b}\frac{1}{2}||w||^2 f(x)=w,b min21∣∣w∣∣2
不等式约束: g ( x ) = 1 − y i ( w T x i + b ≤ 0 ) g(x)=1-y_i(w^T x_i+b \leq 0) g(x)=1−yi(wTxi+b≤0)
拉格朗日乘子: α = ( α 1 , α 2 , . . . , α m ) \alpha = (\alpha_1,\alpha_2,...,\alpha_m) α=(α1,α2,...,αm)
拉格朗日函数: L ( w , b , α ) = f ( x ) + α g ( x ) L(w,b,\alpha)=f(x)+\alpha g(x) L(w,b,α)=f(x)+αg(x)
由于引入了拉格朗日乘子,我们的优化目标变成了:
m i n ⎵ w , b m a x ⎵ a i ≥ 0 L ( w , b , α ) \underbrace{min}_{w,b} \quad \underbrace{max}_{a_i \geq 0} L(w,b,\alpha) w,b minai≥0 maxL(w,b,α)
解释:为什么可以转换为 m i n ⎵ w , b m a x ⎵ a i ≥ 0 L ( w , b , α ) \underbrace{min}_{w,b} \quad \underbrace{max}_{a_i \geq 0} L(w,b,\alpha) w,b minai≥0 maxL(w,b,α)
我们的这个规划问题是“强对偶关系”,所以可以直接转换为求解:
m a x ⎵ a i ≥ 0 m i n ⎵ w , b L ( w , b , α ) ( 7 ) \underbrace{max}_{a_i \geq 0}\quad \underbrace{min}_{w,b} L(w,b,\alpha)\quad\quad\quad(7) ai≥0 maxw,b minL(w,b,α)(7)
拓展:
高中数学,求极值先对变量求导等于0,再把求得的变量值代回原函数,即可得到原函数的极值。
令 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)对 w w w和 b b b的偏导为零:
最终求得结果如下:
{ w = ∑ i = 1 m α i y i x i 0 = ∑ i = 1 m α i y i ( 8 ) \begin{cases} w = \sum_{i=1}^{m}\alpha_i y_i x_i\\ \\ 0=\sum_{i=1}^{m}\alpha_i y_i \end{cases}\quad\quad\quad(8) ⎩⎪⎨⎪⎧w=∑i=1mαiyixi0=∑i=1mαiyi(8)
从上式中我们已经求得了 w w w和 α \alpha α的关系,只要我们后面能够求出优化函数极大化对应的 α \alpha α,就可以求出我们的 w w w了;至于 b b b,由于上述两式中已经没有 b b b,所以最后的 b b b可以有多个。
将公式(8)带入公式(6),即可将 L ( w , b , α ) L(w,b,\alpha) L(w,b,α)中的 w w w和 b b b消去:
所以,最终求得:
m a x ⎵ a i ≥ 0 m i n ⎵ w , b L ( w , b , α ) = m a x ⎵ a i ≥ 0 ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j \underbrace{max}_{a_i \geq 0}\quad \underbrace{min}_{w,b} L(w,b,\alpha) = \underbrace{max}_{a_i \geq 0}\quad \sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^T x_j ai≥0 maxw,b minL(w,b,α)=ai≥0 maxi=1∑mαi−21i=1∑mj=1∑mαiαjyiyjxiTxj
从上面可以看出,通过对 w w w和 b b b极小化以后,我们的优化函数仅仅只有 α \alpha α向量做参数,只要我们能够极大化上式,就可以求出此时对应的 α \alpha α,进而求出 w w w和 b b b。对于上式,可以去掉负号,转换为等价的极小化问题如下:
{ m i n ⎵ a i ≥ 0 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j − ∑ i = 1 m α i s . t . ∑ i = 1 m α i y i = 0 α i ≥ 0 i = 1 , 2 , . . . , m ( 9 ) \begin{cases} \underbrace{min}_{a_i \geq 0}\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i \alpha_j y_i y_j x_i^T x_j -\sum_{i=1}^{m}\alpha_i\\ \\ s.t. \quad \sum_{i=1}^{m}\alpha_i y_i = 0\\ \quad \quad \quad \alpha_i \geq0 \quad i=1,2,...,m \end{cases}\quad\quad\quad\quad\quad(9) ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧ai≥0 min21∑i=1m∑j=1mαiαjyiyjxiTxj−∑i=1mαis.t.∑i=1mαiyi=0αi≥0i=1,2,...,m(9)
注意到公式(5)中含有约束条件,所以在上述求解的过程中需要满足KKT条件:
K K T 条件 { ∂ L ∂ w = 0 ; ∂ L ∂ b = 0 ; ∂ L ∂ α = 0 α i ≥ 0 ; y i ( w T x i + b ) − 1 ≥ 0 ; α i ( y i ( w T x i + b ) − 1 ) = 0. KKT\text{条件}\quad\begin{cases} \frac{\partial L}{\partial w} = 0;\frac{\partial L}{\partial b} = 0;\frac{\partial L}{\partial \alpha} = 0 \\ \\ \alpha_i \geq 0;\\ \\ y_i (w^Tx_i+b)-1 \geq 0;\\ \\ \alpha_i(y_i(w^Tx_i+b)-1)=0. \end{cases} KKT条件⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧∂w∂L=0;∂b∂L=0;∂α∂L=0αi≥0;yi(wTxi+b)−1≥0;αi(yi(wTxi+b)−1)=0.
注释:原问题和对偶问题具有强对偶关系的充要条件是:满足KKT条件!所以由上述的强对偶关系,可以直接得到KKT条件。
由KKT条件可以求解出最优的 w ∗ w^* w∗和 b ∗ b^* b∗
对于线性可分训练数据集,假设对偶最优化问题,也就是公式(9)对 α \alpha α的解为 α ∗ = ( α 1 ∗ , α 2 ∗ , . . . , α m ∗ ) \alpha^* = (\alpha_1^*,\alpha_2^*,...,\alpha_m^*) α∗=(α1∗,α2∗,...,αm∗),可以由 a ∗ a^* a∗求得原始最优化问题公式(5)对(w,b)的解 w ∗ , b ∗ w^*,b^* w∗,b∗。
w ∗ = ∑ i = 1 M α i ∗ y i x i ( 10 ) b ∗ = y j − ∑ i = 1 M α i ∗ y i ( x i ⋅ x j ) ( 11 ) w^* = \sum_{i=1}^{M}\alpha_i^*y_ix_i\quad\quad\quad(10)\\ b^*=y_j-\sum_{i=1}^{M}\alpha_i^*y_i(x_i \cdot x_j) \quad\quad\quad(11) w∗=i=1∑Mαi∗yixi(10)b∗=yj−i=1∑Mαi∗yi(xi⋅xj)(11)
求解 α \alpha α的值可以用凸优化或SMO算法进行求解,我会在下一篇博客中对SMO算法做详细讲解,这里不多做赘述(对于样本的特征较多、维度较高时,这时可以采用SMO算法求解 α \alpha α)。
在这里,我们假设通过SMO算法,得到了对应 α \alpha α的最优值 α ∗ \alpha^* α∗
由KKT条件第一行,将公式(6)对 w w w求导可得最优 w ∗ w^* w∗:
w ∗ = ∑ i = 1 M α i ∗ y i x i w^* = \sum_{i=1}^{M}\alpha_i^* y_i x_i w∗=i=1∑Mαi∗yixi
然后将求解的最优 α \alpha α带入上式中,即可求出最优 w ∗ w^* w∗。
由于b求偏导后的结果中不带b,所以另寻他法。由KKT条件第2~4行知:对任意训练样本 ( x i , y i ) (x_i,y_i) (xi,yi),总有 α i = 0 \alpha_i = 0 αi=0或 y i f ( x i ) = 1 y_i f(x_i)=1 yif(xi)=1。若 α i = 0 \alpha_i = 0 αi=0,则该样本将不会在公式(10)中出现,也就不会对模型有任何影响;若 α i > 0 \alpha_i > 0 αi>0,则必有 y i ( w T x i + b ) = 1 y_i (w^Tx_i+b)=1 yi(wTxi+b)=1,所对应的样本点位于最大间隔边界上,是一个支持向量。也就是说只有支持向量上的样本才会对模型有影响,根据这条性质我们可以求出b的最优解。
重要性质:训练完成后,大部分的训练样本都不需要保留,最终模型仅与支持向量有关。
∃ ( x k , y k ) , s . t . 1 − y k ( w ∗ T x k + b ∗ ) = 0    ⟹    y k ( w ∗ T x k + b ∗ ) = 1    ⟹    y k 2 ( w ∗ T x k + b ∗ ) = y k ( 因 为 y 取 值 为 + 1 或 − 1 , 所 以 y 2 = 1 )    ⟹    ( w ∗ T x k + b ∗ ) = y k    ⟹    b ∗ = y k − w ∗ T x k    ⟹    b ∗ = y k − ∑ i = 0 M α i ∗ y i ( x i ⋅ x k ) \exists(x_k,y_k),s.t.\quad 1-y_k(w^{*T}x_k+b^*)=0\\ \qquad\qquad\implies y_k(w^{*T}x_k+b^*)=1\\[2ex] \qquad\quad\qquad\qquad\qquad\qquad\qquad\qquad\quad\implies y_k^2(w^{*T}x_k+b^*)=y_k \quad(因为y取值为+1或-1,所以y^2=1)\\[3ex] \qquad\qquad\quad\implies(w^{*T}x_k+b^*)=y_k\\[2ex] \qquad\quad\implies b^*=y_k-w^{*T}x_k\\[2ex] \qquad\quad\quad\qquad\implies b^*=y_k-\sum_{i=0}^{M}\alpha_i^* y_i( x_i \cdot x_k) ∃(xk,yk),s.t.1−yk(w∗Txk+b∗)=0⟹yk(w∗Txk+b∗)=1⟹yk2(w∗Txk+b∗)=yk(因为y取值为+1或−1,所以y2=1)⟹(w∗Txk+b∗)=yk⟹b∗=yk−w∗Txk⟹b∗=yk−i=0∑Mαi∗yi(xi⋅xk)
然后将求解的最优 α \alpha α带入上式中,即可求出最优 b ∗ b^* b∗。
现实任务中采用一种更鲁棒的做法:求出所有支持向量所对应的 b ∗ b^* b∗,然后将其平均值作为最后的结果。
最终求得分离超平面为:
w ∗ ⋅ x + b ∗ = 0 w^* \cdot x + b^* = 0 w∗⋅x+b∗=0
综上所述:对于给定的线性可分训练数据集,可以首先求对偶问题公式(9)的解 α ∗ \alpha^* α∗;再利用公式(10)和(11)求得原始问题的解 w ∗ , b ∗ w^*,b^* w∗,b∗;从而得到分离超平面。这种算法称为线性可分支持向量机的对偶学习算法,是线性可分支持向量机学习的基本算法。
已知一个如上图所示的训练数据集,其正例点是 x 1 = ( 3 , 3 ) T x_1=(3,3)^T x1=(3,3)T, x 2 = ( 4 , 3 ) T x_2=(4,3)^T x2=(4,3)T,负例点是 x 3 = ( 1 , 1 ) T x_3=(1,1)^T x3=(1,1)T,试用求线性可分支持向量机。
导入包:
from sklearn import svm
输入样本并训练模型:
x = [[3,3],[4,3],[1,1]]
y = [1,1,-1]
model = svm.SVC(kernel='linear')
model.fit(x,y)
打印支持向量:
print(model.support_vectors_)
>>>[[1. 1.]
[3. 3.]]
输出哪些样本点为支持向量:
print(model.support_)
>>>[2 0]
输出每一边各有几个支持向量:
print(model.n_support_)
>>>[1 1]
预测为哪个类别:
print(model.predict([[4,3]]))
>>>[1]
计算每个 w 的值:
print(model.coef_)
>>>[[0.5 0.5]]
计算 b 的值:
print(model.intercept_)
>>>[-2.]
在前面的讨论中,我们一直假定训练样本空间或特征空间中是i阿宁可分得,即存在一个超平面能将不同类的样本完全划分开。然而,在现实任务中往往很难确定合适的核函数使得训练样本在特征空间中线性可分。如下图所示:红色圈出了一些不满足约束的样本。
硬间隔线性可分SVM面临的问题:
SVM引入了软间隔最大化的方法来解决上述问题:允许支持向量机在一些样本上出错,即:允许某些样本不满足约束 y i ( w i T + b ) ≥ 1 y_i(w^T_i+b) \geq1 yi(wiT+b)≥1。(当然,在最大化间隔的同时不满足约束的样本应尽可能少。)
对训练集里面的每个样本 ( x i , y i ) (x_i,y_i) (xi,yi)引入了一个松弛变量 ξ i ≥ 0 \xi_i\geq0 ξi≥0,使函数间隔加上松弛变量大于等于1。
y i ( w T x i + b ) ≥ 1 − ξ i y_i(w^Tx_i +b)\geq1-\xi_i yi(wTxi+b)≥1−ξi
显然,每一个样本都有一个对应的松弛变量。
我们认为:
当然,松弛变量不能白加,这是有成本的,这样就得到了软间隔最大化SVM学习条件如下:
{ m i n ⎵ w , b , ξ i 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i s . t . y i ( w T x i + b ) ≥ 1 − ξ i ξ i ≥ 0 i = 1 , 2 , . . . , m ( 12 ) \begin{cases} \underbrace{min}_{w,b,\xi_i}\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i\\ \\ s.t. \quad y_i(w^Tx_i+b)\geq1-\xi_i\\ \quad \quad \quad \xi_i \geq0 \quad i=1,2,...,m \end{cases}\quad\quad\quad\quad\quad(12) ⎩⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎧w,b,ξi min21∣∣w∣∣2+C∑i=1mξis.t.yi(wTxi+b)≥1−ξiξi≥0i=1,2,...,m(12)
其中 C > 0 C>0 C>0是一个常数,为惩罚参数。我们希望 1 2 ∣ ∣ w ∣ ∣ 2 \frac{1}{2}||w||^2 21∣∣w∣∣2尽量小,误分类的点尽可能的少, C C C是协调两者关系的正则化惩罚系数。 C C C越大,对误分类的惩罚越大; C C C越小,对误分类的惩罚越小。
首先将软价格最大化的约束问题用拉格朗日函数转化为无约束问题如下:
整理得:
L ( w , b , ξ , α , μ ) = 1 2 ∣ ∣ w ∣ ∣ 2 + C ∑ i = 1 m ξ i + ∑ i = 1 m α i ( 1 − ξ i − y i ( w T x i + b ) ) − ∑ i = 1 m μ i ξ i ( 13 ) L(w,b,\xi,\alpha,\mu)=\frac{1}{2}||w||^2+C\sum_{i=1}^{m}\xi_i+\sum_{i=1}^{m}\alpha_i(1-\xi_i-y_i(w^Tx_i+b))-\sum_{i=1}^{m}\mu_i\xi_i\qquad\qquad\qquad(13) L(w,b,ξ,α,μ)=21∣∣w∣∣2+Ci=1∑mξi+i=1∑mαi(1−ξi−yi(wTxi+b))−i=1∑mμiξi(13)
也就是说,我们现在要优化的目标函数是:
m i n ⎵ w , b , ξ m a x ⎵ α ≥ 0 ; μ ≥ 0 L ( w , b , ξ , α , μ ) \underbrace{min}_{w,b,\xi}\underbrace{max}_{\alpha\geq0;\mu\geq0}L(w,b,\xi,\alpha,\mu) w,b,ξ minα≥0;μ≥0 maxL(w,b,ξ,α,μ)
这个优化目标也满足KKT条件,可以通过拉格朗日对偶将这个优化问题转化为等价的对偶问题来求解:
m a x ⎵ α ≥ 0 ; μ ≥ 0 m i n ⎵ w , b , ξ L ( w , b , ξ , α , μ ) ( 14 ) \underbrace{max}_{\alpha\geq0;\mu\geq0}\underbrace{min}_{w,b,\xi}L(w,b,\xi,\alpha,\mu)\qquad\qquad\qquad(14) α≥0;μ≥0 maxw,b,ξ minL(w,b,ξ,α,μ)(14)
首先来求优化函数对于 w , b , ξ w,b,\xi w,b,ξ的极小值,这个可以通过求偏导数求得:
{ ∂ L ∂ w = 0    ⟹    w = ∑ i = 1 m α i y i x i ∂ L ∂ b = 0    ⟹    0 = ∑ i = 1 m α i y i ∂ L ∂ ξ = 0    ⟹    C = α i − μ i \begin{cases}\frac{\partial L}{\partial w}=0\implies w=\sum_{i=1}^{m}\alpha_iy_ix_i \\[2ex] \frac{\partial L}{\partial b}=0\implies 0=\sum_{i=1}^{m}\alpha_iy_i\\[2ex] \frac{\partial L}{\partial \xi}=0\implies C=\alpha_i-\mu_i\end{cases} ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧∂w∂L=0⟹w=∑i=1mαiyixi∂b∂L=0⟹0=∑i=1mαiyi∂ξ∂L=0⟹C=αi−μi
利用上面三个师子消除 w w w和 b b b:
优化目标的数学形式:
{ m a x ⎵ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t .    ∑ i = 1 m α i y i = 0 C − α i − μ i = 0 α i ≥ 0 ( i = 1 , 2 , ⋯   , m ) μ i ≥ 0 ( i = 1 , 2 , ⋯   , m ) \begin{cases}\underbrace{max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\[2ex] s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\[2ex] C-\alpha_i-\mu_i=0\\[2ex] \alpha_i\geq0\quad(i=1,2,\cdots ,m)\\[2ex] \mu_i\geq0\quad(i=1,2,\cdots,m)\end{cases} ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧α max∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxjs.t.∑i=1mαiyi=0C−αi−μi=0αi≥0(i=1,2,⋯,m)μi≥0(i=1,2,⋯,m)
对于上述中后三个式子,可以消去 μ i \mu_i μi,只留下 α i \alpha_i αi,即: 0 ≤ α ≤ C 0\leq\alpha\leq C 0≤α≤C,同时将优化目标函数变号,求极小值:
{ m a x ⎵ α ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j x i T x j s . t .    ∑ i = 1 m α i y i = 0 0 ≤ α i ≤ C ( 15 ) \begin{cases}\underbrace{max}_{\alpha}\sum_{i=1}^{m}\alpha_i-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_i\alpha_jy_iy_jx_i^Tx_j\\[2ex] s.t.\;\sum_{i=1}^{m}\alpha_iy_i=0\\[2ex] 0\leq\alpha_i\leq C\end{cases}\qquad\qquad\qquad(15) ⎩⎪⎪⎪⎪⎨⎪⎪⎪⎪⎧α max∑i=1mαi−21∑i=1m∑j=1mαiαjyiyjxiTxjs.t.∑i=1mαiyi=00≤αi≤C(15)
这就是软间隔SVM优化目标形式,和硬间隔SVM相比,仅仅只多了一个约束条件 0 ≤ α i ≤ C 0\leq\alpha_i\leq C 0≤αi≤C。依然可以通过SMO算法来求上式极小化对应的 α \alpha α,然后即可求出 w w w和 b b b了。
对软间隔SVM,KKT条件要求:
{ α i ≥ 0 , μ i ≥ 0 , y i ( w T x i + b ) − 1 + ξ i ≥ 0 , α i ( y i ( w T x i + b ) − 1 + ξ i ) = 0 ξ i ≥ 0 , μ i ξ i = 0 ( 16 ) \begin{cases}\alpha_i\geq0, \qquad \mu_i \geq0,\\[2ex] y_i(w^Tx_i+b)-1+\xi_i \geq 0,\\[2ex] \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0\\[2ex] \xi_i\geq0,\quad \mu_i\xi_i=0\end{cases}\qquad\qquad\qquad(16) ⎩⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎧αi≥0,μi≥0,yi(wTxi+b)−1+ξi≥0,αi(yi(wTxi+b)−1+ξi)=0ξi≥0,μiξi=0(16)
根据软间隔最大化时KKT条件中的对偶互补条件 α i ( y i ( w T x i + b ) − 1 + ξ i ) = 0 \alpha_i(y_i(w^Tx_i+b)-1+\xi_i)=0 αi(yi(wTxi+b)−1+ξi)=0可知:
\qquad 软间隔SVM算法流程通硬间隔SVM,这里不再赘述。