超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

文质彬彬
• 阅读 2505

SVM 白板推导| 由最大间隔化目标演化的损失函数推导过程 中白板手推了 SVM 的原理,并介绍了硬间隔核函数的实现原理及公式推导,这一节我来详细介绍下 SVM 中的 Keynel Function。

一直以来我们只知道核函数能让 SVM 在高维空间中实现非线性可分,那么,核函数是在什么情况下被提出的呢?又有哪几种核函数呢?

本篇文章从 2 个角度讲解 SVM 核函数。

  1. 非线性带来高维转换 (模型角度),$X → Φ(X)$
  2. 对偶表示带来内积 (优化角度),$x_i^Tx_j$

从线性可分到线性不可分

如下表中介绍了 感知机 PLA 和 SVM 从线性可分到非线性可分的模型演变结果。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

而在线性不可分的情况下,如果让模型能够变得线性可分?上面已经讲了,从 2 个角度来理解。

1. 非线性带来高维转换,引入 $Φ(X)$

我们知道高维空间中的特征比低维空间中的特征更易线性可分,这是一个定理,是可以证明的,这里只需要知道就行。

那么,我们就可以想到一个办法,就是把在输入空间中的特征通过一个函数映射到高维空间。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

假设输入空间有一个点 $X=(x_1, x_2)$,是二维的,我们通过一个函数 $Φ(X)$ 将其映射到三维空间 $Z=(x_1,x_2,(x_1-x_2)^2)$,从二维到三维空间中的表示为:

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

2. 对偶表示带来内积,引入核函数

从另一个角度来看,之前我们已经推导出 SVM 的损失函数,Hard-Margin SVM 的对偶问题中,最终的优化问题只与 X 的内积有关,也即是支持向量有关。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

由此,我们可以将 X 的内积表示为 $Φ(X)$ 的内积 $Φ(x_i)^TΦ(x_j)$。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

而我们现实生活中,可能 $Φ(X)$ 并不是上面举例的三维或者更高维,而是无限维,那么 的 $Φ(X)$ 将会非常难求。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

换个角度思考,其实我们关心的只是 $Φ(x_i)^TΦ(x_j)$ 的内积,并不关心 $Φ(X)$。有没有一种方法能直接求出内积?答案是有的。

我们可以引入核函数 keynel function。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

如上中的一个核函数,我们可以直接求出 X 的内积,避免在高维空间中求 $Φ(x_i)^TΦ(x_j)$。

针对核函数,我们可以总结出 3 点。

  1. 当在线性不可分的时候,我们可以将输入空间中的特征映射到高维空间,来实现线性可分。
  2. 在高维空间中,由于计算 $Φ(x_i)^TΦ(x_j)$ 非常困难,因为 $Φ(X)$ 可能有无限维。
  3. 因此,我们引入核函数,将原本需要在高维空间计算的内积变成在输入空间计算内积,也能达到一样的效果,从而减小计算。

核函数存在条件

定理: 令 $χ$ 为输入空间,$k(⋅,⋅)$ 是定义在 $χ×χ$上的对称函数,则 $k$ 是核函数当且仅当对于任意数据$D=x_1,x_2,⋯,x_m$,“核矩阵” $K$ 总是半正定的:

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

定理表明,只要一个对称函数所对应的核矩阵半正定,那么它就可以作为核函数使用。事实上,对于一个半正定核矩阵,总能找到一个与之对应的映射 $ϕ(X)$。换言之,任何一个核函数都隐式定义了一个称为 “再生核希尔伯特空间” 的特征空间。

常见的核函数

通过前面的介绍,核函数的选择,对于非线性支持向量机的性能至关重要。但是由于我们很难知道特征映射的形式,所以导致我们无法选择合适的核函数进行目标优化。于是 “核函数的选择” 称为支持向量机的最大变数,我们常见的核函数有以下几种:

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

此外,还可以通过函数组合得到,例如:

  • 若 $k_1$ 和 $k_2$ 为核函数,则对于任意正数 $γ_1,γ_2$,其线性组合也是核函数。$γ_1k_1+γ_2k_2$
  • 若 $k_1$ 和 $k_2$ 为核函数,则核函数的直积也是核函数。$k_1⨂k_2(x,z)=k_1(x,z),k_2(x,z)$
  • 若k_1k1为核函数,则对于任意函数 $g(x)$ 也是核函数。 $k(x,z)=g(x)k_1(x,z)g(z)$

对于非线性的情况,SVM 的处理方法是选择一个核函数 $κ(⋅,⋅)$,通过将数据映射到高维空间,来解决在原始空间中线性不可分的问题。由于核函数的优良品质,这样的非线性扩展在计算量上并没有比原来复杂多少,这一点是非常难得的。

当然,这要归功于核方法——除了 SVM 之外,任何将计算表示为数据点的内积的方法,都可以使用核方法进行非线性扩展。

超详细白板推导:从模型和优化 2 个角度详解 SVM 核函数

点赞
收藏
评论区
推荐文章
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Python进阶者 Python进阶者
3年前
盘点一道Python列表合并的基础题目(列表推导式)
大家好,我是我是皮皮。一、前言前几天Python青铜交流群有个叫【猎影】的粉丝问了一个关于时间转换的问题,这里拿出来给大家分享下,可以看到报错如下图所示。题目:两个列表:运行之后,可以得到答案。如果不加那个判断的话,得到的答案是下图这样的:如果列表中的1和2都是int数据类型的话,直接一个列表推导式可以搞定,如下图所示:方法二:列表推导式使用列表推导式一
找回消失的密钥 --- DFA分析白盒AES算法
一、目标李老板:什么叫白盒AES算法?奋飞:将密钥进行白盒化处理,融入到整个加密过程中,使密钥无法跟踪还原,保障密钥安全。简单的说,就是你可以明明白白的调试整个算法过程,怎么看都像是AES算法,但却是怎么也找不到密钥在哪里?AES算法的介绍请参照DFA(DifferentialFaultAnalysis)的原理和算法推导过程,请参照文末的链接。我们今
Souleigh ✨ Souleigh ✨
5年前
10分钟学会python函数式编程
在这篇文章里,你将学会什么是函数范式以及如何使用Python进行函数式编程。你也将了解列表推导和其它形式的推导。函数范式在命令式范式中,通过为计算机提供一系列指令然后执行它们来完成任务。在执行这些指令时,可以改变某些状态。例如,假设你最初将A设置为5,然后更改A的值。这时在变量内部值的意义上,你改变了A的状态。在函数式范式中,你不用告诉计算机做什
Stella981 Stella981
4年前
Minicube 部署单节点k8s
部署单节点k8s(minicube方式)1.检测cpu是否支持虚拟化grepEcolor'vmx|svm'/proc/cpuinfo非空即支持虚拟化同时需要bios开启虚拟化2.安装k8s管理工具kubectl1.下载最新版本cur
Stella981 Stella981
4年前
OpenCV3的机器学习算法SVM-使用Python
OpenCV3的机器学习算法SVM-使用Pythonhttp://docs.opencv.org/master/d4/db1/tutorial\_py\_svm\_basics.html(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fdocs.opencv.org%2Fmas
Stella981 Stella981
4年前
JS 对象数组Array 根据对象object key的值排序sort,很风骚哦
有个js对象数组varary\{id:1,name:"b"},{id:2,name:"b"}\需求是根据name或者id的值来排序,这里有个风骚的函数函数定义:function keysrt(key,desc) {  return function(a,b){    return desc ? ~~(ak
Stella981 Stella981
4年前
CentOS KVM种种
安装启用kvm必须在64位系统,soCentOS6.2\_64前提:物理机支持虚拟化技术,intel的VT和AMD的SVM技术,在BIOS中启用虚拟化支持;检查命令:egrep'vmx|svm'/proc/cpuinfo应该出现vmx或svm字样的安装请参考:http://www.centos.bz/2012/03
Stella981 Stella981
4年前
KVM学习笔记
1.查看主机是否支持KVM,egrepc'(vmx|svm)'/proc/cpuinfo2.如果单台虚机的vCPU数量大于物理vCPU的数量,会带来明显性能损失。3.VirtualBox创建的虚拟机目前不支持InterVTx/EPT等虚拟化,所以直接使用vmvare创建虚拟机,然后安装kvm即可。使用qemu创建虚拟机时,一定要启
Stella981 Stella981
4年前
Python进阶笔记(2)
'''装饰器装饰器(Decorators)是Python的一个重要部分。简单地说:他们是修改其他函数的功能的函数。他们有助于让我们的代码更简短。如果已经接触过FLASK的,想想路由功能。如果没有接触过FLASK的,建议学习下。''''''各种推导式(compre