机器学习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=1Xi122Xi1Xi2Xi222Xi12Xi21Xj122Xj1Xj2Xj222Xj12Xj2⊤=φ(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 Xi21Xj122 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(简洁)
泛化性能 在典型任务中表现良好 同样在多数任务中表现优越,且对噪声更鲁棒
相关推荐
angered几秒前
「AI 应用 / AI Agent」行业日报 · 2026-09-04
人工智能·ai编程
深海鱼肝油ya2 分钟前
向量数据库Elasticsearch(一)
人工智能·elasticsearch·向量数据库·es数据库增加索引·es数据库相似度查询·knn查询
residual_fan2 分钟前
持续对比强化学习(Continual Contrastive Reinforcement Learning)论文分享
人工智能·算法·数据挖掘·数据分析
深维AI随笔5 分钟前
《构建之法》| 第六章敏捷流程:敏捷不是“快“,而是“响应变化“,AI时代怎么敏捷
人工智能·敏捷流程·构建之法
Raas1008 分钟前
AI网关和LLM网关区别?MAI Gateway(魔芋企业级AI网关)企业级方案对比指南
大数据·人工智能·gateway·mai gateway·企业级产品
imbackneverdie11 分钟前
国内有哪些比较全面的生物医学相关数据库?
大数据·数据库·人工智能·ai·信息可视化·aigc·科研
心易行者17 分钟前
Python自动化测试7步落地法:用python在线运行省掉90%环境配置时间
java·开发语言·人工智能·python·log4j·ai编程
茗鹤APS和MES17 分钟前
工业排产:AI可赋能,APS不可替代
人工智能·深度学习·机器学习
东离与糖宝19 分钟前
深度拆解Claude Code架构:不靠总管,靠边界搭建编程Agent
人工智能
Sophnet云平台20 分钟前
从 IT 自嗨到业务可用,制造企业 AI 平台的落地实践
大数据·人工智能·llm·制造·token·云平台