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

支持向量机的原理和案例解析

支持向量机的原理和案例解析

      • 一、支持向量机的核心目标:间隔最大化
        • 步骤1:定义分离超平面
        • 步骤2:定义样本到超平面的距离(间隔)
        • 步骤3:间隔最大化的目标
        • 步骤4:简化目标函数
      • 二、通过拉格朗日乘子法求解优化问题
        • 步骤5:构建拉格朗日函数
        • 步骤6:求解对偶问题(KKT条件)
        • 步骤7:求导化简(核心推导)
        • 步骤8:对偶问题的目标函数
        • 步骤9:求解超平面参数
        • 步骤10:分类决策函数
      • 三、数学案例:线性可分数据的SVM求解
      • 总结

一、支持向量机的核心目标:间隔最大化

支持向量机的核心思想是在两类数据中找到一个最优分离超平面,使得两类数据到超平面的“间隔”最大。我们从线性可分情况开始推导(非线性情况可通过核函数扩展)。

步骤1:定义分离超平面

在n维空间中,线性分离超平面的方程为:
w⋅x+b=0(1)\boldsymbol{w} \cdot \boldsymbol{x} + b = 0 \tag{1}wx+b=0(1)

  • w=(w1,w2,...,wn)T\boldsymbol{w} = (w_1, w_2, ..., w_n)^Tw=(w1,w2,...,wn)T 是超平面的法向量(决定超平面方向);
  • bbb偏置项(决定超平面位置);
  • x=(x1,x2,...,xn)T\boldsymbol{x} = (x_1, x_2, ..., x_n)^Tx=(x1,x2,...,xn)T 是样本点的特征向量。

对于二分类问题,假设样本标签为 y∈{+1,−1}y \in \{+1, -1\}y{+1,1}(分别代表正、负类),则超平面需满足:

  • 正类样本:w⋅x+b>0\boldsymbol{w} \cdot \boldsymbol{x} + b > 0wx+b>0(即 y=+1y=+1y=+1);
  • 负类样本:w⋅x+b<0\boldsymbol{w} \cdot \boldsymbol{x} + b < 0wx+b<0(即 y=−1y=-1y=1)。
步骤2:定义样本到超平面的距离(间隔)

为衡量超平面的“分离能力”,需定义样本到超平面的距离。

  • 函数间隔:对于样本 (xi,yi)(\boldsymbol{x}_i, y_i)(xi,yi),函数间隔为 yi(w⋅xi+b)y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b)yi(wxi+b)

    • 意义:若值为正,说明分类正确(yiy_iyiw⋅xi+b\boldsymbol{w} \cdot \boldsymbol{x}_i + bwxi+b 同号);绝对值越大,分类可信度越高。
  • 几何间隔:函数间隔受 w\boldsymbol{w}wbbb 缩放影响(例如 w→2w,b→2b\boldsymbol{w} \to 2\boldsymbol{w}, b \to 2bw2w,b2b 时超平面不变,但函数间隔翻倍),因此需归一化:
    γi=yi(w⋅xi+b)∥w∥(2)\gamma_i = \frac{y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b)}{\|\boldsymbol{w}\|} \tag{2}γi=wyi(wxi+b)(2)
    其中 ∥w∥=w⋅w\|\boldsymbol{w}\| = \sqrt{\boldsymbol{w} \cdot \boldsymbol{w}}w=www\boldsymbol{w}w 的L2范数,几何间隔即样本到超平面的实际欧氏距离

步骤3:间隔最大化的目标

最优超平面需满足:所有样本的几何间隔中最小的那个(即“最小间隔”)尽可能大

设数据集的最小几何间隔为 γ=min⁡iγi\gamma = \min_i \gamma_iγ=miniγi,目标是最大化 γ\gammaγ
max⁡w,bγs.t.yi(w⋅xi+b)∥w∥≥γ(∀i)(3)\max_{\boldsymbol{w}, b} \gamma \quad \text{s.t.} \quad \frac{y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b)}{\|\boldsymbol{w}\|} \geq \gamma \quad (\forall i) \tag{3}w,bmaxγs.t.wyi(wxi+b)γ(i)(3)

步骤4:简化目标函数

由于超平面 (w,b)(\boldsymbol{w}, b)(w,b)(kw,kb)(k\boldsymbol{w}, kb)(kw,kb)k>0k>0k>0)表示同一平面,可通过缩放将最小函数间隔归一化为1(即 yi(w⋅xi+b)≥1y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) \geq 1yi(wxi+b)1),此时最小几何间隔 γ=1∥w∥\gamma = \frac{1}{\|\boldsymbol{w}\|}γ=w1

因此,最大化 γ\gammaγ 等价于最小化 ∥w∥\|\boldsymbol{w}\|w(或 12∥w∥2\frac{1}{2}\|\boldsymbol{w}\|^221w2,便于求导),目标函数简化为:
min⁡w,b12∥w∥2s.t.yi(w⋅xi+b)≥1(∀i)(4)\min_{\boldsymbol{w}, b} \frac{1}{2}\|\boldsymbol{w}\|^2 \quad \text{s.t.} \quad y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) \geq 1 \quad (\forall i) \tag{4}w,bmin21w2s.t.yi(wxi+b)1(i)(4)

二、通过拉格朗日乘子法求解优化问题

式(4)是带不等式约束的凸优化问题,可通过拉格朗日乘子法转化为对偶问题求解。

步骤5:构建拉格朗日函数

引入拉格朗日乘子 αi≥0\alpha_i \geq 0αi0(对应每个约束条件),拉格朗日函数为:
L(w,b,α)=12∥w∥2−∑i=1Nαi[yi(w⋅xi+b)−1](5)\mathcal{L}(\boldsymbol{w}, b, \boldsymbol{\alpha}) = \frac{1}{2}\|\boldsymbol{w}\|^2 - \sum_{i=1}^N \alpha_i \left[ y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) - 1 \right] \ (5)L(w,b,α)=21w2i=1Nαi[yi(wxi+b)1] (5)

  • 第一项是原目标函数;
  • 第二项是约束条件的惩罚项(αi≥0\alpha_i \geq 0αi0 确保约束被满足)。
步骤6:求解对偶问题(KKT条件)

凸优化的对偶问题需满足KKT(Karush-Kuhn-Tucker)条件,即:

  1. 原始可行性:yi(w⋅xi+b)≥1y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) \geq 1yi(wxi+b)1
  2. 对偶可行性:αi≥0\alpha_i \geq 0αi0
  3. 互补松弛:αi[yi(w⋅xi+b)−1]=0\alpha_i \left[ y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) - 1 \right] = 0αi[yi(wxi+b)1]=0(若 αi>0\alpha_i > 0αi>0,则约束取等号,即 yi(w⋅xi+b)=1y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) = 1yi(wxi+b)=1);
  4. 梯度为零:∇wL=0\nabla_{\boldsymbol{w}} \mathcal{L} = 0wL=0∇bL=0\nabla_b \mathcal{L} = 0bL=0
步骤7:求导化简(核心推导)

w\boldsymbol{w}wbbb 求偏导并令其为0:

  • w\boldsymbol{w}w 求导:
    ∇wL=w−∑i=1Nαiyixi=0⟹w=∑i=1Nαiyixi(6)\nabla_{\boldsymbol{w}} \mathcal{L} = \boldsymbol{w} - \sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i = 0 \implies \boldsymbol{w} = \sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i \ (6)wL=wi=1Nαiyixi=0w=i=1Nαiyixi (6)
    w\boldsymbol{w}w 可由样本的线性组合表示,系数为 αiyi\alpha_i y_iαiyi

  • bbb 求导:
    ∇bL=−∑i=1Nαiyi=0⟹∑i=1Nαiyi=0(7)\nabla_b \mathcal{L} = -\sum_{i=1}^N \alpha_i y_i = 0 \implies \sum_{i=1}^N \alpha_i y_i = 0 \ (7)bL=i=1Nαiyi=0i=1Nαiyi=0 (7)

步骤8:对偶问题的目标函数

将式(6)代入拉格朗日函数(5),化简对偶问题:

  1. 展开 12∥w∥2\frac{1}{2}\|\boldsymbol{w}\|^221w2
    12∥w∥2=12(∑i=1Nαiyixi)⋅(∑j=1Nαjyjxj)=12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)\frac{1}{2}\|\boldsymbol{w}\|^2 = \frac{1}{2} \left( \sum_{i=1}^N \alpha_i y_i \boldsymbol{x}_i \right) \cdot \left( \sum_{j=1}^N \alpha_j y_j \boldsymbol{x}_j \right) = \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j)21w2=21(i=1Nαiyixi)(j=1Nαjyjxj)=21i=1Nj=1Nαiαjyiyj(xixj)

  2. 展开惩罚项:
    ∑i=1Nαi[yi(w⋅xi+b)−1]=∑i=1Nαiyi(w⋅xi)+∑i=1Nαiyib−∑i=1Nαi\sum_{i=1}^N \alpha_i \left[ y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) - 1 \right] = \sum_{i=1}^N \alpha_i y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i) + \sum_{i=1}^N \alpha_i y_i b - \sum_{i=1}^N \alpha_ii=1Nαi[yi(wxi+b)1]=i=1Nαiyi(wxi)+i=1Nαiyibi=1Nαi
    由式(6)和(7),第二项 ∑αiyib=b⋅0=0\sum \alpha_i y_i b = b \cdot 0 = 0αiyib=b0=0,第一项:
    ∑i=1Nαiyi(w⋅xi)=∑i=1Nαiyi(∑j=1Nαjyjxj⋅xi)=∑i=1N∑j=1Nαiαjyiyj(xi⋅xj)\sum_{i=1}^N \alpha_i y_i (\boldsymbol{w} \cdot \boldsymbol{x}_i) = \sum_{i=1}^N \alpha_i y_i \left( \sum_{j=1}^N \alpha_j y_j \boldsymbol{x}_j \cdot \boldsymbol{x}_i \right) = \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j)i=1Nαiyi(wxi)=i=1Nαiyi(j=1Nαjyjxjxi)=i=1Nj=1Nαiαjyiyj(xixj)

  3. 合并化简拉格朗日函数:
    L=12∑i,jαiαjyiyj(xi⋅xj)−[∑i,jαiαjyiyj(xi⋅xj)−∑iαi]\mathcal{L} = \frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j) - \left[ \sum_{i,j} \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j) - \sum_i \alpha_i \right]L=21i,jαiαjyiyj(xixj)[i,jαiαjyiyj(xixj)iαi]
    =−12∑i,jαiαjyiyj(xi⋅xj)+∑iαi= -\frac{1}{2} \sum_{i,j} \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j) + \sum_i \alpha_i=21i,jαiαjyiyj(xixj)+iαi

因此,对偶问题转化为最大化以下函数( subject to 约束 αi≥0\alpha_i \geq 0αi0∑αiyi=0\sum \alpha_i y_i = 0αiyi=0):
max⁡α(∑i=1Nαi−12∑i=1N∑j=1Nαiαjyiyj(xi⋅xj))(8)\max_{\boldsymbol{\alpha}} \left( \sum_{i=1}^N \alpha_i - \frac{1}{2} \sum_{i=1}^N \sum_{j=1}^N \alpha_i \alpha_j y_i y_j (\boldsymbol{x}_i \cdot \boldsymbol{x}_j) \right) \tag{8}αmax(i=1Nαi21i=1Nj=1Nαiαjyiyj(xixj))(8)

步骤9:求解超平面参数

通过对偶问题求出 α\boldsymbol{\alpha}α 后,可计算:

  • w\boldsymbol{w}w:由式(6),w=∑αiyixi\boldsymbol{w} = \sum \alpha_i y_i \boldsymbol{x}_iw=αiyixi
  • bbb:由互补松弛条件,对 αi>0\alpha_i > 0αi>0 的样本(即支持向量),yi(w⋅xi+b)=1y_i(\boldsymbol{w} \cdot \boldsymbol{x}_i + b) = 1yi(wxi+b)=1,解得:
    b=yi−w⋅xi=yi−∑j=1Nαjyj(xj⋅xi)(9)b = y_i - \boldsymbol{w} \cdot \boldsymbol{x}_i = y_i - \sum_{j=1}^N \alpha_j y_j (\boldsymbol{x}_j \cdot \boldsymbol{x}_i) \tag{9}b=yiwxi=yij=1Nαjyj(xjxi)(9)
步骤10:分类决策函数

对新样本 x\boldsymbol{x}x,分类结果由超平面的符号决定:
f(x)=sign(w⋅x+b)=sign(∑i=1Nαiyi(xi⋅x)+b)(10)f(\boldsymbol{x}) = \text{sign}(\boldsymbol{w} \cdot \boldsymbol{x} + b) = \text{sign}\left( \sum_{i=1}^N \alpha_i y_i (\boldsymbol{x}_i \cdot \boldsymbol{x}) + b \right) \ (10)f(x)=sign(wx+b)=sign(i=1Nαiyi(xix)+b) (10)

三、数学案例:线性可分数据的SVM求解

设二维数据集如下(线性可分):

  • 正类(y=+1y=+1y=+1):x1=(3,3)T\boldsymbol{x}_1 = (3, 3)^Tx1=(3,3)Tx2=(4,3)T\boldsymbol{x}_2 = (4, 3)^Tx2=(4,3)T
  • 负类(y=−1y=-1y=1):x3=(1,1)T\boldsymbol{x}_3 = (1, 1)^Tx3=(1,1)Tx4=(2,1)T\boldsymbol{x}_4 = (2, 1)^Tx4=(2,1)T
步骤1:直观分析

最优超平面应位于两类数据中间,假设支持向量为 x1\boldsymbol{x}_1x1(正类)和 x3\boldsymbol{x}_3x3(负类),即 α1>0,α3>0\alpha_1 > 0, \alpha_3 > 0α1>0,α3>0α2=α4=0\alpha_2 = \alpha_4 = 0α2=α4=0(非支持向量)。

步骤2:代入对偶问题约束

∑αiyi=0\sum \alpha_i y_i = 0αiyi=0
α1⋅1+α3⋅(−1)=0⟹α1=α3(11)\alpha_1 \cdot 1 + \alpha_3 \cdot (-1) = 0 \implies \alpha_1 = \alpha_3 \tag{11}α11+α3(1)=0α1=α3(11)

步骤3:计算对偶目标函数

目标函数式(8)简化为(仅保留 α1,α3\alpha_1, \alpha_3α1,α3):
W(α)=α1+α3−12[α12(x1⋅x1)+α32(x3⋅x3)+2α1α3y1y3(x1⋅x3)]W(\alpha) = \alpha_1 + \alpha_3 - \frac{1}{2} \left[ \alpha_1^2 (x_1 \cdot x_1) + \alpha_3^2 (x_3 \cdot x_3) + 2\alpha_1 \alpha_3 y_1 y_3 (x_1 \cdot x_3) \right]W(α)=α1+α321[α12(x1x1)+α32(x3x3)+2α1α3y1y3(x1x3)]

代入数据:

  • x1⋅x1=32+32=18x_1 \cdot x_1 = 3^2 + 3^2 = 18x1x1=32+32=18x3⋅x3=12+12=2x_3 \cdot x_3 = 1^2 + 1^2 = 2x3x3=12+12=2
  • x1⋅x3=3⋅1+3⋅1=6x_1 \cdot x_3 = 3 \cdot 1 + 3 \cdot 1 = 6x1x3=31+31=6y1y3=1⋅(−1)=−1y_1 y_3 = 1 \cdot (-1) = -1y1y3=1(1)=1
  • α1=α3=α\alpha_1 = \alpha_3 = \alphaα1=α3=α,得:
    W(α)=2α−12[α2⋅18+α2⋅2+2α2⋅(−1)⋅6]W(\alpha) = 2\alpha - \frac{1}{2} \left[ \alpha^2 \cdot 18 + \alpha^2 \cdot 2 + 2\alpha^2 \cdot (-1) \cdot 6 \right]W(α)=2α21[α218+α22+2α2(1)6]
    =2α−12[20α2−12α2]=2α−4α2= 2\alpha - \frac{1}{2} \left[ 20\alpha^2 - 12\alpha^2 \right] = 2\alpha - 4\alpha^2=2α21[20α212α2]=2α4α2
步骤4:最大化对偶函数

W(α)W(\alpha)W(α) 求导并令其为0:
dWdα=2−8α=0⟹α=14\frac{dW}{d\alpha} = 2 - 8\alpha = 0 \implies \alpha = \frac{1}{4}dαdW=28α=0α=41
因此,α1=α3=14\alpha_1 = \alpha_3 = \frac{1}{4}α1=α3=41α2=α4=0\alpha_2 = \alpha_4 = 0α2=α4=0

步骤5:计算 w\boldsymbol{w}wbbb
  • w=α1y1x1+α3y3x3=14⋅1⋅(3,3)+14⋅(−1)⋅(1,1)=(3−14,3−14)=(0.5,0.5)\boldsymbol{w} = \alpha_1 y_1 \boldsymbol{x}_1 + \alpha_3 y_3 \boldsymbol{x}_3 = \frac{1}{4} \cdot 1 \cdot (3,3) + \frac{1}{4} \cdot (-1) \cdot (1,1) = \left( \frac{3-1}{4}, \frac{3-1}{4} \right) = (0.5, 0.5)w=α1y1x1+α3y3x3=411(3,3)+41(1)(1,1)=(431,431)=(0.5,0.5)
  • 由支持向量 x1\boldsymbol{x}_1x1bbby1(w⋅x1+b)=1y_1(\boldsymbol{w} \cdot \boldsymbol{x}_1 + b) = 1y1(wx1+b)=1
    1⋅(0.5⋅3+0.5⋅3+b)=1⟹3+b=1⟹b=−21 \cdot (0.5 \cdot 3 + 0.5 \cdot 3 + b) = 1 \implies 3 + b = 1 \implies b = -21(0.53+0.53+b)=13+b=1b=2
步骤6:验证超平面

超平面方程:0.5x1+0.5x2−2=00.5x_1 + 0.5x_2 - 2 = 00.5x1+0.5x22=0(即 x1+x2=4x_1 + x_2 = 4x1+x2=4)。

  • 正类样本 x1\boldsymbol{x}_1x1 到超平面的距离:∣3+3−4∣0.52+0.52=2\frac{|3+3-4|}{\sqrt{0.5^2 + 0.5^2}} = \sqrt{2}0.52+0.52∣3+34∣=2
  • 负类样本 x3\boldsymbol{x}_3x3 到超平面的距离:∣1+1−4∣0.52+0.52=2\frac{|1+1-4|}{\sqrt{0.5^2 + 0.5^2}} = \sqrt{2}0.52+0.52∣1+14∣=2,满足间隔最大化。

总结

SVM通过间隔最大化确定最优超平面,利用拉格朗日乘子法将原始问题转化为对偶问题,最终仅通过支持向量(αi>0\alpha_i > 0αi>0 的样本)即可求解超平面参数。这一特性使其在高维空间中仍具高效性,且可通过核函数扩展到非线性分类场景。以下将对支持向量机(SVM)的核心公式原理进行逐步骤详细推导,并结合数学案例说明,确保每一步的逻辑和计算过程清晰可追溯。

http://www.dtcms.com/a/333555.html

相关文章:

  • Sklearn 机器学习 手写数字识别 使用K近邻算法做分类
  • Android Studio
  • IO流-转换流
  • MySQL的分析查询语句(EXPLAIN):
  • stream流debug
  • 华硕主板怎样调整风扇转速
  • Redis高级优化实战:从键值设计到集群调优
  • [HDCTF 2023]Normal_Rsa(revenge)
  • 晶振电路的负载电容、电阻参数设计
  • 重新定义城市探索!如何用“城市向导”解锁旅行新体验?
  • PID控制算法
  • Pytest 插件使用指南:让你的测试更高效
  • 中级统计师-会计学基础知识-第一章 账户与复试记账
  • @PreAuthorize(“hasPermission(#resourceId, ‘DATA_ASSET‘, ‘read‘)“)无法识别参数
  • 机器学习案例——《红楼梦》文本分析与关键词提取
  • C语言第八章指针五
  • 国内著名AI搜索优化专家孟庆涛发表《AI搜索内容可信度评估综合指南》
  • AI智能体在软件测试中的应用与未来趋势
  • 快速了解PCA降维
  • exec函数族、线程
  • termios 线程 poll epoll进化 二叉AVL红黑树
  • Redis入门和简介
  • python学习打卡day35
  • 分库分表和sql的进阶用法总结
  • AI客户维护高效解决方案
  • element-plus 如何通过js验证页面的表单
  • 开发避坑指南(27):Vue3中高效安全修改列表元素属性的方法
  • IP地址代理服务避坑指南:如何选择优质的IP地址代理服务公司?
  • 前端设置不同环境高德地图 key 和秘钥(秘钥通过运维统一配置)
  • 六大主流负载均衡算法