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

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

支持向量机下

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

核心思想

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

比如以下的样本在一维空间不可分,但是映射到二维空间变得线性可分:
在这里插入图片描述

关键步骤
  • 特征映射(Feature Mapping)
    定义映射函数 ϕ:Rd→RD\phi: \mathbb{R}^d \to \mathbb{R}^Dϕ:RdRDD≫dD \gg dDd),将原始特征 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=xiSVλ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+XiXj)2=1+Xi12Xj12+2Xi1Xj1Xi2Xj2+Xi22Xj22+2Xi1Xj1+2Xi2Xj2=[1Xi122Xi1Xi2Xi222Xi12Xi2][1Xj122Xj1Xj2Xj222Xj12Xj2]=φ(Xi)φ(Xj),where φ(X)=[1X122X1X2X222X12X2]

    • 常用核函数

      • 线性核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σ2xixj2)
      • 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=1nλi21i,j=1nλiλjyiyjK(xi,xj)0λiC,i=1nλ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)=xiSVλ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=ykxiSVλiyiK(xi,xk),0<λk<C

  • 算法流程:

    1. 选择核函数
    2. 选择一个C的值
    3. 求解二次规划问题,得到 λi\lambda_iλibbb
    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σ2xixj2)
    其中:

    • σ\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(简洁)
泛化性能在典型任务中表现良好同样在多数任务中表现优越,且对噪声更鲁棒
http://www.xdnf.cn/news/1098595.html

相关文章:

  • 大数据时代UI前端的智能化升级:基于机器学习的用户意图预测
  • Qt开发:QtConcurrent介绍和使用
  • RocksDB 与 ZenFS:原理、特性及在科研与工程中的应用初步探索
  • 配置双网卡Linux主机作为路由器(连接NAT网络和仅主机模式网络)
  • systemd服务脚本详解与管理命令
  • vue3 td 标签优化时间显示
  • LFU 缓存
  • 【笔记分享】集合的基数、群、环、域
  • QT解析文本框数据——概述
  • 实现一个点击输入框可以弹出的数字软键盘控件 qt 5.12
  • 文件系统子系统 · 核心问题问答精要
  • 【性能测试】jmeter+Linux环境部署和分布式压测,一篇打通...
  • 动态规划疑惑总结
  • Ajax之核心语法详解
  • OpenCV探索之旅:多尺度视觉与形状的灵魂--图像金字塔与轮廓分析
  • 安全访问云端内部应用:用frp的stcp功能解决SSH转发的痛点
  • 【Nginx】Nginx 安装与 Sticky 模块配置
  • 使用Docker将Python项目部署到云端的完整指南
  • 网络安全(初级)(1)
  • 显卡GPU的架构和工作原理
  • QT Android 如何打包大文件到目录下?
  • Android ViewBinding 使用与封装教程​​
  • 【数据结构与算法】数据结构初阶:动态顺序表各种方法(接口函数)复盘与整理
  • 模块三:现代C++工程实践(4篇)第二篇《性能调优:Profile驱动优化与汇编级分析》
  • uniapp滚动组件, HuimayunScroll:高性能移动端滚动组件的设计与实现
  • 深入理解oracle ADG和RAC
  • 【大模型推理论文阅读】Enhancing Latent Computation in Transformerswith Latent Tokens
  • 毫米波雷达守护银发安全:七彩喜跌倒检测仪重构居家养老防线
  • 无人机抗风模块运行与技术难点分析
  • AI 智能体:开启自动化协作新时代