支持向量机(SVM)之二:推导 LBQ 2025-12-02 36 阅读9分钟 1.什么是支持向量机(SVM) 1)问题描述:如下图所示在一个XOYXOYXOY平面上,有很多的数据点,它们有些属于A类别(用红色叉表示),有些属于B类别(用蓝色叉表示),x1x_1x1表示这些数据其中的一个特征;x2x_2x2表示这些数据的另一个特征。如想要把足球当做类别A,把篮球当做类别B(与下图无关)。假设他们的衡量特征x1x_1x1为球的半径(或者表面积体积等)和x2x_2x2为球表面的线条数量,对于现有数据做出统计,当(x1,x2)(x_1,x_2)(x1,x2)为某个点的时候,分类为A,(x1,x2)(x_1,x_2)(x1,x2)为另一个点的时候又分类为B。现在将类别为A用数字111代表;将类别为B用数字−1-1−1代表,那么第iii个数据(现假设有mmm个数据)的类别为y(i)y^{(i)}y(i),y(i)={1,−1}y^{(i)}=\left\{1,-1\right\}y(i)={1,−1}(i=1,2,3,...,mi=1,2,3,...,mi=1,2,3,...,m),特征向量可以表示为:x(i)⃗=(x1(i),x2(i))\vec{x^{(i)}}=(x_1^{(i)},x_2^{(i)})x(i)=(x1(i),x2(i)),如果有nnn个特征,向量是nnn维的,现在现讨论222维的。 2)SVM的工作:SVM的工作是寻找一条直线或平面或者超平面可以分离这两类数据(对于只有两个特征,使用直线;对于三个特征,使用三维空间平面;对于n(n>3)n(n>3)n(n>3)个特征,使用超平面)将其设为:(ω⃗)Tx⃗+b=0(\vec\omega)^T\vec x+b=0(ω)Tx+b=0(在nnn个特征的情况下,x⃗=(x1,x2,x3,...,xn)T\vec x=(x_1,x_2,x_3,...,x_n)^Tx=(x1,x2,x3,...,xn)T,ω⃗=(ω1,ω2,ω3,...,ωn)T\vec\omega=(\omega_1,\omega_2,\omega_3,...,\omega_n)^Tω=(ω1,ω2,ω3,...,ωn)T对应的x⃗\vec xx,bbb是常数)。考虑两种特征,如下图,有红色实线和黑色实线分隔两个类,显然黑色实线更好地分隔两个类,因为对于黑色线,离得最近的两个类的数据,分别是(6,6)(6,6)(6,6)和(3,2)(3,2)(3,2),他们之间的间隔,比红色线离得最近的两个类的数据(4,6)(4,6)(4,6)和(1,−1)(1,-1)(1,−1)之间的间隔大,如图黄色和橙色虚线。红色和黑色的直线方程分别是:(ω⃗红)Tx⃗+b红=0(\vec\omega_{红})^T\vec x+b_{红}=0(ω红)Tx+b红=0和(ω⃗黑)Tx⃗+b黑=0(\vec\omega_{黑})^T\vec x+b_{黑}=0(ω黑)Tx+b黑=0,那么他们的黄橙两线分别是:(ω⃗红)Tx⃗+b红=−1(\vec\omega_{红})^T\vec x+b_{红}=-1(ω红)Tx+b红=−1,(ω⃗红)Tx⃗+b红=1(\vec\omega_{红})^T\vec x+b_{红}=1(ω红)Tx+b红=1和(ω⃗黑)Tx⃗+b黑=−1(\vec\omega_{黑})^T\vec x+b_{黑}=-1(ω黑)Tx+b黑=−1,(ω⃗黑)Tx⃗+b黑=1(\vec\omega_{黑})^T\vec x+b_{黑}=1(ω黑)Tx+b黑=1,把黄橙两线称为分隔线的硬间隔。所以归纳可得SVM的工作是寻找一条硬间隔最大的直线分隔两类数据。 3)SVM的定义:在特征空间中找到最优分离超平面,最大化不同类别样本间的分类间隔(把直线,三维平面,多维线性方程统称为超平面)。 2.解决SVM 1)SVM的数学问题转化:对于mmm个数据{x(1)⃗,y(1)},{x(2)⃗,y(2)},{x(3)⃗,y(3)},...,{x(m)⃗,y(m)}\left\{\vec{x^{(1)}},y^{(1)}\right\},\left\{\vec{x^{(2)}},y^{(2)}\right\},\left\{\vec{x^{(3)}},y^{(3)}\right\},...,\left\{\vec{x^{(m)}},y^{(m)}\right\}{x(1),y(1)},{x(2),y(2)},{x(3),y(3)},...,{x(m),y(m)}中,y(i)={1,−1}y^{(i)}=\left\{1,-1\right\}y(i)={1,−1}(i=1,2,3,...,mi=1,2,3,...,mi=1,2,3,...,m)如果分类在黑色线的上方且在黄色硬间隔上方的数据(蓝色叉)(ω⃗)Tx(i)⃗+b>1(\vec\omega)^T\vec{x^{(i)}}+b>1(ω)Tx(i)+b>1,y(i)=1y^{(i)}=1y(i)=1;如果分类在黑色线的下方且在橙色硬间隔的下方的数据(红色叉)(ω⃗)Tx(i)⃗+b<−1(\vec\omega)^T\vec{x^{(i)}}+b<-1(ω)Tx(i)+b<−1,y(i)=−1y^{(i)}=-1y(i)=−1;如果分类在黑色线的上方且在黄色硬间隔直线上的数据(蓝色叉)(ω⃗)Tx(i)⃗+b=1(\vec\omega)^T\vec{x^{(i)}}+b=1(ω)Tx(i)+b=1,y(i)=1y^{(i)}=1y(i)=1;如果分类在黑色线的下方且在橙色硬间隔直线上的数据(红色叉)(ω⃗)Tx(i)⃗+b=−1(\vec\omega)^T\vec{x^{(i)}}+b=-1(ω)Tx(i)+b=−1,y(i)=−1y^{(i)}=-1y(i)=−1(最近的两个分类点在某条直线的硬间隔上,所以一定有数据是在两个硬间隔直线上的)。因此就得出一个结论:y(i)((ω⃗)Tx(i)⃗+b)≥1y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)\ge1y(i)((ω)Tx(i)+b)≥1,这个也是解决SVM的约束条件。除此之外,硬间隔之间的距离ddd为:d=∣(ω⃗)Tx⃗+b∣∣∣ω⃗∣∣2d=\frac{|(\vec\omega)^T\vec x+b|}{||\vec\omega||_2}d=∣∣ω∣∣2∣(ω)Tx+b∣(点到超平面的距离公式,其中∣∣ω⃗∣∣2=ω12+ω22+ω32+...+ωn2||\vec\omega||_2=\sqrt{\omega_1^2+\omega_2^2+\omega_3^2+...+\omega_n^2}∣∣ω∣∣2=ω12+ω22+ω32+...+ωn2),在硬间隔上,(ω⃗)Tx⃗+b=1(\vec\omega)^T\vec x+b=1(ω)Tx+b=1或(ω⃗)Tx⃗+b=−1(\vec\omega)^T\vec x+b=-1(ω)Tx+b=−1,因此∣(ω⃗)Tx⃗+b∣=1|(\vec\omega)^T\vec x+b|=1∣(ω)Tx+b∣=1,d=1∣∣ω⃗∣∣d=\frac{1}{||\vec\omega||}d=∣∣ω∣∣1,需要最大化ddd,转化为最小化∣∣ω⃗∣∣2||\vec\omega||_2∣∣ω∣∣2,为了求解方便,问题转化为最小化∣∣ω∣∣222\frac{||\omega||^2_2}{2}2∣∣ω∣∣22。故SVM问题:求min∣∣ω∣∣222min\frac{||\omega||^2_2}{2}min2∣∣ω∣∣22在1−y(i)((ω⃗)Tx(i)⃗+b)≤01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)\le01−y(i)((ω)Tx(i)+b)≤0的约束下。 2)求解SVM问题:观察SVM问题:f(ω⃗)=∣∣ω∣∣222f(\vec\omega)=\frac{||\omega||_2^2}{2}f(ω)=2∣∣ω∣∣22是凸函数,约束条件:gi(ω⃗,b)=1−y(i)((ω⃗)Tx(i)⃗+b)≤0g_i(\vec\omega,b)=1-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)\le0gi(ω,b)=1−y(i)((ω)Tx(i)+b)≤0(iii是指第iii个数据,ω⃗=(ω1,ω2,ω3,...,ωn)T\vec\omega=(\omega_1,\omega_2,\omega_3,...,\omega_n)^Tω=(ω1,ω2,ω3,...,ωn)T,x⃗=(x1,x2,x3,...,xn)T\vec x=(x_1,x_2,x_3,...,x_n)^Tx=(x1,x2,x3,...,xn)T假设有nnn个特征)是凸集,故它是一个凸优化问题,因此满足强对偶性,即原问题的最优解等于对偶问题的最优解。构造拉格朗日函数:L(ω⃗,λ⃗,b)=12∣∣ω⃗∣∣22+(λ⃗)T⋅g⃗(ω⃗,b)L(\vec\omega,\vec\lambda,b)=\frac{1}{2}||\vec\omega||_2^2+(\vec\lambda)^T\cdot\vec g(\vec\omega,b)L(ω,λ,b)=21∣∣ω∣∣22+(λ)T⋅g(ω,b)(g⃗(ω⃗,b)=(g1(ω⃗,b),g2(ω⃗,b),g3(ω⃗,b),...,gm(ω⃗,b))T\vec g(\vec\omega,b)=(g_1(\vec\omega,b),g_2(\vec\omega,b),g_3(\vec\omega,b),...,g_m(\vec\omega,b))^Tg(ω,b)=(g1(ω,b),g2(ω,b),g3(ω,b),...,gm(ω,b))T,总共有mmm个数据)按照多约束条件,它也可以写成:L(ω⃗,λ⃗,b)=12∣∣ω⃗∣∣22+∑i=1mλi(1−y(i)((ω⃗)Tx(i)⃗+b))L(\vec\omega,\vec\lambda,b)=\frac{1}{2}||\vec\omega||_2^2+\sum_{i=1}^{m}\lambda_i(1-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b))L(ω,λ,b)=21∣∣ω∣∣22+∑i=1mλi(1−y(i)((ω)Tx(i)+b)),原问题是:minx⃗maxλi≥0L(ω⃗,λ⃗,b)min_{\vec x}max_{\lambda_i\ge0}L(\vec\omega,\vec\lambda,b)minxmaxλi≥0L(ω,λ,b),为了简化计算,将其转化为对偶问题,因为对偶问题的最优解与原问题的最优解相等。即求解对偶问题:maxλi≥0minx⃗L(ω⃗,λ⃗,b)max_{\lambda_i\ge0}min_{\vec x}L(\vec\omega,\vec\lambda,b)maxλi≥0minxL(ω,λ,b)。先固定λ⃗\vec\lambdaλ(把λ⃗\vec\lambdaλ当常数)最小化L(ω⃗,λ⃗,b)L(\vec\omega,\vec\lambda,b)L(ω,λ,b),令{∂L(ω⃗,λ⃗,b)∂ωk=ωk−∑i=1mλiy(i)xk(i)=0∂L(ω⃗,λ⃗,b)∂b=−∑i=1mλiy(i)=0\left\{\begin{matrix}\frac{\partial L(\vec\omega,\vec\lambda,b)}{\partial\omega_k}=\omega_k-\sum_{i=1}^{m}\lambda_iy^{(i)}x_k^{(i)}=0\\\frac{\partial L(\vec\omega,\vec\lambda,b)}{\partial b}=-\sum_{i=1}^{m}\lambda_iy^{(i)}=0\end{matrix}\right.{∂ωk∂L(ω,λ,b)=ωk−∑i=1mλiy(i)xk(i)=0∂b∂L(ω,λ,b)=−∑i=1mλiy(i)=0(其中kkk是指第kkk个特征,k=1,2,3,...,nk=1,2,3,...,nk=1,2,3,...,n)。由此就得出:{ωk=∑i=1mλiy(i)xj(i)(j=1,2,3,...,n)∑i=1mλiy(i)=0\left\{\begin{matrix}\omega_k=\sum_{i=1}^{m}\lambda_iy^{(i)}x_j^{(i)}(j=1,2,3,...,n)\\\sum_{i=1}^{m}\lambda_iy^{(i)}=0\end{matrix}\right.{ωk=∑i=1mλiy(i)xj(i)(j=1,2,3,...,n)∑i=1mλiy(i)=0,将ωk\omega_kωk写成向量的形式就是:ω⃗=∑i=1mλiy(i)x(i)⃗\vec\omega=\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}}ω=∑i=1mλiy(i)x(i)(ω⃗=(ω1,ω2,ω3,...,ωn)T\vec\omega=(\omega_1,\omega_2,\omega_3,...,\omega_n)^Tω=(ω1,ω2,ω3,...,ωn)T,x(i)⃗=(x1(i),x2(i),x3(i),...,xn(i))T\vec{x^{(i)}}=(x_1^{(i)},x_2^{(i)},x_3^{(i)},...,x_n^{(i)})^Tx(i)=(x1(i),x2(i),x3(i),...,xn(i))T),接下来将最小化得出的这两个结论代回L(ω⃗,λ⃗,b)L(\vec\omega,\vec\lambda,b)L(ω,λ,b),原式中的∣∣ω⃗∣∣22=ω12+ω22+ω32+...+ωn2=(ω⃗)T⋅ω⃗||\vec\omega||_2^2=\omega_1^2+\omega_2^2+\omega_3^2+...+\omega_n^2=(\vec\omega)^T\cdot\vec\omega∣∣ω∣∣22=ω12+ω22+ω32+...+ωn2=(ω)T⋅ω,所以L(ω⃗,λ⃗,b)=12(ω⃗)T⋅ω⃗+∑i=1mλi(1−y(i)((ω⃗)Tx(i)⃗+b))=12(∑i=1mλiy(i)x(i)⃗)T⋅(∑i=1mλiy(i)x(i)⃗)+∑i=1mλi−∑i=1mλiy(i)(∑i=1mλiy(i)x(i)⃗)T⋅x(i)⃗−∑i=1mλiy(i)bL(\vec\omega,\vec\lambda,b)=\frac{1}{2}(\vec\omega)^T\cdot\vec\omega+\sum_{i=1}^{m}\lambda_i(1-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b))=\frac{1}{2}(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})^T\cdot(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})+\sum_{i=1}^{m}\lambda_i-\sum_{i=1}^{m}\lambda_iy^{(i)}(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})^T\cdot\vec{x^{(i)}}-\sum_{i=1}^{m}\lambda_iy^{(i)}bL(ω,λ,b)=21(ω)T⋅ω+∑i=1mλi(1−y(i)((ω)Tx(i)+b))=21(∑i=1mλiy(i)x(i))T⋅(∑i=1mλiy(i)x(i))+∑i=1mλi−∑i=1mλiy(i)(∑i=1mλiy(i)x(i))T⋅x(i)−∑i=1mλiy(i)b。其中λi\lambda_iλi和y(i)y^{(i)}y(i)是标量,x(i)⃗\vec{x^{(i)}}x(i)是向量,所以(∑i=1mλiy(i)x(i)⃗)T⋅∑i=1mλiy(i)x(i)⃗=∑i=1m∑j=1mλiλjy(i)y(j)(x(i)⃗)T⋅x(j)⃗(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})^T\cdot\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}}=\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}(\vec{x^{(i)}})^T\cdot\vec{x^{(j)}}(∑i=1mλiy(i)x(i))T⋅∑i=1mλiy(i)x(i)=∑i=1m∑j=1mλiλjy(i)y(j)(x(i))T⋅x(j),而∑i=1mλiy(i)(∑i=1mλiy(i)x(i)⃗)T⋅x(i)⃗=(∑i=1mλiy(i)x(i)⃗)T⋅∑i=1mλiy(i)x(i)⃗\sum_{i=1}^{m}\lambda_iy^{(i)}(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})^T\cdot\vec{x^{(i)}}=(\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}})^T\cdot\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}}∑i=1mλiy(i)(∑i=1mλiy(i)x(i))T⋅x(i)=(∑i=1mλiy(i)x(i))T⋅∑i=1mλiy(i)x(i),所以L(ω⃗,λ⃗,b)=−12∑i=1m∑j=1mλiλjy(i)y(j)(x(i)⃗)Tx(j)⃗+∑i=1mλiL(\vec\omega,\vec\lambda,b)=-\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}(\vec{x^{(i)}})^T\vec{x^{(j)}}+\sum_{i=1}^{m}\lambda_iL(ω,λ,b)=−21∑i=1m∑j=1mλiλjy(i)y(j)(x(i))Tx(j)+∑i=1mλi(因为∑i=1mλiy(i)=0\sum_{i=1}^{m}\lambda_iy^{(i)}=0∑i=1mλiy(i)=0,所以∑i=1mλiy(i)b=0\sum_{i=1}^{m}\lambda_iy^{(i)}b=0∑i=1mλiy(i)b=0)想要最大化L(ω⃗,λ⃗,b)L(\vec\omega,\vec\lambda,b)L(ω,λ,b),等价于最小化−L(ω⃗,λ⃗,b)-L(\vec\omega,\vec\lambda,b)−L(ω,λ,b),所以最终想解决的问题是:minλ≥0L(ω⃗,λ⃗,b)=12∑i=1m∑j=1mλiλjy(i)y(j)(x(i)⃗)T⋅x(j)⃗−∑i=1mλi\textcolor{red}{min_{\lambda\ge0}L(\vec\omega,\vec\lambda,b)=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}(\vec{x^{(i)}})^T\cdot\vec{x^{(j)}}-\sum_{i=1}^{m}\lambda_i}minλ≥0L(ω,λ,b)=21∑i=1m∑j=1mλiλjy(i)y(j)(x(i))T⋅x(j)−∑i=1mλi。同时也要满足条件:∑i=1mλiy(i)=0\textcolor{red}{\sum_{i=1}^{m}\lambda_iy^{(i)}=0}∑i=1mλiy(i)=0和λi≥0\textcolor{red}{\lambda_i\ge0}λi≥0(如果有一个数据点的λi<0\lambda_i<0λi<0说明该数据点的最优解是全局最优解,而不是边界,此时将它的λi=0\lambda_i=0λi=0)。此时拉格朗日函数L(ω⃗,λ⃗,b)L(\vec\omega,\vec\lambda,b)L(ω,λ,b)化成了一个只有λi\lambda_iλi的函数,当利用梯度求得最小值的λi\lambda_iλi并且满足∑i=1mλiy(i)=0\sum_{i=1}^{m}\lambda_iy^{(i)}=0∑i=1mλiy(i)=0时候,那么此时最优解的ω⃗=∑i=1mλiy(i)x(i)⃗\vec\omega=\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}}ω=∑i=1mλiy(i)x(i)。对于bbb的求解,从1)可得结论,当分类点不在硬间隔的两条线(黄橙两线)上的时候,一定满足:1−y(i)((ω⃗)Tx(i)⃗+b)<01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)<01−y(i)((ω)Tx(i)+b)<0(因为此时,(ω⃗)Tx(i)⃗+b>1(\vec\omega)^T\vec{x^{(i)}}+b>1(ω)Tx(i)+b>1或(ω⃗)Tx(i)⃗+b<−1(\vec\omega)^T\vec{x^{(i)}}+b<-1(ω)Tx(i)+b<−1;y(i)=1y^{(i)}=1y(i)=1或y(i)=−1y^{(i)}=-1y(i)=−1),相反,如果分类点在硬间隔的两条线上的时候,一定满足:1−y(i)((ω⃗)Tx(i)⃗+b)=01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=01−y(i)((ω)Tx(i)+b)=0。由KKT条件可知,当约束条件g(ω⃗,b)<0g(\vec\omega,b)<0g(ω,b)<0的时候,其拉格朗日乘子必存在λ=0\lambda=0λ=0;当约束条件g(ω⃗,b)=0g(\vec\omega,b)=0g(ω,b)=0的时候,其拉格朗日乘子必存在λ>0\lambda>0λ>0,说明只有在硬间隔上的点才对最优超平面的求解起到贡献作用。所以想要求解bbb,那么就要找到硬间隔直线上的任意一点代入最优值ω⃗\vec\omegaω到方程1−y(i)((ω⃗)Tx(i)⃗+b)=01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=01−y(i)((ω)Tx(i)+b)=0求解,此时(x(i)⃗,y(i))(\vec{x^{(i)}},y^{(i)})(x(i),y(i))的点一定是在硬间隔上的点(在1)中已经说明了一定有点在两条硬间隔线上),即满足λi>0\lambda_i>0λi>0的数据点。 3)实例求解SVM:如下图所示,假设有三个点,两个特征xxx和yyy,这三个点分别为X(1)(3,3)X^{(1)}(3,3)X(1)(3,3)(红叉),X(2)(4,3)X^{(2)}(4,3)X(2)(4,3)(红叉)和X(3)(1,1)X^{(3)}(1,1)X(3)(1,1)(蓝叉),设它们的y(1)=1y^{(1)}=1y(1)=1,y(2)=1y^{(2)}=1y(2)=1和y(1)=−1y^{(1)}=-1y(1)=−1,其中观察图可知X(1)(3,3)X^{(1)}(3,3)X(1)(3,3)和X(3)(1,1)X^{(3)}(1,1)X(3)(1,1)在硬间隔的两条直线上,分别是黄橙两虚线(虽然硬间隔直线不是写成(ω⃗)Tx(i)⃗+b=1(\vec\omega)^T\vec{x^{(i)}}+b=1(ω)Tx(i)+b=1或(ω⃗)Tx(i)⃗+b=−1(\vec\omega)^T\vec{x^{(i)}}+b=-1(ω)Tx(i)+b=−1但是它们仍然可以化成这种形式,如:(ω⃗)Tx(i)⃗+b=a(\vec\omega)^T\vec{x^{(i)}}+b=a(ω)Tx(i)+b=a和(ω⃗)Tx(i)⃗+b=−a(\vec\omega)^T\vec{x^{(i)}}+b=-a(ω)Tx(i)+b=−a,两边同时除以aaa,直线没有发生变化),那么黑色直线就是要求解的最优直线,它是y+x−4=0y+x-4=0y+x−4=0。利用SVM的推导进行证明。 根据上述推导的结论:minλ≥0L(ω⃗,λ⃗,b)=12∑i=1m∑j=1mλiλjy(i)y(j)(x(i)⃗)T⋅x(j)⃗−∑i=1mλimin_{\lambda\ge0}L(\vec\omega,\vec\lambda,b)=\frac{1}{2}\sum_{i=1}^{m}\sum_{j=1}^{m}\lambda_i\lambda_jy^{(i)}y^{(j)}(\vec{x^{(i)}})^T\cdot\vec{x^{(j)}}-\sum_{i=1}^{m}\lambda_iminλ≥0L(ω,λ,b)=21∑i=1m∑j=1mλiλjy(i)y(j)(x(i))T⋅x(j)−∑i=1mλi且满足∑i=1mλiy(i)=0\sum_{i=1}^{m}\lambda_iy^{(i)}=0∑i=1mλiy(i)=0和λi≥0\lambda_i\ge0λi≥0, 表格(x(i)⃗)T⋅x(j)⃗(\vec{x^{(i)}})^T\cdot\vec{x^{(j)}}(x(i))T⋅x(j) (x(i)⃗)T⋅x(j)⃗(\vec{x^{(i)}})^T\cdot\vec{x^{(j)}}(x(i))T⋅x(j)X(1)⃗\vec{X^{(1)}}X(1)X(2)⃗\vec{X^{(2)}}X(2)X(3)⃗\vec{X^{(3)}}X(3)X(1)⃗\vec{X^{(1)}}X(1)(3,3)T⋅(3,3)=18(3,3)^T\cdot(3,3)=18(3,3)T⋅(3,3)=18(3,3)T⋅(4,3)=21(3,3)^T\cdot(4,3)=21(3,3)T⋅(4,3)=21(3,3)T⋅(1,1)=6(3,3)^T\cdot(1,1)=6(3,3)T⋅(1,1)=6X(2)⃗\vec{X^{(2)}}X(2)(4,3)T⋅(3,3)=21(4,3)^T\cdot(3,3)=21(4,3)T⋅(3,3)=21(4,3)T⋅(4,3)=25(4,3)^T\cdot(4,3)=25(4,3)T⋅(4,3)=25(4,3)T⋅(1,1)=7(4,3)^T\cdot(1,1)=7(4,3)T⋅(1,1)=7X(3)⃗\vec{X^{(3)}}X(3)(1,1)T⋅(3,3)=6(1,1)^T\cdot(3,3)=6(1,1)T⋅(3,3)=6(1,1)T⋅(4,3)=7(1,1)^T\cdot(4,3)=7(1,1)T⋅(4,3)=7(1,1)T⋅(1,1)=2(1,1)^T\cdot(1,1)=2(1,1)T⋅(1,1)=2 表格y(i)y(j)y^{(i)}y^{(j)}y(i)y(j) y(i)y(j)y^{(i)} y^{(j)}y(i)y(j)y(1)y^{(1)}y(1)y(2)y^{(2)}y(2)y(3)y^{(3)}y(3)y(1)y^{(1)}y(1)1⋅1=11\cdot1=11⋅1=11⋅1=11\cdot1=11⋅1=11⋅−1=−11\cdot-1=-11⋅−1=−1y(2)y^{(2)}y(2)1⋅1=11\cdot1=11⋅1=11⋅1=11\cdot1=11⋅1=11⋅−1=11\cdot-1=11⋅−1=1y(3)y^{(3)}y(3)−1⋅1=−1-1\cdot1=-1−1⋅1=−1−1⋅1=−1-1\cdot1=-1−1⋅1=−1−1⋅−1=1-1\cdot-1=1−1⋅−1=1 代入计算可得:minλ≥0L(ω⃗,λ⃗,b)=12(18λ12+25λ22+2λ32+42λ1λ2−12λ1λ3−14λ2λ3)−λ1−λ2−λ3min_{\lambda\ge0}L(\vec\omega,\vec\lambda,b)=\frac{1}{2}(18\lambda_1^2+25\lambda_2^2+2\lambda_3^2+42\lambda_1\lambda_2-12\lambda_1\lambda_3-14\lambda_2\lambda_3)-\lambda_1-\lambda_2-\lambda_3minλ≥0L(ω,λ,b)=21(18λ12+25λ22+2λ32+42λ1λ2−12λ1λ3−14λ2λ3)−λ1−λ2−λ3,且满足:∑i=1mλiy(i)=0\sum_{i=1}^{m}\lambda_iy^{(i)}=0∑i=1mλiy(i)=0 即 λ1+λ2−λ3=0\lambda_1+\lambda_2-\lambda_3=0λ1+λ2−λ3=0,λ3=λ1+λ2\lambda_3=\lambda_1+\lambda_2λ3=λ1+λ2化简L(ω⃗,λ⃗,b)L(\vec\omega,\vec\lambda,b)L(ω,λ,b)可得:L(ω⃗,λ⃗,b)=4λ12+132λ22+10λ1λ2−2λ1−2λ2L(\vec\omega,\vec\lambda,b)=4\lambda_1^2+\frac{13}{2}\lambda_2^2+10\lambda_1\lambda_2-2\lambda_1-2\lambda_2L(ω,λ,b)=4λ12+213λ22+10λ1λ2−2λ1−2λ2,要求拉格朗日函数的极小值,先求偏导:{∂L(ω⃗,λ⃗,b)∂λ1=8λ1+10λ2−2=0∂L(ω⃗,λ⃗,b)∂λ2=13λ2+10λ1−2=0\left\{\begin{matrix}\frac{\partial L(\vec\omega,\vec\lambda,b)}{\partial\lambda_1}=8\lambda_1+10\lambda_2-2=0\\\frac{\partial L(\vec\omega,\vec\lambda,b)}{\partial\lambda_2}=13\lambda_2+10\lambda_1-2=0\end{matrix}\right.{∂λ1∂L(ω,λ,b)=8λ1+10λ2−2=0∂λ2∂L(ω,λ,b)=13λ2+10λ1−2=0,求解这个方程组可得{λ1=32λ2=−1\left\{\begin{matrix}\lambda_1=\frac{3}{2}\\\lambda_2=-1\end{matrix}\right.{λ1=23λ2=−1,因为X(2)X^{(2)}X(2)不在硬间隔上,所以显然求解不出λ2≥0\lambda_2\ge0λ2≥0的解,于是令λ2=0\lambda_2=0λ2=0,因为X(1)X^{(1)}X(1)在硬间隔上,所以此时要必须要满足∂L(ω⃗,λ⃗,b)∂λ1=0\frac{\partial L(\vec\omega,\vec\lambda,b)}{\partial\lambda_1}=0∂λ1∂L(ω,λ,b)=0,代入λ2=0\lambda_2=0λ2=0,得λ1=14\lambda_1=\frac{1}{4}λ1=41,再代入λ3=λ1+λ2\lambda_3=\lambda_1+\lambda_2λ3=λ1+λ2可得:λ3=14\lambda_3=\frac{1}{4}λ3=41,此时ω⃗=∑i=1mλiy(i)x(i)⃗=14⋅1⋅(3,3)T+0+14⋅−1⋅(1,1)T=(12,12)T\vec\omega=\sum_{i=1}^{m}\lambda_iy^{(i)}\vec{x^{(i)}}=\frac{1}{4}\cdot1\cdot(3,3)^T+0+\frac{1}{4}\cdot-1\cdot(1,1)^T=(\frac{1}{2},\frac{1}{2})^Tω=∑i=1mλiy(i)x(i)=41⋅1⋅(3,3)T+0+41⋅−1⋅(1,1)T=(21,21)T,此时λ1>0\lambda_1>0λ1>0,λ3>0\lambda_3>0λ3>0,说明他们在硬间隔直线上,所以任意一个λ\lambdaλ代入方程:1−y(i)((ω⃗)Tx(i)⃗+b)=01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=01−y(i)((ω)Tx(i)+b)=0,假设代入λ1\lambda_1λ1,它的y(1)=1y^{(1)}=1y(1)=1,x(1)⃗=(3,3)T\vec{x^{(1)}}=(3,3)^Tx(1)=(3,3)T,满足方程:1−y(i)((ω⃗)Tx(i)⃗+b)=1−1⋅((12,12)⋅(3,3)T+b)=01-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=1-1\cdot((\frac{1}{2},\frac{1}{2})\cdot(3,3)^T+b)=01−y(i)((ω)Tx(i)+b)=1−1⋅((21,21)⋅(3,3)T+b)=0 解方程可得b=−2b=-2b=−2,于是可得直线:(ω⃗)Tx(i)⃗+b=12x+12y−2=0(\vec\omega)^T\vec{x^{(i)}}+b=\frac{1}{2}x+\frac{1}{2}y-2=0(ω)Tx(i)+b=21x+21y−2=0,与原来一开始推断的黑实线:x+y−4=0x+y-4=0x+y−4=0为同一条直线,推导完成。 3.软间隔 1)软间隔的作用:允许少量样本违反分类超平面的约束,通过平衡分类间隔大小与分类错误来构建更稳健的模型。 2)引入软间隔:考虑一种情况,当构建好了一个SVM模型,如果新增加一些数据,要对新数据和老数据一起训练一个模型,如果说这个新加入的数据在硬间隔之上或者硬间隔之外,你们这个之前数据得出的SVM超平面不需要改变,但是如果数据点在硬间隔之内或者在分隔直线上,就比如在一开始1-1)的图片中新增一个蓝叉点,到了在他们的硬间隔之内或者到了最优的分隔线。那是否需要重新再算最大间隔?在多数情况下,是不需要的,所以引入了软间隔的概念,相当于给最小化函数:f(ω⃗)=∣∣ω∣∣222f(\vec\omega)=\frac{||\omega||_2^2}{2}f(ω)=2∣∣ω∣∣22增加了一个惩罚项αi\alpha_iαi(注意,每一个数据都引入惩罚项,因此最小化函数需要将所有惩罚因子求和)。 3)软间隔惩罚项的分析:对于αi\alpha_iαi的取值,观察硬间隔直线上的点,满足:y(i)((ω⃗)Tx(i)⃗+b)=1y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=1y(i)((ω)Tx(i)+b)=1,如果在硬间隔之内的点(软间隔点),满足:y(i)((ω⃗)Tx(i)⃗+b)=1−αiy^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=1-\alpha_iy(i)((ω)Tx(i)+b)=1−αi(显然αi≥0\alpha_i\ge0αi≥0,因为当αi=0\alpha_i=0αi=0时,新增的数据点在硬间隔上,正常求解SVM问题即可,当数据点在硬间隔之外,同样也是正常点此时也是αi=0\alpha_i=0αi=0,正常求解硬间隔问题即可,但是当数据点在软间隔上,此时αi>0\alpha_i>0αi>0,但是对于它不能无限大下去,最大取1−y(i)((ω⃗)Tx(i)⃗+b)1-y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)1−y(i)((ω)Tx(i)+b)),设y(i)((ω⃗)Tx(i)⃗+b)=Ay^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)=Ay(i)((ω)Tx(i)+b)=A,那么αi=1−A\alpha_i=1-Aαi=1−A,当A≥1A\ge1A≥1时,αi=0\alpha_i=0αi=0,当A<1A<1A<1时,αi>0\alpha_i>0αi>0,故给出了αi=max[0,1−A]\alpha_i=max[0,1-A]αi=max[0,1−A] 4)惩罚因子的最小化函数:拥有惩罚项的最小化函数为:f′(ω⃗)=∣∣ω∣∣222+C⋅∑i=1mαif^{'}(\vec\omega)=\frac{||\omega||_2^2}{2}+C\cdot\sum_{i=1}^{m}\alpha_if′(ω)=2∣∣ω∣∣22+C⋅∑i=1mαi,约束条件变为:y(i)((ω⃗)Tx(i)⃗+b)+αi≥1y^{(i)}((\vec\omega)^T\vec{x^{(i)}}+b)+\alpha_i\ge1y(i)((ω)Tx(i)+b)+αi≥1(CCC为惩罚项权重,C≥0C\ge0C≥0),对于函数f′(ω⃗)f^{'}(\vec\omega)f′(ω),需要最小化,通过之前的分析可以得出结论需要寻找间隔最大的点,最小化f(ω⃗)f(\vec\omega)f(ω),当∣∣ω∣∣22||\omega||_2^2∣∣ω∣∣22越小,间隔就越大,∑i=1mαi\sum_{i=1}^{m}\alpha_i∑i=1mαi越小,即惩罚项作用越不明显,说明惩罚容忍度越低;反之,间隔越小,∑i=1mαi\sum_{i=1}^{m}\alpha_i∑i=1mαi越大,惩罚项作用越明显,说明惩罚容忍度越高。关于CCC,当CCC越大的时候,C⋅∑i=1mαiC\cdot\sum_{i=1}^{m}\alpha_iC⋅∑i=1mαi,∑i=1mαi\sum_{i=1}^{m}\alpha_i∑i=1mαi越小,惩罚项容忍度越低,当CCC接近于无穷大的时候,αi=0\alpha_i=0αi=0,就是普通的硬间隔问题;反之CCC越小,容忍度越高。故要找到f′(ω⃗)f^{'}(\vec\omega)f′(ω)的平衡点使得得到最优解。 4.核函数 1)定义:核函数是支持向量机(SVM)中用于处理非线性数据的关键工具,本质是通过低维空间中样本的直接计算,替代其映射到高维空间后的内积运算,从而在不增加计算复杂度的前提下,实现高维空间的线性可分。 2)核函数的作用:在现实问题中,并不是所有的分类问题都是线性可分的,即大多数情况下,是找不到一个超平面或直线,可以完美分隔两个类别,于是就引入了核函数,它的作用是以一定的函数技巧,将数据升维,如有在XOYXOYXOY平面上,找不到一条直线分隔两个类别,那么就升高维度变成三维甚至更高,使得其变为线性可分。例如两个特征x1x_1x1,x2x_2x2构成的平面,找不到一条线分隔数据点(x1(i),x2(i))(x_1^{(i)},x_2^{(i)})(x1(i),x2(i)),将其用核函数:k(x,y)=(x+y)2k(\mathbf{x},\mathbf{y})=(\mathbf{x}+\mathbf{y})^2k(x,y)=(x+y)2,其映射函数为:ϕ(x1,x2)=(x12,2x1x2,x22)\phi(x_1,x_2)=(x_1^2,\sqrt{2}x_1x_2,x_2^2)ϕ(x1,x2)=(x12,2x1x2,x22)就是将所有数据点按照映射函数的方式升维,比如:x1=3x_1=3x1=3,x2=3x_2=3x2=3,那么将点(3,3)(3,3)(3,3)升维,变成了:(32,2⋅3⋅3,32)=(9,92,9)(3^2,\sqrt{2}\cdot3\cdot3,3^2)=(9,9\sqrt{2},9)(32,2⋅3⋅3,32)=(9,92,9)这样就实现了升维,然后就可以变成找一个平面分隔两个类。 3)常见核函数: a.多项式核:K(x,y)=(x⋅y+c)dK(\mathbf{x}, \mathbf{y}) = (\mathbf{x} \cdot \mathbf{y} + c)^dK(x,y)=(x⋅y+c)d,映射函数为:ϕ(x1,x2)=(x12,x22,2x1x2,2cx1,2cx2,c)\phi(x_1,x_2) = (x_1^2, x_2^2, \sqrt{2} x_1 x_2, \sqrt{2c} x_1, \sqrt{2c} x_2, c)ϕ(x1,x2)=(x12,x22,2x1x2,2cx1,2cx2,c)(设d=2d=2d=2) b.径向基核:K(x,y)=exp(−γ∣x−y∣2)K(\mathbf{x}, \mathbf{y}) = \exp(-\gamma |\mathbf{x} - \mathbf{y}|^2)K(x,y)=exp(−γ∣x−y∣2),映射函数为:ϕ(x1)ϕ(x2)=∑n=0∞(−γ)nn!∣x1−x2∣2n\phi(x_1)\phi(x_2)=\sum_{n=0}^{\infty}\frac{(-\gamma)^n}{n!}|x_1-x_2|^{2n}ϕ(x1)ϕ(x2)=∑n=0∞n!(−γ)n∣x1−x2∣2n c.Sigmoid核:K(x,y)=tanh(αx⋅y+c)K(\mathbf{x}, \mathbf{y}) = \tanh(\alpha \mathbf{x} \cdot \mathbf{y} + c)K(x,y)=tanh(αx⋅y+c),映射函数为:ϕ(x1)ϕ(x2)=tanh(α⋅x1⋅x2+c)\phi(x_1)\phi(x_2)=\tanh(\alpha\cdot x_1\cdot x_2+c)ϕ(x1)ϕ(x2)=tanh(α⋅x1⋅x2+c)