机器学习13——支持向量机下

支持向量机下

非线性支持向量机(Non-linear SVMs)详解

核心思想

当数据在原始空间线性不可分时,通过**核技巧(Kernel Trick)**将数据映射到高维特征空间,使其在该空间中线性可分。

比如以下的样本在一维空间不可分,但是映射到二维空间变得线性可分:

关键步骤
  • 特征映射(Feature Mapping)

    定义映射函数 ϕ:Rd→RD\phi: \mathbb{R}^d \to \mathbb{R}^Dϕ:Rd→RD(D≫dD \gg dD≫d),将原始特征 x\mathbf{x}x 映射到高维空间 ϕ(x)\phi(\mathbf{x})ϕ(x)。

  • 映射后,分类器函数变成了:
    g(x)=wTϕ(x)+b=∑xi∈SVλiyiϕ(xi)ϕ(x)+b g(x)=w^T \phi(x)+b=\sum_{x_i \in S V} \lambda_i y_i \phi\left(x_i\right) \phi(x)+b g(x)=wTϕ(x)+b=xi∈SV∑λiyiϕ(xi)ϕ(x)+b

  • 但是我们其实并不需要找到这个映射函数,然后将样本映射到高维空间后做内积!!我们可以用一个Kernel Trick:

    • 核函数(Kernel Function)

      直接计算高维空间的内积,避免显式映射。也就是我们可以在样本空间(原空间维度)下计算高维下样本的内积结果:
      K(xi,xj)=ϕ(xi)Tϕ(xj) K(\mathbf{x}_i, \mathbf{x}_j) = \phi(\mathbf{x}_i)^T \phi(\mathbf{x}_j) K(xi,xj)=ϕ(xi)Tϕ(xj)

    • 示例:

      • 一个二维空间样本:x=[x1x2];\mathrm{x}=\left[\begin{array}{ll}x_1 & x_2\end{array}\right] ;x=[x1x2];

      • 让核函数K(xi,xj)=(1+xiTxj)2K\left(\mathrm{x}{\mathrm{i}}, \mathrm{x}{\mathrm{j}}\right)=\left(1+\mathrm{x}{\mathrm{i}}^{\mathrm{T}} \mathrm{x}{\mathrm{j}}\right)^2K(xi,xj)=(1+xiTxj)2,即K(xi,xj)=φ(xi)Tφ(xj)K\left(\mathrm{x}{\mathrm{i}}, \mathrm{x}{\mathrm{j}}\right)=\varphi\left(\mathrm{x}{\mathrm{i}}\right)^{\mathrm{T}} \varphi\left(\mathrm{x}{\mathrm{j}}\right)K(xi,xj)=φ(xi)Tφ(xj)

      • 我们有:
        K(Xi,Xj)=(1+Xi⊤Xj)2=1+Xi12Xj12+2Xi1Xj1Xi2Xj2+Xi22Xj22+2Xi1Xj1+2Xi2Xj2=[1Xi122Xi1Xi2Xi222Xi12Xi2][1Xj122Xj1Xj2Xj222Xj12Xj2]⊤=φ(Xi)⊤φ(Xj),where φ(X)=[1X122X1X2X222X12X2]⊤ \begin{aligned} K\left(X_i, X_j\right) &= \left(1 + X_i^{\top} X_j \right)^2 \\ &= 1 + X_{i1}^2 X_{j1}^2 + 2 X_{i1} X_{j1} X_{i2} X_{j2} + X_{i2}^2 X_{j2}^2 + 2 X_{i1} X_{j1} + 2 X_{i2} X_{j2} \\ &= \left[ \begin{array}{llll} 1 & X_{i1}^2 & \sqrt{2} X_{i1} X_{i2} & X_{i2}^2 & \sqrt{2} X_{i1} & \sqrt{2} X_{i2} \end{array} \right] \left[ \begin{array}{llll} 1 & X_{j1}^2 & \sqrt{2} X_{j1} X_{j2} & X_{j2}^2 & \sqrt{2} X_{j1} & \sqrt{2} X_{j2} \end{array} \right]^{\top} \\ &= \varphi\left(X_i\right)^{\top} \varphi\left(X_j\right), \quad \text{where } \varphi(X) = \left[ \begin{array}{llllll} 1 & X_1^2 & \sqrt{2} X_1 X_2 & X_2^2 & \sqrt{2} X_1 & \sqrt{2} X_2 \end{array} \right]^{\top} \end{aligned} K(Xi,Xj)=(1+Xi⊤Xj)2=1+Xi12Xj12+2Xi1Xj1Xi2Xj2+Xi22Xj22+2Xi1Xj1+2Xi2Xj2=[1Xi122 Xi1Xi2Xi222 Xi12 Xi2][1Xj122 Xj1Xj2Xj222 Xj12 Xj2]⊤=φ(Xi)⊤φ(Xj),where φ(X)=[1X122 X1X2X222 X12 X2]⊤

    • 常用核函数

      • 线性核 :K(xi,xj)=xiTxjK(\mathbf{x}_i, \mathbf{x}_j) = \mathbf{x}_i^T \mathbf{x}_jK(xi,xj)=xiTxj
      • 多项式核 :K(xi,xj)=(1+xiTxj)pK(\mathbf{x}_i, \mathbf{x}_j) = (1 + \mathbf{x}_i^T \mathbf{x}_j)^pK(xi,xj)=(1+xiTxj)p
      • 高斯核(RBF) :K(xi,xj)=exp⁡(−∥xi−xj∥22σ2)K(\mathbf{x}_i, \mathbf{x}_j) = \exp\left(-\frac{\|\mathbf{x}_i - \mathbf{x}_j\|^2}{2\sigma^2}\right)K(xi,xj)=exp(−2σ2∥xi−xj∥2)
      • Sigmoid核 :K(xi,xj)=tanh⁡(β0xiTxj+β1)K(\mathbf{x}_i, \mathbf{x}_j) = \tanh(\beta_0 \mathbf{x}_i^T \mathbf{x}_j + \beta_1)K(xi,xj)=tanh(β0xiTxj+β1)
  • 对偶问题优化

    使用核函数替换内积,对偶问题变为:
    max⁡λ∑i=1nλi−12∑i,j=1nλiλjyiyjK(xi,xj)s.t.0≤λi≤C,∑i=1nλiyi=0 \begin{aligned} \max_{\lambda} \quad & \sum_{i=1}^n \lambda_i - \frac{1}{2} \sum_{i,j=1}^n \lambda_i \lambda_j y_i y_j K(\mathbf{x}_i, \mathbf{x}j) \\ \text{s.t.} \quad & 0 \leq \lambda_i \leq C, \quad \sum{i=1}^n \lambda_i y_i = 0 \end{aligned} λmaxs.t.i=1∑nλi−21i,j=1∑nλiλjyiyjK(xi,xj)0≤λi≤C,i=1∑nλiyi=0

    求解后得到判别函数:
    g(x)=∑xi∈SVλiyiK(x,xi)+b g(\mathbf{x}) = \sum_{\mathbf{x}_i \in SV} \lambda_i y_i K(\mathbf{x}, \mathbf{x}_i) + b g(x)=xi∈SV∑λiyiK(x,xi)+b

    其中偏移项 bbb 通过支持向量计算:
    b=yk−∑xi∈SVλiyiK(xi,xk),0<λk<C b = y_k - \sum_{\mathbf{x}_i \in SV} \lambda_i y_i K(\mathbf{x}_i, \mathbf{x}_k), \quad 0 < \lambda_k < C b=yk−xi∈SV∑λiyiK(xi,xk),0<λk<C

  • 算法流程:

    1. 选择核函数
    2. 选择一个C的值
    3. 求解二次规划问题 ,得到 λi\lambda_iλi 和 bbb。
    4. 从支持向量构造分类函数
Other issues(使用 SVM 时需要注意的问题)
  1. Choice of kernel(核函数的选择)
  • 在 SVM 中,核函数(kernel function)是关键,它定义了如何将数据从输入空间映射到高维特征空间。
  • 常见的默认核函数是:
    • 高斯核(Gaussian kernel / RBF kernel)
    • 多项式核(Polynomial kernel)
  • 这些核函数在很多通用任务上效果不错,但:
    • 如果效果不佳,就需要更复杂的核函数(例如:字符串核、图核、语义核等),这时候可以结合具体任务设计。
  1. Domain experts can help formulate appropriate similarity measures
  • 专业领域的知识可以帮助设计适合该任务的相似性度量方式,也就是定制核函数;
  • 例如在生物信息学、图像识别等任务中,专家可以帮助构建更合适的核函数结构。
  1. Choice of kernel parameters(核函数参数的选择)
  • 以高斯核为例,其形式是:
    K(xi,xj)=exp⁡(−∥xi−xj∥22σ2) K(x_i, x_j) = \exp\left(-\frac{\|x_i - x_j\|^2}{2\sigma^2}\right) K(xi,xj)=exp(−2σ2∥xi−xj∥2)

    其中:

    • σ\sigmaσ 控制核的"宽度",即数据点之间多远才被认为是"相似"的。
    • 有经验规则认为:σ\sigmaσ 可设为"类别不同的最近样本点之间的距离"。
  • 在缺乏理论依据时,常用:

    • 验证集(validation set)
    • 交叉验证(cross-validation)
      来选择最优参数。
  1. Optimization criterion - Hard margin vs. Soft margin(优化标准)
  • Hard margin SVM
    • 要求所有样本完全分开(间隔大,零误差),适用于数据线性可分的情况;
  • Soft margin SVM
    • 允许一定的分类错误,引入松弛变量,更适用于现实世界中不可分的数据;
  • 实际应用中常常需要:
    • 通过大量试验调整不同参数来选择最优设置,比如 C 值(正则化参数)、核函数和其参数等。
Comparison with Neural Networks(与神经网络的比较)
特性 神经网络(Neural Networks) 支持向量机(SVM)
特征映射 隐藏层将数据映射到低维空间(逐层抽象) 核函数将数据映射到高维空间(甚至无限维)
搜索空间 存在多个局部最小值(非凸优化) 唯一全局最小值(凸优化问题)
训练效率 训练成本高(梯度下降迭代,需调网络结构) 训练效率高(凸优化,理论保证)
分类效率 分类效率高(一次前向传播) 分类效率也高(通过支持向量计算)
模型参数 需要选择隐藏单元数和层数(模型复杂) 只需选择核函数和 C(简洁)
泛化性能 在典型任务中表现良好 同样在多数任务中表现优越,且对噪声更鲁棒
相关推荐
DAWN_T1723 分钟前
Transforms
pytorch·python·机器学习·jupyter·pycharm
一百天成为python专家35 分钟前
python库之jieba 库
开发语言·人工智能·python·深度学习·机器学习·pycharm·python3.11
搬砖的小码农_Sky1 小时前
AI:机器人行业发展现状
人工智能·机器人
深圳市快瞳科技有限公司1 小时前
破解多宠管理难题,端侧AI重新定义宠物智能硬件
人工智能·智能硬件·宠物
Blossom.1181 小时前
用一张“冰裂纹”石墨烯薄膜,让被动散热也能做 AI 推理——基于亚波长裂纹等离激元的零功耗温度-逻辑门
人工智能·深度学习·神经网络·目标检测·机器学习·机器人·语音识别
cylat1 小时前
Day59 经典时序预测模型3
人工智能·python·深度学习·神经网络
萤火虫儿飞飞2 小时前
从基础加热到智能生态跨越:艾芬达用创新重构行业价值边界!
大数据·人工智能·重构
aneasystone本尊2 小时前
学习 RAGFlow 的系统架构
人工智能
Codebee2 小时前
OneCode3.0低代码引擎核心技术:常用动作事件速查手册及注解驱动开发详解
人工智能·架构
AI大模型技术社2 小时前
✅2025全网最具权威深度解析并手写RAG Pipeline
人工智能·llm·掘金·日新计划