博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【机器学习】核函数的理解与常见核函数
阅读量:2051 次
发布时间:2019-04-28

本文共 2316 字,大约阅读时间需要 7 分钟。

在一个二维空间中,具有特征空间X和特征空间Y,当其中一个点(x, y)在这个二维平面中,如果想把它映射高维空间中,那么就需要用到核函数。

关于核函数的定义是:设 X X X是输入空间, Y Y Y是特征空间。如果存在一个从 X X X Y Y Y的映射 ϕ ( x ) : X − > Y \phi(x):X -> Y ϕ(x):X>Y,使得对于所有的向量 v 1 , v 2 ∈ X v_{1}, v_{2} \in X v1,v2X,函数 K ( v 1 , v 2 ) K(v_{1}, v_{2}) K(v1,v2)满足条件: K ( v 1 , v 2 ) = < ϕ ( v 1 ) , ϕ ( v 2 ) > K(v_{1}, v_{2}) = <\phi(v_{1}), \phi(v_{2})> K(v1,v2)=<ϕ(v1),ϕ(v2)>。其中, < v 1 , v 2 > <v_{1}, v_{2}> <v1,v2>称为内积,或者数量积,是将两个向量返回一个实数标量的二元运算,如 v 1 = ( x 1 , y 1 ) , v 2 = ( x 2 , y 2 ) v_{1} = (x_{1}, y_{1}), v_{2} = (x_{2}, y_{2}) v1=(x1,y1),v2=(x2,y2),则它们的内积 < v 1 , v 2 > = x 1 x 2 + y 1 y 2 <v_{1}, v_{2}> = x_{1}x_{2}+y_{1}y_{2} <v1,v2>=x1x2+y1y2

借用知乎上的例子:机器学习有很多关于核函数的说法,核函数的定义和作用是什么?的回答 如核函数 K ( v 1 , v 2 ) = < v 1 , v 2 > 2 K(v_{1}, v_{2}) = <v_{1}, v_{2}>^{2} K(v1,v2)=<v1,v2>2,这个核函数其实隐含着一个映射关系 P ( x , y ) = ( x 2 , 2 x y , y 2 ) P(x, y) = (x^{2}, \sqrt{2}xy, y^{2}) P(x,y)=(x2,2 xy,y2),通过这个核函数就可以直接计算它们映射的内积 < ϕ ( v 1 ) , ϕ ( v 2 ) > <\phi(v_{1}), \phi(v_{2})> <ϕ(v1),ϕ(v2)>,从而避免分开计算每个向量的映射 ϕ ( v ) \phi(v) ϕ(v)。可以验证:

< P ( v 1 , v 2 ) > = < ( x 1 2 , 2 x 1 y 1 , y 1 2 ) , ( x 2 2 , 2 x 2 y 2 , y 2 2 ) > <P(v_{1}, v_{2})> = <(x_{1}^{2}, \sqrt{2}x_{1}y_{1}, y_{1}^{2}),(x_{2}^{2}, \sqrt{2}x_{2}y_{2}, y_{2}^{2})> <P(v1,v2)>=<(x12,2 x1y1,y12),(x22,2 x2y2,y22)> = ( x 1 x 2 + y 1 y 2 ) 2 =(x_{1}x_{2}+y_{1}y_{2})^{2} =(x1x2+y1y2)2 = < v 1 , v 2 > 2 =<v_{1}, v_{2}>^{2} =<v1,v2>2 = K ( v 1 , v 2 ) = K(v_{1}, v_{2}) =K(v1,v2)

核函数的作用就是隐含着一个从低维空间向高维空间的映射关系,这样就使得在低维空间中线性不可分的两类点在高维空间中线性可分。在SVM中,遇到线性不可分的样本时,SVM就通过一个非线性映射的核函数把样本映射到一个线性可分的高维空间中,在此高维空间中建立线性函数(如二维空间的直线、三维空间的平面和高维空间的超平面)来划分样本的高维空间,此高维空间的线性分类面对应到输入样本空间的话就是一个非线性的分类面。

核函数一般有这么几类

1、线性核函数: K ( v 1 , v 2 ) = < v 1 , v 2 > K(v_{1}, v_{2}) = <v_{1}, v_{2}> K(v1,v2)=<v1,v2>
2、多项式核函数: K ( v 1 , v 2 ) = ( γ < v 1 , v 2 > + c ) n K(v_{1}, v_{2}) = (\gamma<v_{1}, v_{2}>+c)^{n} K(v1,v2)=(γ<v1,v2>+c)n
3、sigmoid核函数: K ( v 1 , v 2 ) = t a n h ( γ < v 1 , v 2 > + c ) K(v_{1},v_{2}) = tanh(\gamma<v_{1}, v_{2}>+c) K(v1,v2)=tanh(γ<v1,v2>+c)
4、高斯核函数: K ( v 1 , v 2 ) = e x p ( − ∣ ∣ v 1 − v 2 ∣ ∣ 2 2 σ 2 ) K(v_{1}, v_{2}) = exp(-\frac{||v_{1} - v_{2}||^{2}}{2\sigma^{2}}) K(v1,v2)=exp(2σ2v1v22)
5、拉普拉斯核函数: K ( v 1 , v 2 ) = e x p ( − ∣ ∣ v 1 − v 2 ∣ ∣ σ ) K(v_{1}, v_{2}) = exp(-\frac{||v_{1} - v_{2}||}{\sigma}) K(v1,v2)=exp(σv1v2)

转载地址:http://owklf.baihongyu.com/

你可能感兴趣的文章
结构型模式之桥接模式(Bridge)
查看>>
行为型模式之状态模式(State)
查看>>
行为型模式之策略模式(Strategy)
查看>>
行为型模式之模板方法模式(TemplateMethod)
查看>>
行为型模式之访问者模式(Visitor)
查看>>
大小端详解
查看>>
source insight使用方法简介
查看>>
<stdarg.h>头文件的使用
查看>>
C++/C 宏定义(define)中# ## 的含义 宏拼接
查看>>
Git安装配置
查看>>
linux中fork()函数详解
查看>>
C语言字符、字符串操作偏僻函数总结
查看>>
Git的Patch功能
查看>>
分析C语言的声明
查看>>
TCP为什么是三次握手,为什么不是两次或者四次 && TCP四次挥手
查看>>
C结构体、C++结构体、C++类的区别
查看>>
进程和线程的概念、区别和联系
查看>>
CMake 入门实战
查看>>
绑定CPU逻辑核心的利器——taskset
查看>>
Linux下perf性能测试火焰图只显示函数地址不显示函数名的问题
查看>>