【自学笔记】支持向量机(2)——核函数

引入

  核函数的功能是将一组数据映射到更高维的特征空间,这样可以让在低维无法线性分类的数据能够在高维空间下被分类。
  可以证明,如果原始数据是有限的维度,那么一定存在一个高维特征空间使得样本线性可分。

  文章内容由《机器学习》相关内容,网络资源,GPT回答和个人理解组成。

回顾

支持向量机(1)
  在特征空间内划分超平面的模型可以表示为:

f ( x ) = w ⃗ T x ⃗ + b f(x)=\vec{w}^{T}\vec{x}+b f(x)=w Tx +b

  假如我们将特征向量 x x x以某种方式映射到了更高维的空间中,得到的新特征向量记作 ϕ ( x ⃗ ) \phi (\vec{x}) ϕ(x )。那新的模型可以表示为:

f ( x ) = w ⃗ T ϕ ( x ⃗ ) + b f(x)=\vec{w}^{T}\phi (\vec{x})+b f(x)=w Tϕ(x )+b

  于是我们可以改写支持向量机中的命题:

min ⁡ w ⃗ , b ∣ ∣ w ⃗ ∣ ∣ \min_{\vec{w}, b}||\vec{w}|| minw ,b∣∣w ∣∣

s.t. y i ( w ⃗ T ϕ ( x ⃗ i ) + b ) ≥ 1 , i = 1 , 2 , . . . , m y_{i}(\vec{w}^{T}\phi (\vec{x}_{i})+b) \ge 1, i=1,2,...,m yi(w Tϕ(x i)+b)1,i=1,2,...,m

  其对偶命题为:

    g ( α ⃗ ) = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j ϕ ( x ⃗ i ) T ϕ ( x ⃗ j ) g(\vec{\alpha})=\sum_{i=1}^{m}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}\phi (\vec{x}_{i})^{T}\phi (\vec{x}_{j}) g(α )=i=1mαi21i=1mj=1mαiαjyiyjϕ(x i)Tϕ(x j)
   
    max ⁡ α ⃗ g ( α ⃗ ) \max _{\vec{\alpha}}g(\vec{\alpha}) maxα g(α )

s . t . s.t. s.t. α i ≥ 0 \alpha_{i} \ge 0 αi0,   ( i = 1 , . . . , m ) (i=1,...,m) (i=1,...,m)

    ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1mαiyi=0

核函数应用

   由于\phi (\vec{x})的维度可能很高,甚至可能无穷维,上式中的 ϕ ( x ⃗ i ) T ϕ ( x ⃗ j ) \phi (\vec{x}_{i})^{T}\phi (\vec{x}_{j}) ϕ(x i)Tϕ(x j)可能并不好计算。于是我们设想这样一个函数(这被称为核技巧):

κ ( x ⃗ i , x ⃗ j ) = < ϕ ( x ⃗ i ) , ϕ ( x ⃗ j ) > = ϕ ( x ⃗ i ) T ϕ ( x ⃗ j ) \kappa (\vec{x}_{i},\vec{x}_{j})=<\phi(\vec{x}_{i}), \phi(\vec{x}_{j})>=\phi (\vec{x}_{i})^{T}\phi (\vec{x}_{j}) κ(x i,x j)=<ϕ(x i),ϕ(x j)>=ϕ(x i)Tϕ(x j)

   这个函数的意义是我们直接研究 ϕ ( x ⃗ i ) \phi (\vec{x}_{i}) ϕ(x i) ϕ ( x ⃗ j ) \phi (\vec{x}_{j}) ϕ(x j)的内积,而不直接计算两者的具体值。于是问题转化为了:

    g ( α ⃗ ) = ∑ i = 1 m α i − 1 2 ∑ i = 1 m ∑ j = 1 m α i α j y i y j κ ( x ⃗ i , x ⃗ j ) g(\vec{\alpha})=\sum_{i=1}^{m}\alpha _{i}-\frac{1}{2} \sum_{i=1}^{m}\sum_{j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}\kappa (\vec{x}_{i},\vec{x}_{j}) g(α )=i=1mαi21i=1mj=1mαiαjyiyjκ(x i,x j)
   
    max ⁡ α ⃗ g ( α ⃗ ) \max _{\vec{\alpha}}g(\vec{\alpha}) maxα g(α )

s . t . s.t. s.t. α i ≥ 0 \alpha_{i} \ge 0 αi0,   ( i = 1 , . . . , m ) (i=1,...,m) (i=1,...,m)

    ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1mαiyi=0

   对于不同的 ϕ ( ⋅ ) \phi(\cdot ) ϕ(),显然对应着不同的 κ ( ⋅ , ⋅ ) \kappa (\cdot,\cdot) κ(,),选定合适的 ϕ ( ⋅ ) \phi(\cdot ) ϕ()后可以提前求出 κ ( ⋅ , ⋅ ) \kappa (\cdot,\cdot) κ(,),就可以减少计算量。
   基于上述求解后得到:

f ( x ) = w ⃗ T ϕ ( x ⃗ ) + b f(x)=\vec{w}^{T}\phi (\vec{x})+b f(x)=w Tϕ(x )+b
    = ∑ i = 1 m α i y i ϕ ( x ⃗ i ) T ϕ ( x ⃗ ) + b =\sum_{i=1}^{m}\alpha _{i}y_{i}\phi(\vec{x}_{i})^{T}\phi(\vec{x}) + b =i=1mαiyiϕ(x i)Tϕ(x )+b
    = ∑ i = 1 m α i y i κ ( x ⃗ , x ⃗ i ) =\sum_{i=1}^{m}\alpha _{i}y_{i}\kappa (\vec{x},\vec{x}_{i}) =i=1mαiyiκ(x ,x i)

这里 x ⃗ \vec{x} x 是测试数据点, x i x_{i} xi为每一个训练数据点

   上式显示出模型最优解可以通过训练样本的核函数展开,被称为支持向量展式

寻找核函数

  接下来就是确定一个合适的核函数。合适的核函数是否一定存在呢?什么样的函数适合作核函数呢?我们有以下定理:
在这里插入图片描述

  对称性很好理解,而半正定性则有以下原因:
在这里插入图片描述
  概括以下就是保持原有问题的凸性不变,维持束缚条件,保证参数的合理性和收敛性。(个人理解)

  需要注意的是,在不知道特征映射的形式时,我们是无法知道什么样的核函数是合适的。如果核函数选择不当,将会成为影响模型性能的最大变数。

  常用的核函数有:

名称表达式参数用途&补充
Linear Kernel(线性核函数) κ ( x ⃗ i , x ⃗ j ) = x ⃗ i T x ⃗ j \kappa (\vec{x}_{i},\vec{x}_{j})=\vec{x}_{i}^{T}\vec{x}_{j} κ(x i,x j)=x iTx j不进行任何映射,适用于线性可分的数据。
Polynomial Kernel(多项式核) κ ( x ⃗ i , x ⃗ j ) = ( x ⃗ i T x ⃗ j + c ) d \kappa (\vec{x}_{i},\vec{x}_{j})=(\vec{x}_{i}^{T}\vec{x}_{j}+c)^{d} κ(x i,x j)=(x iTx j+c)d d ≥ 1 d \ge 1 d1为多项式的次数用于捕捉数据的非线性关系。
Gaussian Kernel(高斯核) κ ( x ⃗ i , x ⃗ j ) = e x p ( − ∣ ∣ x ⃗ i − x ⃗ j ∣ ∣ 2 2 σ 2 ) \kappa (\vec{x}_{i},\vec{x}_{j})=exp(-\frac{\mid \mid \vec{x}_{i}-\vec{x}_{j}\mid \mid ^{2}}{2\sigma ^{2}} ) κ(x i,x j)=exp(2σ2∣∣x ix j2) σ > 0 \sigma > 0 σ>0为高斯核的带宽控制数据点的局部影响。非常强大的非线性核函数,常用于复杂的分类和回归任务。
Laplacian Kernel(拉普拉斯核) κ ( x ⃗ i , x ⃗ j ) = e x p ( − ∣ ∣ x ⃗ i − x ⃗ j ∣ ∣ σ ) \kappa (\vec{x}_{i},\vec{x}_{j})=exp(-\frac{\mid \mid \vec{x}_{i}-\vec{x}_{j}\mid \mid }{\sigma} ) κ(x i,x j)=exp(σ∣∣x ix j∣∣) σ > 0 \sigma > 0 σ>0拉普拉斯核完全等价于指数核,唯一的区别在于前者对参数的敏感性降低,也是一种径向基核函数。
Exponential Kernel(指数核) κ ( x ⃗ i , x ⃗ j ) = e x p ( − ∣ ∣ x ⃗ i − x ⃗ j ∣ ∣ 2 σ 2 ) \kappa (\vec{x}_{i},\vec{x}_{j})=exp(-\frac{\mid \mid \vec{x}_{i}-\vec{x}_{j}\mid \mid }{2\sigma^{2}} ) κ(x i,x j)=exp(2σ2∣∣x ix j∣∣) σ > 0 \sigma > 0 σ>0指数核函数就是高斯核函数的变种,它仅仅是将向量之间的L2距离调整为L1距离,这样改动会对参数的依赖性降低,但是适用范围相对狭窄。
Sigmoid Kernel(Sigmoid 核) κ ( x ⃗ i , x ⃗ j ) = t a n h ( β x ⃗ i T x ⃗ j + θ ) \kappa (\vec{x}_{i},\vec{x}_{j})=tanh(\beta\vec{x}_{i}^{T}\vec{x}_{j}+\theta) κ(x i,x j)=tanh(βx iTx j+θ) β > 0 \beta>0 β>0 θ < 0 \theta<0 θ<0这个核函数试图模仿神经网络中的Sigmoid激活函数,但在某些情况下可能不会产生半正定核矩阵。
Laplace核 κ ( x ⃗ i , x ⃗ j ) = e x p ( − γ ∣ ∣ x ⃗ i − x ⃗ j ∣ ∣ ) \kappa (\vec{x}_{i},\vec{x}_{j})=exp(-\gamma\mid\mid\vec{x}_{i}-\vec{x}_{j}\mid\mid) κ(x i,x j)=exp(γ∣∣x ix j∣∣)与高斯核类似,但使用Laplace分布而非高斯分布。
ANOVA Kernel(方差分析内核) κ ( x ⃗ i , x ⃗ j ) = ∏ t = 1 n e x p ( − γ ( x i , t − x j , t ) 2 ) \kappa (\vec{x}_{i},\vec{x}_{j})=\prod_{t=1}^{n}exp(-\gamma(x_{i,t}-x_{j,t})^{2}) κ(x i,x j)=t=1nexp(γ(xi,txj,t)2)主要用于分析方差(ANOVA)问题
Wave Kernel(波形核) κ ( x ⃗ i , x ⃗ j ) = e x p ( − 1 2 σ 2 s i n 2 ( π L ∣ x i − x j ∣ ) ) \kappa (\vec{x}_{i},\vec{x}_{j})=exp(-\frac{1}{2\sigma ^{2}}sin^{2}(\frac{\pi }{L}\mid x_{i}-x_{j}\mid)) κ(x i,x j)=exp(2σ21sin2(Lπxixj)) σ > 0 \sigma >0 σ>0控制相似性衰减的速度, L L L
L 是周期长度适用于语音处理场景
Log Kernel(对数核) κ ( x ⃗ i , x ⃗ j ) = l o g ( 1 + γ ∣ ∣ x ⃗ i − x ⃗ j ∣ ∣ 2 ) \kappa (\vec{x}_{i},\vec{x}_{j})=log(1+\gamma\mid\mid\vec{x}_{i}-\vec{x}_{j}\mid\mid^{2}) κ(x i,x j)=log(1+γ∣∣x ix j2)一般在图像分割上经常被使用

  一般根据经验,文本数据通常用线性核,情况不明时可以采用高斯核。

  我们还可以通过变形与组合已有核函数的方式来创造新的核函数,如:

  (1)若 κ 1 \kappa_{1} κ1 κ 2 \kappa_{2} κ2为核函数,则对任意正数 γ 1 , γ 2 \gamma_{1},\gamma_{2} γ1,γ2,其线性组合也是核函数。

γ 1 κ 1 + γ 2 κ 2 \gamma_{1}\kappa_{1}+\gamma_{2}\kappa_{2} γ1κ1+γ2κ2

  (2)若 κ 1 \kappa_{1} κ1 κ 2 \kappa_{2} κ2为核函数,则核函数的直积也为核函数。

κ 1 ⊗ κ 2 ( x ⃗ , z ⃗ ) = κ 1 ( x ⃗ , z ⃗ ) κ 2 ( x ⃗ , z ⃗ ) \kappa_{1}\otimes \kappa_{2}(\vec{x},\vec{z})=\kappa_{1}(\vec{x},\vec{z})\kappa_{2}(\vec{x},\vec{z}) κ1κ2(x ,z )=κ1(x ,z )κ2(x ,z )

  (3)若 κ 1 \kappa_{1} κ1为核函数,则对任意函数 g ( x ⃗ ) g(\vec{x}) g(x ),如下定义的 κ \kappa κ也是核函数。

κ ( x ⃗ , z ⃗ ) = g ( x ⃗ ) κ 1 ( x ⃗ , z ⃗ ) g ( z ⃗ ) \kappa(\vec{x},\vec{z})=g(\vec{x})\kappa_{1}(\vec{x},\vec{z})g(\vec{z}) κ(x ,z )=g(x )κ1(x ,z )g(z )

总结

  核函数的使用使得机器学习算法能够在复杂的特征空间中进行操作,而无需显式地计算该空间中的特征值,从而避免了“维度灾难”。核方法允许算法在高维空间中工作,同时保留了数据的原始维度,这在处理大量数据和高维数据集时非常有用。

  在实际应用中,选择合适的核函数对于模型的性能至关重要,这通常取决于问题的特性以及数据的分布和结构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/142554.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

道路驾驶视角人车检测数据集 16000张 带标注 voc yolo

随着智能驾驶技术和车辆辅助系统的快速发展&#xff0c;道路驾驶视角下的多目标检测成为了保障行车安全的关键技术之一。为了提高自动驾驶车辆以及辅助驾驶系统的性能&#xff0c;需要大量的高质量标注数据来训练这些系统。本数据集旨在为道路驾驶视角下的人车检测提供高质量的…

linux 操作系统下dd 命令介绍和使用案例

linux 操作系统下dd 命令介绍和使用案例 1. dd 命令简介 dd 命令是一个功能强大的 Linux 工具,用于转换和复制文件。它的主要用途包括: 创建引导盘备份和恢复磁盘分区创建磁盘镜像清除磁盘数据测试读写性能 dd 命令的语法与大多数 Linux 命令有所不同,使用 optionvalue 的形…

[YM]模板-顺序表

概念&#xff1a; 顺序表是一种线性表&#xff0c;作为线性表的一种&#xff0c;它是用一段物理地址连续的存储单元依次存储数据元素的线性结构 模板&#xff1a; typedef int T; typedef struct Node{T *data;int last;int MaxSize; }*LinearList; //1 初始化顺序表 int Ini…

【C++学习】 IO 流揭秘:高效数据读写的最佳实践

✨ 今朝有酒今朝醉&#xff0c;明日愁来明日愁 &#x1f30f; &#x1f4c3;个人主页&#xff1a;island1314 &#x1f525;个人专栏&#xff1a;C学习 ⛺️ 欢迎关注&#xff1a;&#x1f44d;点赞 &#x1f442;&#x1f3f…

Java之线程篇四

目录 volatile关键字 volatile保证内存可见性 代码示例 代码示例2-&#xff08;volatile&#xff09; volatile不保证原子性 synchronized保证内存可见性 wait()和notify() wait()方法 notify() 理解notify()和notifyAll() wait和sleep的对比 volatile关键字 volati…

基于yolov8的茶叶病害检测系统python源码+onnx模型+评估指标曲线+精美GUI界面

【算法介绍】 基于YOLOv8的茶叶病害检测系统&#xff0c;是利用深度学习技术&#xff0c;特别是YOLOv8这一先进的目标检测算法&#xff0c;来精准识别和监测茶叶生长过程中出现的各种病害。该系统通过无人机、地面机器人或固定摄像头等设备&#xff0c;定期采集茶园的高分辨率…

MATLAB窗口操作常用命令

MATLAB窗口操作常用命令 命令功能clc清除窗口命令clear commandclf清除图形对象(窗口)clear清除工作区所有变量 释放内存clear all清除工作区的所有变量和函数type显示指定文件的所有内容与CMD命令类似dir查看当前工作文件夹中的内容与CMD命令类似save保存工作区或工作区中任何…

多维度智能体验:引领未来的RAG型知识图谱数字

随着人工智能技术的发展&#xff0c;传统的数字人已逐渐普及&#xff0c;但大多数仍然局限于简单的文本回复或预设答案&#xff0c;缺乏深入的语义理解和个性化互动能力&#xff0c;难以应对复杂、多维度的问题交互。不同于传统的数字人&#xff0c;英智知识图谱RAG型数字人提供…

.NET源码的在线探索:source.dot.net网站深度解析

一个在线的.NET源码查询网站为https://source.dot.net/。这个网站为开发者提供了便捷的.NET源码查询服务&#xff0c;无需从GitHub等代码托管平台下载整个源代码库&#xff0c;即可在线浏览和查询.NET框架及相关项目的源代码。 以下是该网站的一些主要功能特性&#xff1a; …

vue node node-sass sass-loader 版本 对应 与 兼容

警告&#xff1a; LibSass 和 Node Sass 已弃用。虽然它们将继续无限期地接收维护版本&#xff0c;但没有计划添加其他功能或与任何新的 CSS 或 Sass 功能兼容。仍在使用它的项目应该转移到 Dart Sass。 sass Sass是一种预处理器脚本语言&#xff0c;可以解释或编译成…

英语学习之vegetable

这里写目录标题 不熟悉的单词熟悉的句型 不熟悉的单词 brocolli &#xff08;花&#xff09;椰菜&#xff1b;西兰花&#x1f966; spinach 菠菜 aubergine 茄子&#x1f346; cabbage 卷心菜 zucchini/courgette 西葫芦 parsnip 欧洲防风&#xff0c;民间俗称“芹菜萝卜” …

[240917] Docker vs Podman:容器化的终极对决 | Kali Linux 2024.3 版本发布

目录 Docker &#x1f40b; vs &#x1f9ad; Podman: 容器化领域的终极对决一、容器化简介二、&#x1f40b; Docker 是什么&#xff1f;三、&#x1f9ad; Podman 是什么&#xff1f;四、架构差异1. Docker 的客户端-服务器模型2. Podman 的无守护进程架构 五、安全注意事项1…

苹果 2024 秋季新品发布会一文汇总:iPhone 16 / Pro 登场、手表耳机齐换代

✌ 作者名字&#xff1a;高峰君主 &#x1f4eb; 如果文章知识点有错误的地方&#xff0c;请指正&#xff01;和大家一起学习&#xff0c;一起进步&#x1f440; &#x1f4ac; 人生格言&#xff1a;没有我不会的语言&#xff0c;没有你过不去的坎儿。&#x1f4ac; &#x1f5…

2024年最新版本spss 27中文版新功能特色及下载安装激活教程

在智能设备领域&#xff0c;一款名为SPSS 27.0的专业统计软件正因其卓越性能和革新功能在市场上引发热议。这款老牌统计工具在历经多次迭代后&#xff0c;不仅保持了其在科研和教育领域的核心地位&#xff0c;还通过增强用户体验和引入先进功能&#xff0c;重新定义了数据分析的…

数据爬虫中遇到验证码的解决方法

在数据爬虫中遇到验证码是一个常见且复杂的问题&#xff0c;验证码的存在主要是为了阻止自动化工具&#xff08;如爬虫&#xff09;对网站进行过度访问或数据抓取&#xff0c;以保护网站的安全性和数据的准确性。 一、验证码的基本概念与类型 验证码&#xff08;CAPTCHA&…

Java的输入输出

秋招笔试很多都是要自己写输出输出的&#xff0c;所以对常见的整理一下&#xff0c;后续也会持续更新的~~~ 目录 1.java中的Scanner类 1.1next()方法和nextLine()方法的区别 1. next() 方法 示例 2. nextLine() 方法 示例 主要区别 使用场景 2.print类 3.常用的转换…

JAVA算法数据结构第一节稀疏矩阵

一、稀疏矩阵介绍&#xff1a; 稀疏矩阵是一种特殊类型的矩阵&#xff0c;其中大部分元素都是零。在处理这类矩阵时&#xff0c;如果仍然使用标准的矩阵存储方式&#xff08;即传统的二维数组&#xff09;&#xff0c;则会浪费大量的存储空间来保存零值。为了提高存储效率以及…

iptables部署使用

1、Iptables-server安装确认 [rootlocalhost ~]$ rpm -qa|grep iptables #查看安装iptables iptables-1.4.21-18.0.1.el7.centos.x86_64 [rootlocalhost ~]$ rpm -ql iptables #查看iptables相关文件 2、安装iptables-services [rootlocalhost ~]$ yum list all|grep iptab…

Ubuntu24.04 安装opencv4.10

Ubuntu24.04 安装opencv4.10 一、下载OpenCV二、更新系统&#xff0c;安装必要的包1、“E: unable to locate libjasper-dev"的解决方法2、没有公钥&#xff0c;无法验证下列签名 :NO_PUBKEY 的解决方法 三、配置&#xff0c;使用cmake工具1、新建build目录2、在build中&a…

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的?

【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的&#xff1f; 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的&#xff1f; 文章目录 【梯度下降|链式法则】卷积神经网络中的参数是如何传输和更新的&#xff1f;1. 什么是梯度&#xff1f;2.梯度…