机器学习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(简洁)
泛化性能 在典型任务中表现良好 同样在多数任务中表现优越,且对噪声更鲁棒
相关推荐
科普瑞传感仪器3 小时前
从轴孔装配到屏幕贴合:六维力感知的机器人柔性对位应用详解
前端·javascript·数据库·人工智能·机器人·自动化·无人机
说私域3 小时前
基于开源链动2+1模式AI智能名片S2B2C商城小程序的社群运营创新研究
人工智能·小程序·开源
程序员小灰3 小时前
谷歌AI模型Gemini 3.0 Pro,已经杀疯了!
人工智能·aigc·gemini
杨浦老苏3 小时前
AI驱动的图表生成器Next-AI-Draw.io
人工智能·docker·ai·群晖·draw.io
饭饭大王6663 小时前
深度学习在计算机视觉中的最新进展
人工智能·深度学习·计算机视觉
John_ToDebug3 小时前
浏览器内核的“智变”:从渲染引擎到AI原生操作系统的征途
人工智能·chrome
用户4802151702473 小时前
Transformer 的技术层面
人工智能
std78793 小时前
Intel Arrow Lake Refresh迎来DDR5‑7200 CUDIMM支持,提升内存兼容性
人工智能
小喵要摸鱼3 小时前
【卷积神经网络】卷积层、池化层、全连接层
人工智能·深度学习·cnn
vvoennvv4 小时前
【Python TensorFlow】 TCN-GRU时间序列卷积门控循环神经网络时序预测算法(附代码)
python·rnn·神经网络·机器学习·gru·tensorflow·tcn