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

【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,α)=21∥w∥2−i=1∑mαi[yi(w⋅xi+b−1)]

【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}] ∂w∂L=∂w∂[21wTw−i=1∑mαiyiwTxi]

细心观察的朋友肯定发现上式出现了权重矩阵w的转置 w T w^T wT,这是因为:

在之前的所有公式的写法中,我对w和x/的矩阵乘法都沿用了最为稳妥的写法 w ⋅ x w\cdot x w⋅x。在机器学习领域,一般默认的向量形式为列向量,所以 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 21∥w∥2=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} ∂w∂L=∂w∂[21wTw−i=1∑mαiyiwTxi]=w−i=1∑mα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} ∂b∂L=−i=1∑mα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 ∂w∂L=w−i=1∑mαiyixi=0可得:
w = ∑ i = 1 m α i y i x i w=\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i} w=i=1∑mαiyixi

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

可得:
∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1∑mα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} 21∥w∥2=21wTw=21(i=1∑mαiyixi)Ti=1∑mαjyjxj=21i,j=1∑mα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=1∑mαiyiwTxi=i=1∑mαiyi(j=1∑mαjyjxi)Txi=i=1∑mαiyi(j=1∑mαjyjxjT)xi=i,j=1∑mα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=1∑mαiyib=bi=1∑mα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=1∑mαi⋅1=i=1∑mα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=1∑mαi−21i,j=1∑mαiαjyiyjxiTxj

【3】总结

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

相关推荐
十重幻想29 分钟前
PTA6-4 使用函数统计指定数字的个数(C)
c语言·c++·算法
学無芷境35 分钟前
VOCO摘要
人工智能
小熊出擊41 分钟前
【pytest】finalizer 执行顺序:FILO 原则
python·测试工具·单元测试·pytest
格林威1 小时前
机器视觉的工业镜头有哪些?能做什么?
人工智能·深度学习·数码相机·算法·计算机视觉·视觉检测·工业镜头
Jolie_Liang1 小时前
保险业多模态数据融合与智能化运营架构:技术演进、应用实践与发展趋势
大数据·人工智能·架构
tao3556671 小时前
【Python刷力扣hot100】49. Group Anagrams
开发语言·python·leetcode
烽火连城诀1 小时前
人工智能在工程项目进度预测与风险识别中的应用
人工智能·文献综述·如何写文献综述·文献综述模板·文献综述怎么写
韩立学长1 小时前
【开题答辩实录分享】以《基于Python的新能源汽车管理系统的设计与实现》为例进行答辩实录分享
python·新能源汽车
夏鹏今天学习了吗2 小时前
【LeetCode热题100(35/100)】LRU 缓存
算法·leetcode·缓存
程序员陆通2 小时前
OpenAI 2025年度发布会(Dev Day 2025)主要内容
人工智能