当前位置: 首页 > article >正文

SVM理论推导

本文介绍支持向量机(SVM)的理论推导。

一、SVM 的基本思想

SVM 的目标是找到一个最优超平面,将样本分为不同的类别,并最大化类别间的间隔。

1. 线性可分情况下

在特征空间中找到一个超平面,使得:

  • 样本之间的分类间隔(margin)最大。
  • 分类误差最小。

超平面可以表示为:
w T x + b = 0 w^Tx+b=0 wTx+b=0
其中:

  • w 是法向量,决定了超平面的方向。
  • b 是偏置,决定了超平面到原点的距离。

对于任意样本 ( x i , y i ) (x_i ,y_i) (xi,yi),其中 y i y_i yi ∈{−1,1} 表示类别标签,超平面需要满足:
y i ( w T x i + b ) ≥ 1 y_i(w^Tx_i + b) ≥ 1 yi(wTxi+b)1

1. 优化目标

最大化间隔(margin)等价于最小化 1 2 ∥ w ⃗ ∥ 2 \frac{1}{2} \|\vec{w}\|^2 21w 2:
min ⁡ w , b 1 2 ∥ w ⃗ ∥ 2 \min\limits_{w,b} \frac{1}{2} \|\vec{w}\|^2 w,bmin21w 2
约束条件:
y i ( w T x i + b ) > 1 , i = 1 , 2 , … , n y_i(w^T x_i + b) \gt 1, i = 1, 2, \dots, n yi(wTxi+b)>1,i=1,2,,n

二、线性不可分情况

在实际问题中,数据通常线性不可分,此时需要引入:

1. 松弛变量 ξ i ξ_i ξi
  • 允许部分样本点违反约束条件。
  • 目标函数变为:
    min ⁡ w , b , ξ 1 2 ∥ w ⃗ ∥ 2 + C ∑ i = 1 n ξ i \min\limits_{w,b,ξ} \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i w,b,ξmin21w 2+Ci=1nξi
    其中 C 是惩罚参数,控制误差与间隔的权衡。
2. 核函数
  • 将低维数据映射到高维特征空间,使其线性可分。
  • 核函数定义为:
    K ( x i , x j ) = ϕ ( x i ) ⋅ ϕ ( x j ) K(x_i, x_j) = ϕ(x_i) \cdot ϕ(x_j) K(xi,xj)=ϕ(xi)ϕ(xj)
    常用核函数包括:
  • 线性核: K ( x i , x j ) = x i ⋅ x j K(x_i, x_j) = x_i \cdot x_j K(xi,xj)=xixj
  • 多项式核: K ( x i , x j ) = ( x i ⋅ x j + c ) d K(x_i, x_j) = (x_i \cdot x_j + c)^d K(xi,xj)=(xixj+c)d
  • 高斯核(RBF 核): K ( x i , x j ) = e x p ( − ∥ x i − x j ∥ 2 / ( 2 σ 2 ) ) K(x_i, x_j) = exp(−∥x_i − x_j ∥^2 /(2σ^2)) K(xi,xj)=exp(xixj2/(2σ2))
  • Sigmoid 核: K ( x i , x j ) = t a n h ( α x i ⋅ x j + c ) K(x_i, x_j) = tanh(αx_i ⋅ x_j +c) K(xi,xj)=tanh(αxixj+c)

三、SVM 的优化过程

SVM 的优化问题通常通过 拉格朗日对偶问题 解决:

1. 原始问题:

min ⁡ w , b , ξ 1 2 ∥ w ⃗ ∥ 2 + C ∑ i = 1 n ξ i s . t y i ( w T x i + b ) ≥ 1 − ξ i ,   ξ i ≥ 0 , i = 1 , 2 , … , n \begin{aligned} \min\limits_{w,b,ξ} \quad & \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & y_i (w^T x_i + b) ≥ 1−ξ_i ,\ & ξ_i ≥ 0, \quad & i = 1, 2, \ldots, n \end{aligned} w,b,ξmins.t21w 2+Ci=1nξiyi(wTxi+b)1ξi, ξi0,i=1,2,,n

实际上,引入核函数后,优化问题需要用 ϕ ( x i ) \phi(x_i) ϕ(xi) 代替约束条件中的 x i x_i xi,即原始问题变为如下:
min ⁡ w , b , ξ 1 2 ∥ w ⃗ ∥ 2 + C ∑ i = 1 n ξ i s . t y i ( w T ϕ ( x i ) + b ) ≥ 1 − ξ i ξ i ≥ 0 \begin{aligned} \min\limits_{w,b,ξ} \quad & \frac{1}{2} \|\vec{w}\|^2 +C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & y_i (w^T \red{\phi(x_i)} + b) ≥ 1−ξ_i \\ & ξ_i ≥ 0 \end{aligned} w,b,ξmins.t21w 2+Ci=1nξiyi(wTϕ(xi)+b)1ξiξi0

变换一下约束条件的符号,可以得到等价的标准型:
min ⁡ ω , b , ξ 1 2 ∥ ω ⃗ ∥ 2 − C ∑ i = 1 n ξ i s . t 1 + ξ i − y i ω T ϕ ( x i ) − y i b ≤ 0 ξ i ≤ 0 , i = 1 , 2 , … , n (1) \begin{aligned} \min\limits_{\omega,b,ξ} \quad & \frac{1}{2} \|\vec{\omega}\|^2 - C\sum\limits_{i=1}^n ξ_i \\ {s.t} \quad & 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b \leq 0 \\ & ξ_i \leq 0, \quad & i = 1, 2, \ldots, n \end{aligned}\tag{1} ω,b,ξmins.t21ω 2Ci=1nξi1+ξiyiωTϕ(xi)yib0ξi0,i=1,2,,n(1)

由于我们往往不知道 ϕ ( x i ) \phi(x_i) ϕ(xi)的显示表达,因此我们需要想办法把优化问题转换为没有 ϕ ( x i ) \phi(x_i) ϕ(xi) 的等价问题,因此就引入了对偶问题。
注意:该优化问题强对偶成立,即原始问题的最优解 p ∗ p^* p 等于对偶问题的 d ∗ d^* d

2. 对偶问题:

将约束条件引入优化目标,得到对偶形式:
max ⁡ α ∑ i = 1 n α i − 1 2 ⋅ ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) s . t 0 ≤ α i ≤ C , ∑ i = 1 n α i y i = 0 (2) \begin{aligned} \max\limits_{α} \quad & \sum\limits_{i=1}^n α_i - \frac{1}{2} \cdot \sum\limits_{i=1}^n \sum\limits_{j=1}^n α_i α_j y_i y_j K(x_i, x_j) \\ {s.t} \quad & 0 \leq α_i \leq C , \quad \sum\limits_{i=1}^n α_i y_i = 0 \end{aligned}\tag{2} αmaxs.ti=1nαi21i=1nj=1nαiαjyiyjK(xi,xj)0αiC,i=1nαiyi=0(2)
其中 α i α_i αi是拉格朗日乘子。

3. 优化算法:

对偶问题通常通过 SMO(序列最小优化) 或其他数值方法求解。

补充:对偶函数推导:

式(1)的拉格朗日函数为:
L ( ω , α , β ) = 1 2 ∥ w ⃗ ∥ 2 − C ∑ i = 1 n ξ i + ∑ i = 1 n α i ( 1 + ξ i − y i ω T ϕ ( x i ) − y i b ) + ∑ i = 1 n β i ξ i (3) \begin{aligned} L(\omega, \alpha, \beta) = & \frac{1}{2} \|\vec{w}\|^2 - C\sum\limits_{i=1}^n ξ_i + \sum\limits_{i=1}^n \alpha_i(1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b) \\ & + \sum\limits_{i=1}^n \beta_iξ_i \\ \end{aligned}\tag{3} L(ω,α,β)=21w 2Ci=1nξi+i=1nαi(1+ξiyiωTϕ(xi)yib)+i=1nβiξi(3)

在给定 α , β \alpha,\beta α,β 对偶函数的值,实质上就是对于多有 ( ω , ξ i , b ) (\omega,ξ_i, b) (ω,ξi,b) 求最小值。即对偶问题为:
max ⁡ α , β θ ( α , β ) = inf ⁡ ω , ξ i , b L ( ω , α , β ) s . t α i ≥ 0 , β i ≥ 0 , i = 1 , 2 , … , n (4) \begin{aligned} \max\limits_{\alpha, \beta} \quad & \theta(\alpha,\beta) = \inf\limits_{\omega,ξ_i, b} L(\omega, \alpha, \beta) \\ {s.t} \quad & \alpha_i \geq 0, \quad \beta_i \geq 0, \quad i = 1, 2, \ldots, n \end{aligned}\tag{4} α,βmaxs.tθ(α,β)=ω,ξi,binfL(ω,α,β)αi0,βi0,i=1,2,,n(4)

其中 i n f inf inf 是极小化的意思。
注意:该问题没有等式约束,这里的 α i , β i \alpha_i, \beta_i αi,βi 都是原始优化问题的不等式约束的拉格朗日乘子。

为了求得拉格朗日函数(式子3)的最小值,需要在对应变量求一阶偏导等于0 即可,可得:
∂ L ∂ ω = 0 ⇒ ω = ∑ i = 1 n α i y i ϕ ( x i ) ∂ L ∂ ξ i = 0 ⇒ α i + β i = C ∂ L ∂ b = 0 ⇒ ∑ i = 1 n α i y i = 0 \begin{aligned} \frac{\partial L}{\partial \omega} = 0 & \Rightarrow \quad \omega = \sum\limits_{i=1}^n \alpha_iy_i\phi(x_i) \\ \frac{\partial L}{\partial ξ_i} = 0 & \Rightarrow \quad \alpha_i + \beta_i = C \\ \frac{\partial L}{\partial b} = 0 & \Rightarrow \quad \sum\limits_{i=1}^n \alpha_iy_i = 0 \end{aligned} ωL=0ξiL=0bL=0ω=i=1nαiyiϕ(xi)αi+βi=Ci=1nαiyi=0

可得:
1 2 ∥ w ⃗ ∥ 2 = 1 2 ω T ω = 1 2 ( ∑ i = 1 n α i y i ϕ ( x i ) ) T ( ∑ j = 1 n α j y j ϕ ( x j ) ) = 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j ϕ ( x i ) T ϕ ( x j ) \begin{aligned} \frac{1}{2} \|\vec{w}\|^2 & = \frac{1}{2} \omega^T\omega \\ &=\frac{1}{2} (\sum\limits_{i=1}^n \alpha_iy_i\phi(x_i))^T(\sum\limits_{j=1}^n \alpha_jy_j\phi(x_j)) \\ &= \frac{1}{2}\sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{\phi(x_i)^T\phi(x_j)} \end{aligned} 21w 2=21ωTω=21(i=1nαiyiϕ(xi))T(j=1nαjyjϕ(xj))=21i=1nj=1nαiαjyiyjϕ(xi)Tϕ(xj)

又有:
− ∑ i = 1 n α i y i ω T ϕ ( x i ) = − ∑ i = 1 n α i y i ( ∑ j = 1 n α j y j ϕ ( x j ) ) T ϕ ( x i ) = − ∑ i = 1 n ∑ j = 1 n α i α j y i y j ϕ ( x j ) T ϕ ( x i ) \begin{aligned} -\sum\limits_{i=1}^n \alpha_iy_i \omega^T \phi(x_i) & = -\sum\limits_{i=1}^n \alpha_iy_i (\sum\limits_{j=1}^n \alpha_jy_j\phi(x_j))^T \phi(x_i) \\ & = - \sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{\phi(x_j)^T\phi(x_i)} \end{aligned} i=1nαiyiωTϕ(xi)=i=1nαiyi(j=1nαjyjϕ(xj))Tϕ(xi)=i=1nj=1nαiαjyiyjϕ(xj)Tϕ(xi)

注意红色部分可以用核函数 K ( x i , x j ) K(x_i, x_j) K(xi,xj) 替换。(妙啊)

带入到式子(4)中,得:
θ ( α , β ) = ∑ i = 1 n α i − 1 2 ∑ i = 1 n ∑ j = 1 n α i α j y i y j K ( x i , x j ) \theta(\alpha,\beta) = \sum\limits_{i=1}^n \alpha_i - \frac{1}{2} \sum\limits_{i=1}^n\sum\limits_{j=1}^n \alpha_i\alpha_jy_iy_j\red{K(x_i,x_j)} θ(α,β)=i=1nαi21i=1nj=1nαiαjyiyjK(xi,xj)

即推导出了对偶问题的目标函数式子(2)。

四、求解

对偶问题通常通过 SMO(序列最小优化) 或其他数值方法求解。

到这里思考一个问题:
我们的目标是求分割平面的 ω , b \omega,b ω,b ,但是求对偶问题得到的是 α \alpha α, 这要怎么办?

目前已经有对偶问题得到了其解 α \alpha α, 我们又有
ω = ∑ i = 1 n α i y i ϕ ( x i ) \omega = \sum\limits_{i=1}^n \alpha_iy_i\phi(x_i) ω=i=1nαiyiϕ(xi)
是否可以推出 ω \omega ω 呢? 答案是否定的,因为这里又出现了一个 ϕ ( x i ) \phi(x_i) ϕ(xi),大前提是我们并不知道 ϕ ( x i ) \phi(x_i) ϕ(xi) 的具体显示表达。

测试流程(a)

测试样本 x x x 输入,有

  • ω T ϕ ( x ) + b ≥ 0 \omega^T\phi(x) + b \geq 0 ωTϕ(x)+b0 则 y = +1 ,属于第一类,或正例;
  • ω T ϕ ( x ) + b < 0 \omega^T\phi(x) + b \lt 0 ωTϕ(x)+b<0 则 y = -1, 属于第二类,或负例;

对于实际场景,我们并不需要具体的 ω \omega ω, 如果知道 ω T ϕ ( x ) + b \omega^T\phi(x) + b ωTϕ(x)+b 也是可以的,这样就跳过了具体的 ϕ ( x ) \phi(x) ϕ(x)

那么我们继续看,上述中我们已经求得了 ω \omega ω的表达式, 带入可得:
ω T ϕ ( x ) = ( ∑ i = 1 n α i y i ϕ ( x i ) ) ϕ ( x ) = ∑ i = 1 n α i y i ϕ ( x i ) ϕ ( x ) = ∑ i = 1 n α i y i K ( x i , x ) \begin{aligned} \omega^T\phi(x) &= (\sum\limits_{i=1}^n \alpha_iy_i\phi(x_i))\phi(x) \\ &= \sum\limits_{i=1}^n \alpha_iy_i\red{\phi(x_i)\phi(x)} \\ &= \sum\limits_{i=1}^n \alpha_iy_i\red{K(x_i, x)} \end{aligned} ωTϕ(x)=(i=1nαiyiϕ(xi))ϕ(x)=i=1nαiyiϕ(xi)ϕ(x)=i=1nαiyiK(xi,x)

问题又来了, ω T ϕ ( x ) + b \omega^T\phi(x) + b ωTϕ(x)+b 中的 b 怎么得到?

我们继续看,回到对偶问题上,对偶问题的解一定满足 KKT 条件,而 KKT 条件中的互补松弛 条件:
∑ i = 1 n λ i f i = 0 , λ ≥ 0 , f i ≤ 0 \sum\limits_{i=1}^n \lambda_if_i = 0, \quad \lambda \geq 0, f_i \leq 0 i=1nλifi=0,λ0,fi0

对应本示例(结合式子3)表明:
对于 ∀ i = 1 , 2 , … , n \forall i = 1, 2, \ldots, n i=1,2,,n

  1. 要么 α i = 0 \alpha_i=0 αi=0,要么 1 + ξ i − y i ω T ϕ ( x i ) − y i b = 0 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b = 0 1+ξiyiωTϕ(xi)yib=0
  2. 要么 β i = 0 \beta_i = 0 βi=0,要么 ξ i = 0 \xi_i = 0 ξi=0

那么我们可以取一个 α i \alpha_i αi 满足 0 < α i < C 0 \lt \alpha_i \lt C 0<αi<C,则 β i = C − α i > 0 \beta_i = C - \alpha_i \gt 0 βi=Cαi>0,此时有:
β i = C − α i > 0 ⇒ ξ i = 0 \beta_i = C - \alpha_i \gt 0 \quad \Rightarrow \quad \xi_i = 0 βi=Cαi>0ξi=0
同样的:
α i ≠ 0 ⇒ 1 + ξ i − y i ω T ϕ ( x i ) − y i b = 0 \alpha_i \neq 0 \quad \Rightarrow \quad 1 + ξ_i - y_i \omega^T \red{\phi(x_i)} - y_i b = 0 αi=01+ξiyiωTϕ(xi)yib=0

可以得到 b 的表达式为:
b = 1 − y i ω T ϕ ( x i ) y i = 1 − y i ∑ j = 1 n α j y j K ( x j , x i ) y i \begin{aligned} b &= \frac{1 - y_i \red{\omega^T\phi(x_i)} }{y_i} \\ &= \frac{1 - y_i \red{\sum\limits_{j=1}^n \alpha_jy_j\red{K(x_j, x_i)} }}{y_i} \end{aligned} b=yi1yiωTϕ(xi)=yi1yij=1nαjyjK(xj,xi)

至此 b 就算出来了。实际中可以把所有的 满足 0 < α i < C 0 \lt \alpha_i \lt C 0<αi<C 中的 α i \alpha_i αi, 按照上面方法求出对应的 b, 然后求平均。

测试流程(b)

有了上面的推论,我们可以得到最终的测试流程:

输入测试样本 x x x,

  • ∑ i = 1 n α i y i K ( x i , x ) + b ≥ 0 \sum\limits_{i=1}^n \alpha_iy_iK(x_i, x) + b \geq 0 i=1nαiyiK(xi,x)+b0,则 y = +1
  • ∑ i = 1 n α i y i K ( x i , x ) + b < 0 \sum\limits_{i=1}^n \alpha_iy_iK(x_i, x) + b \lt 0 i=1nαiyiK(xi,x)+b<0,则 y = -1

总结:整个算法学习过程和测试流程都无需知道 ϕ ( x ) \phi(x) ϕ(x), 只需要知道 K ( x i , x j ) K(x_i, x_j) K(xi,xj) 就可以完成。

(至此,结束)


http://www.kler.cn/a/447803.html

相关文章:

  • YOLO-World:Real-Time Open-Vocabulary Object Detection
  • Vue Web开发(十)
  • BGP的六种状态分别是什么?
  • 线性代数期末总复习的点点滴滴(1)
  • HIPT论文阅读
  • APM32F411使用IIS外设驱动es8388实现自录自播
  • NLP自然语言学习路径图
  • MAC地址和IP地址的区别
  • 【HarmonyOs学习日志(14)】计算机网络之域名系统DNS
  • 【Pandas】pandas Series size
  • mysql,数据库数据备份
  • [Unity Shader]【游戏开发】【图形渲染】 Shader数学基础5-方阵、单位矩阵和转置矩阵
  • 地址栏输入URL浏览器会发生什么?
  • 有关异步场景的 10 大 Spring Boot 面试问题
  • CentOS 7 安装、测试和部署FastDFS
  • 在 K8S 中创建 Pod 是如何使用到 GPU 的: nvidia device plugin 源码分析
  • 得物Java后端一面,扛住了!
  • 数据结构与算法学习笔记----Kruskal算法
  • Moretl非共享文件夹日志采集
  • 计算世界之安生:C++继承的文水和智慧(上)
  • 数据仓库工具箱—读书笔记02(Kimball维度建模技术概述03、维度表技术基础)
  • Cmd命令大全(万字详细版)
  • Python小游戏开发:从零实现贪吃蛇游戏
  • Django-路由
  • 计算机网络:应用层 —— 应用层概述
  • BERT模型入门(12)字节对编码(Byte Pair Encoding,BPE)