python学智能算法(二十七)|SVM-拉格朗日函数求解上

发布于:2025-07-23 ⋅ 阅读:(11) ⋅ 点赞:(0)

【1】引言

前序学习进程中,我们已经掌握了支持向量机算法中,为寻找最佳分割超平面,如何用向量表达超平面方程,如何为超平面方程建立拉格朗日函数
本篇文章的学习目标是:求解SVM拉格朗日函数。

【2】求解方法

【2.1】待求解函数

支持量机算法的拉格朗日函数为:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 m α i [ y i ( w ⋅ x i + b − 1 ) ] L(w,b,\alpha)=\frac{1}{2}{\left\|w\right\|}^2-\sum_{i=1}^{m}\alpha_{i}[y_{i}(w\cdot x_{i}+b-1)] L(w,b,α)=21w2i=1mαi[yi(wxi+b1)]

【2.2】函数求导

按照一贯的求解思路,先对拉格朗日函数进行求导:

【2.2.1】对w求导

∂ L ∂ w = ∂ ∂ w [ 1 2 w T w − ∑ i = 1 m α i y i w T x i ] \frac{\partial L}{\partial w}=\frac{\partial }{\partial w}[{\frac{1}{2}w^Tw}-\sum_{i=1}^{m}\alpha_{i}y_{i}w^Tx_{i}] wL=w[21wTwi=1mαiyiwTxi]
细心观察的朋友肯定发现上式出现了权重矩阵w的转置 w T w^T wT,这是因为:
在之前的所有公式的写法中,我对w和x/的矩阵乘法都沿用了最为稳妥的写法 w ⋅ x w\cdot x wx。在机器学习领域,一般默认的向量形式为列向量,所以 w w w x i x_{i} xi可能都是列向量,实际做矩阵乘法的时候,需要转置其中一个,实际的超平面式简写后为
w T x + b = 0 w^Tx+b=0 wTx+b=0或者 w x T + b = 0 wx^T+b=0 wxT+b=0这两种写法完全等效。
在求导的时候,必须选择上述写法中的任何一个,这里选择了 w T x i + b = 0 w^Tx_{i}+b=0 wTxi+b=0,是为了和 1 2 ∥ w ∥ 2 = 1 2 w T w \frac{1}{2}{\left\|w\right\|}^2=\frac{1}{2}w^Tw 21w2=21wTw保持一致。
继续求解导数:
∂ L ∂ w = ∂ ∂ w [ 1 2 w T w − ∑ i = 1 m α i y i w T x i ] = w − ∑ i = 1 m α i y i x i \frac{\partial L}{\partial w}=\frac{\partial }{\partial w}[{\frac{1}{2}w^Tw}-\sum_{i=1}^{m}\alpha_{i}y_{i}w^Tx_{i}]=w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i} wL=w[21wTwi=1mαiyiwTxi]=wi=1mαiyixi

【2.2.2】对b求导

∂ L ∂ b = − ∑ i = 1 m α i y i \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i} bL=i=1mαiyi

【2.3】极值代入

令前两步的导数为0,首先:
∂ L ∂ w = w − ∑ i = 1 m α i y i x i = 0 \frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i}=0 wL=wi=1mαiyixi=0可得:
w = ∑ i = 1 m α i y i x i w=\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i} w=i=1mαiyixi
然后:
∂ L ∂ b = − ∑ i = 1 m α i y i = 0 \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i}=0 bL=i=1mαiyi=0
可得:
∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1mαiyi=0将上数值代入拉格朗日函数有:
第一项:
1 2 ∥ w ∥ 2 = 1 2 w T w = 1 2 ( ∑ i = 1 m α i y i x i ) T ∑ i = 1 m α j y j x j = 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j \frac{1}{2}{\left\|w\right\|}^2=\frac{1}{2}w^Tw=\frac{1}{2}({\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i})^T}\sum_{i=1}^{m}\alpha_{j}y_{j}x_{j}=\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j} 21w2=21wTw=21(i=1mαiyixi)Ti=1mαjyjxj=21i,j=1mαiαjyiyjxiTxj
第二项:
∑ i = 1 m α i y i w T x i = ∑ i = 1 m α i y i ( ∑ j = 1 m α j y j x i ) T x i = ∑ i = 1 m α i y i ( ∑ j = 1 m α j y j x j T ) x i = ∑ i , j = 1 m α i α j y i y j x j T x i \begin{align*}\sum_{i=1}^{m}\alpha_{i}y_{i}w^Tx_{i}=\\ \sum_{i=1}^{m}\alpha_{i}y_{i}(\sum_{j=1}^{m}\alpha_{j}y_{j}x_{i})^Tx_{i}=\sum_{i=1}^{m}\alpha_{i}y_{i}(\sum_{j=1}^{m}\alpha_{j}y_{j}x_{j}^T)x_{i}\\=\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{j}^Tx_{i}\end{align*} i=1mαiyiwTxi=i=1mαiyi(j=1mαjyjxi)Txi=i=1mαiyi(j=1mαjyjxjT)xi=i,j=1mαiαjyiyjxjTxi
第三项:
∑ i = 1 m α i y i b = b ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}b=b\sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1mαiyib=bi=1mαiyi=0
第四项:
∑ i = 1 m α i ⋅ 1 = ∑ i = 1 m α i \sum_{i=1}^{m}\alpha_{i}\cdot 1=\sum_{i=1}^{m}\alpha_{i} i=1mαi1=i=1mαi

将上述四项叠加后,得到:
L ( w , b , α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j L(w,b,\alpha)=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j} L(w,b,α)=i=1mαi21i,j=1mαiαjyiyjxiTxj

【3】总结

对支持向量机算法的拉格朗日函数按照参数求导后,获得了新的表达式。


网站公告

今日签到

点亮在社区的每一天
去签到