支持向量机 SVM | 非线性可分:核函数

目录

  • [一. 情景引入](#一. 情景引入)
  • [二. 核函数](#二. 核函数)
    • [1. 核函数的分类](#1. 核函数的分类)
      • [1.1 线性核函数(Linear Kernel)](#1.1 线性核函数(Linear Kernel))
      • [1.2 多项式核函数(Polynomial Kernel)](#1.2 多项式核函数(Polynomial Kernel))
      • [1.3 高斯核函数(Radial Basis Function Kernel)](#1.3 高斯核函数(Radial Basis Function Kernel))
      • [1.4 Sigmoid核函数(Sigmoid Kernel)](#1.4 Sigmoid核函数(Sigmoid Kernel))
    • [2. 核函数小节](#2. 核函数小节)

前面我们讲述了SVM算法的线性可分问题,即对应硬间隔模型和软间隔模型;下面我们来聊SVM算法的非线性可分问题

复制代码
	注意:对于完全不可分的数据,SVM硬间隔与软间隔都无法解决

一. 情景引入

我们在线性回归:多项式扩展篇中,采用多项式扩展的方法,将低维度的数据扩展成为高维度的数据,从而使线性回归模型可以解决线性不可分的问题

以2维空间中的线性不可分为例子:

对于2维线性模型

h θ ( x 1 , x 2 ) = θ 0 + x 1 θ 1 + x 2 θ 2 h_{\theta }(x_{1},x_{2})=\theta {0} + x{1}\theta {1}+x{2}\theta _{2} hθ(x1,x2)=θ0+x1θ1+x2θ2

对 ( x 1 , x 2 ) (x_{1},x_{2}) (x1,x2)进行2阶多项式扩展:

( x 1 , x 2 ) → 多项式扩展 ( x 1 , x 2 , x 1 2 , x 2 2 , x 1 x 2 ) {(x_{1},x_{2})\overset{多项式扩展}{\rightarrow} (x_{1},x_{2},x_{1}^{2},x_{2}^{2},x_{1}x_{2} )} (x1,x2)→多项式扩展(x1,x2,x12,x22,x1x2)

对于5维线性模型

h θ ( x 1 , x 2 ) = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 2 + θ 4 x 2 2 + θ 5 x 1 x 2 h_{\theta }(x_{1},x_{2})=\theta {0} +\theta {1}x{1} +\theta {2}x{2} +\theta {3}x{1}^{2}+ \theta {4}x{2}^{2}+\theta {5} x{1}x{2} hθ(x1,x2)=θ0+θ1x1+θ2x2+θ3x12+θ4x22+θ5x1x2

那么同理,在SVM算法中,我们依然希望通过一种方法,将低维特征数据映射到高维特征数据中,从而解决数据的线性不可分问题

于是我们首先尝试通过多项式扩展的方式解决低维度到高维度映射的问题,为了描述方便,我们来定义一个 ϕ \phi ϕ函数,该函数的作用将数据从低维度映射到高维度中,也就是做多项式扩展;那么对于SVM优化的目标函数,我们就可以得到:
{ min ⁡ 1 2 ∑ i = 1 , i = 1 m β i β j y ( i ) y ( j ) ϕ ( x ( j ) ) ⋅ ϕ ( x ( i ) ) − ∑ i = 1 m β i s . t : ∑ i = 1 m β i y ( i ) = 0 a \left\{\begin{matrix}\min\frac{1}{2}\sum_{i=1,i=1}^{m} \beta _{i}\beta {j} y^{(i)}y^{(j)}\phi (x^{(j)})\cdot \phi( x^{(i)})-\sum{i=1}^{m} \beta {i} \\s.t:\sum{i=1}^{m} \beta _{i} y^{(i)}=0 \end{matrix}\right.a {min21∑i=1,i=1mβiβjy(i)y(j)ϕ(x(j))⋅ϕ(x(i))−∑i=1mβis.t:∑i=1mβiy(i)=0a
0 ≤ β i ≤ C , i = 1 , 2 , . . . , m 0\le \beta _{i}\le C,i=1,2,...,m 0≤βi≤C,i=1,2,...,m

进一步解释 ϕ ( x ( j ) ) ⋅ ϕ ( x ( i ) ) \phi (x^{(j)})\cdot \phi( x^{(i)}) ϕ(x(j))⋅ϕ(x(i))

首先,明确 x ( j ) , x ( i ) x^{(j)},x^{(i)} x(j),x(i)是向量,这里是向量的点乘

下面我们来举例子:

是不是觉得3维数据的计算量还能接受?

如果原始数据是10维,20维度,30维呢?

如果有一百万条数据呢?

显然,这样的点乘计算量巨大

二. 核函数

SVM的发明者为了解决上述计算量的问题,发明了核函数

  • 核函数定义

    假设函数Ф是一个低维特征空间到高维特征空间的映射,那么如果存在函数K(x,z), 对于任意的低维特征向量x和z,都有:
    K ( x , z ) = ϕ ( x ) ϕ ( z ) K(x,z) = \phi (x)\phi (z) K(x,z)=ϕ(x)ϕ(z)

    则称函数K为核函数(kernal function)

  • 说人话版本:

    核函数在低维空间上的计算量等价于特征做维度扩展后的点乘的结果;即核函数的作用相当于扩展后再点乘

    复制代码
     	这里需要补充一点
     	对于Ф(从低位映射到高维)而言,多项式扩展只是其中的一种方法

即,核函数用低维空间中少量的内积的计算量让模型具有高维空间中的线性可分的优点


首先我们用算式说明:

假设向量 x 1 = ( α 1 , α 2 ) T , x 2 = ( η 1 , η 2 ) T x_{1} =(\alpha _{1}, \alpha {2})^{T},x{2} =( \eta {1}, \eta{2})^{T} x1=(α1,α2)T,x2=(η1,η2)T

2阶扩展映射到五维空间中,我们可以得到:
ϕ ( x 1 ) ⋅ ϕ ( x 2 ) = α 1 η 1 + α 2 η 2 + α 1 2 η 1 2 + α 2 2 η 2 2 + α 1 α 2 η 1 η 2 \phi (x_{1})\cdot \phi (x_{2})=\alpha _{1}\eta _{1}+ \alpha {2}\eta{2}+\alpha _{1}^{2}\eta _{1}^{2}+\alpha _{2}^{2}\eta _{2}^{2}+\alpha _{1}\alpha _{2}\eta _{1}\eta _{2} ϕ(x1)⋅ϕ(x2)=α1η1+α2η2+α12η12+α22η22+α1α2η1η2

而对于K函数的思想,我们可以得到:
( x 1 ⋅ x 2 + 1 ) 2 = 2 α 1 η 1 + 2 α 2 η 2 + α 1 2 η 1 2 + α 2 2 η 2 2 + 2 α 1 α 2 η 1 η 2 + 1 (x_{1}\cdot x_{2}+1)^{2} = 2\alpha _{1}\eta _{1}+ 2\alpha {2}\eta{2}+\alpha _{1}^{2}\eta _{1}^{2}+\alpha _{2}^{2}\eta _{2}^{2}+2\alpha _{1}\alpha _{2}\eta _{1}\eta _{2}+1 (x1⋅x2+1)2=2α1η1+2α2η2+α12η12+α22η22+2α1α2η1η2+1

复制代码
	可以直观的发现,式子的主要区别在系数上
	也就是说:
		只需要乘上一个系数,就可以将五维空间的内积转换成两维空间的内积

下面,我们再用实际数据来具体说明核函数的作用:

假设向量 x 1 = ( 3 , 5 ) x_{1} =(3, 5) x1=(3,5),二阶扩展后得到:3,5,9,25,15

x 2 = ( 4 , 2 ) x_{2} =( 4,2) x2=(4,2),二阶扩展后得到:4,2,16,4,8

进行二阶扩展时,我们会得到:
ϕ ( x 1 ) ⋅ ϕ ( x 2 ) = 3 ∗ 4 + 5 ∗ 2 + 9 ∗ 16 + 25 ∗ 4 + 15 ∗ 8 = 386 \phi (x_{1})\cdot \phi (x_{2})=3*4+5*2+9*16+25*4+15*8=386 ϕ(x1)⋅ϕ(x2)=3∗4+5∗2+9∗16+25∗4+15∗8=386
( x 1 ⋅ x 2 + 1 ) 2 = ( 3 ∗ 4 + 5 ∗ 2 + 1 ) 2 = 529 (x_{1}\cdot x_{2}+1)^{2} =(3*4+5*2+1)^{2}=529 (x1⋅x2+1)2=(3∗4+5∗2+1)2=529

0.8476 ( x 1 ⋅ x 2 ) + 1 \] 2 = \[ 0.8476 ( 3 ∗ 4 + 5 ∗ 2 ) + 1 \] 2 = 386.01 \[0.8476(x_{1}\\cdot x_{2})+1\]\^{2} =\[0.8476(3\*4+5\*2)+1\]\^{2}=386.01 \[0.8476(x1⋅x2)+1\]2=\[0.8476(3∗4+5∗2)+1\]2=386.01 ### 1. 核函数的分类 这里我们明确下SVM使用时,需要包含核函数和松弛因子 #### 1.1 线性核函数(Linear Kernel) 该核函数针对线性可分数据 即:不需要做扩展,只点乘,其他什么都没做 K ( x , z ) = x ∙ z K(x,z)=x\\bullet z K(x,z)=x∙z #### 1.2 多项式核函数(Polynomial Kernel) γ、r、degree扩展阶数 属于超参,需要调参 K ( x , z ) = ( γ x ∙ z + r ) d K(x,z)=(\\gamma x\\bullet z+r)\^{d} K(x,z)=(γx∙z+r)d #### 1.3 高斯核函数(Radial Basis Function Kernel) 径向基函数核 γ属于超参,要求大于0,需要调参 常用核函数 K ( x , z ) = e − γ ∥ x − z ∥ 2 K(x,z)=e\^{-\\gamma\\left \\\| x-z \\right \\\|\^{2} } K(x,z)=e−γ∥x−z∥2 #### 1.4 Sigmoid核函数(Sigmoid Kernel) γ、r属于超参,需要调参 K ( x , z ) = tanh ⁡ ( γ x ∙ z + r ) K(x,z)=\\tanh (\\gamma x\\bullet z+r) K(x,z)=tanh(γx∙z+r) ### 2. 核函数小节 ![在这里插入图片描述](https://file.jishuzhan.net/article/1765594906039947265/a6a961cfbec1804b1eca7d6e677dd3ab.webp) 虽然核函数计算输出的结果与二阶扩展的结果一致,但核函数的价值在于,通过在低维上进行计算,从而达到高维上的分类效果,避免了直接在高维空间中的复杂计算 核函数的作用:将非线性可分的数据转换为线性可分数据 核函数可以自定义 核函数必须是正定核函数,任何半正定的函数都可以作为核函数 Gram矩阵是半正定矩阵: ![在这里插入图片描述](https://file.jishuzhan.net/article/1765594906039947265/8c9f26e2813301dc888c31491c24af7b.webp)

相关推荐
zxsz_com_cn几秒前
医疗设备预测性维护的合规性挑战与标准化路径研究
大数据·数据库·人工智能
沙子可可14 分钟前
深入学习OpenCV:第一章简介
人工智能·opencv·学习
AI技术控15 分钟前
计算机视觉算法实战——基于YOLOv8的农田智能虫情测报灯害虫种类识别系统开发指南
人工智能·深度学习·算法·yolo·计算机视觉
XINVRY-FPGA27 分钟前
XC6SLX100T-2FGG484I 赛灵思 XilinxFPGA Spartan-6
c++·人工智能·嵌入式硬件·阿里云·ai·fpga开发·fpga
硅谷秋水1 小时前
MAPLE:编码从自我为中心的视频中学习的灵巧机器人操作先验
人工智能·机器学习·计算机视觉·机器人·音视频
Lx3521 小时前
📌 深度搜索实战:3天完成原本1个月的代码重构
人工智能
offerwa1 小时前
大模型提示工程:入门到精通的实用指南
人工智能
仙人掌_lz1 小时前
详解如何复现LLaMA 4:从零开始利用Python构建
人工智能·python·ai·llama·智能体·ai agents
PcVue China1 小时前
PcVue助力立讯:精密制造的智能化管控实践!
大数据·人工智能·制造
AI绘画咪酱1 小时前
Stable Diffusion【进阶篇】:如何实现人脸一致
人工智能·深度学习·学习·机器学习·ai作画·stable diffusion