首先来个定义
通过某非线性变换 φ ( ⋅ ) \varphi(\cdot) φ(⋅) ,将输入空间映射到高维特征空间。特征空间的维数可能非常高。如果求解只用到内积运算,而在低维输入空间又存在某个函数 K ( ⋅ ) K(\cdot) K(⋅),它恰好等于在高维空间中这个内积,即 K ( X , Y ) = < φ ( X ) , φ ( Y ) > K(X,Y) =<φ(X),φ(Y) > K(X,Y)=<φ(X),φ(Y)>。那么求解过程中就不用计算复杂的非线性变换,而由这个函数 K ( ⋅ ) K(\cdot) K(⋅)直接得到非线性变换的内积,使大大简化了计算。这样的函数 K ( ⋅ ) K(\cdot) K(⋅)称为核函数。
只通过定义比较难理解,举个简单的例子
对于特征向量 X = ( x 1 , x 2 , x 3 ) X=(x_1,x_2,x_3) X=(x1,x2,x3),定义一个映射 φ ( ⋅ ) \varphi(\cdot) φ(⋅),将其从三维空间映射到九维空间,定义如下 φ ( X ) = ( x 1 x 1 , x 1 x 2 , x 1 x 3 , x 2 x 1 , x 2 x 2 , x 2 x 3 , x 3 x 1 , x 3 x 2 , x 3 x 3 ) \varphi(X)=(x_1x_1,x_1x_2,x_1x_3,x_2x_1,x_2x_2,x_2x_3,x_3x_1,x_3x_2,x_3x_3) φ(X)=(x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)对于 X = ( 1 , 2 , 3 ) , Y = ( 4 , 5 , 6 ) X=(1,2,3),Y=(4,5,6) X=(1,2,3),Y=(4,5,6) 有 φ ( X ) = ( 1 , 2 , 3 , 2 , 4 , 6 , 3 , 6 , 9 ) φ ( Y ) = ( 16 , 20 , 24 , 20 , 25 , 30 , 24 , 30 , 36 ) < φ ( X ) , φ ( Y ) > = 16 + 40 + 72 + 40 + 100 + 180 + 72 + 180 + 324 = 1024 \begin{aligned} φ(X)\qquad&=(1,2,3,2,4,6,3,6,9)\\ φ(Y)\qquad&=(16,20,24,20,25,30,24,30,36)\\ <φ(X),φ(Y)>&=16+40+72+40+100+180+72+180+324=1024\\ \end{aligned} φ(X)φ(Y)<φ(X),φ(Y)>=(1,2,3,2,4,6,3,6,9)=(16,20,24,20,25,30,24,30,36)=16+40+72+40+100+180+72+180+324=1024我们定义核函数 K K K(Kernel Function)为: K ( X , Y ) = ( ∑ i = 1 3 x i y i ) 2 , K(X,Y)=(\sum_{i=1}^3x_iy_i)^2, K(X,Y)=(i=1∑3xiyi)2,则有 K ( X , Y ) = ( 4 + 10 + 18 ) 2 = 1024 = < φ ( X ) , φ ( Y ) > \begin{aligned} K(X,Y)&=(4+10+18)^2=1024\\ &=<φ(X),φ(Y)>\\ \end{aligned} K(X,Y)=(4+10+18)2=1024=<φ(X),φ(Y)>即我们通过核函数避开了非线性变换 φ ( ⋅ ) φ(\cdot) φ(⋅)的计算,不需要先通过复杂的计算将三维映射到九维中,然后计算内积,只需要使用低维中的数据通过核函数表达式就直接计算出高维空间的内积。
所以核技巧就是用来避开这些繁琐的计算的。并且如果是将数据映射到无限维空间,通过普通的算法是无法计算的,而通过核函数却可以,如:高斯核RBF(Radial Basis Function): K ( X , Y ) = e − ∣ ∣ X − Y ∣ ∣ 2 2 σ 2 K(X,Y)=e^{-\frac{||X-Y||^2}{2\sigma^2}} K(X,Y)=e−2σ2∣∣X−Y∣∣2被证明可以计算任何高维空间映射的内积,这个在后面也会给出证明。
例子来源CSK原理及代码解析
核函数不是什么高深的算法,只是对某种计算的定义
作者:文鸿郴
链接:https://www.zhihu.com/question/24627666/answer/28460490
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
核函数和映射没有关系。核函数只是用来计算映射到高维空间之后的内积的一种简便方法。
一般英文文献对Kernel有两种提法,一是Kernel Function,二是Kernel Trick。从Trick一词中就可以看出,这只是一种运算技巧而已,不涉及什么高深莫测的东西。
具体巧在哪里呢?我们如果想进行原本就线性不可分的数据集进行分割,那么选项一是容忍错误分类,即引入Soft Margin;选项二是我们可以对Input Space做Feature Expansion,把数据集映射到高维中去,形成了Feature Space。我们几乎可以认为(引用Caltech的课堂用语“We are safe but not certain”)原本在低维中线性不可分的数据集在足够高的维度中存在线性可分的超平面。
围绕选项二,那么我们所做的就是要在Feature Space套用原本在线性可分情况下的Input Space中使用过的优化方法,来找到那个Maximaizing Margin的超平面。原理机制一模一样,是二次规划,唯一不同是代入数据的不同,我们需要代入 φ ( X ) \varphi(X) φ(X)而不是 X X X。这时(在假设我们已知了如何选取mapping之后)才有了核函数的概念。
具体Trick的意义,就是简化计算二次规划中间的一步内积计算。也即中间步骤有一步必须求得 < φ ( X ) , φ ( Y ) > <φ(X),φ(Y)> <φ(X),φ(Y)>,而我们可以定义核函数 K ( X , Y ) K(X,Y) K(X,Y),使得我们在不需要显式计算每一个 φ ( X ) \varphi(X) φ(X)、甚至不需要知道 φ ( ⋅ ) \varphi(\cdot) φ(⋅)长什么样的情况下,直接求出 < φ ( X ) , φ ( Y ) > <φ(X),φ(Y)> <φ(X),φ(Y)>的值来。也就是说,核函数、内积、相似度这三个词是等价的。因为inner product其实就是一种similarity的度量。核函数和映射是无关的。
但为什么这么多的认知中核函数是一种映射呢。一来这两件事一般先后进行,所以常常被混为一谈。二来就像前面所述,核函数让人们不需要知道 φ ( ⋅ ) \varphi(\cdot) φ(⋅)长什么样,不需要知道怎么选取映射,就能够算出内积。因此这常常被认作是一种implicit mapping。这是由Mercer Theorem保证的,即只要核函数满足一定条件,那么映射空间一定存在。
来自机器学习有很多关于核函数的说法,核函数的定义和作用是什么?-知乎
换种表达方式就是,映射 φ ( ⋅ ) \varphi(\cdot) φ(⋅)将s维原始数据 X = ( x 1 , x 2 , ⋯ , x s ) X=(x_1,x_2,\cdots,x_s) X=(x1,x2,⋯,xs)映射到n维空间 φ ( X ) = ( f 1 ( x 1 , x 2 , ⋯ , x s ) , f 2 ( x 1 , x 2 , ⋯ , x s ) , ⋯ , f n ( x 1 , x 2 , ⋯ , x s ) ) \varphi(X)=(f_1(x_1,x_2,\cdots,x_s),f_2(x_1,x_2,\cdots,x_s),\cdots,f_n(x_1,x_2,\cdots,x_s)) φ(X)=(f1(x1,x2,⋯,xs),f2(x1,x2,⋯,xs),⋯,fn(x1,x2,⋯,xs)),映射后的每个元素 f f f一定是由原始数据计算来的。则高维空间的内积 < φ ( X ) , φ ( Y ) > = f 1 ( x 1 , x 2 , ⋯ , x s ) f 1 ( y 1 , y 2 , ⋯ , y s ) + f 2 ( x 1 , x 2 , ⋯ , x s ) f 2 ( y 1 , y 2 , ⋯ , y s ) + ⋯ + f n ( x 1 , x 2 , ⋯ , x s ) f n ( y 1 , y 2 , ⋯ , y s ) <φ(X),φ(Y)>=f_1(x_1,x_2,\cdots,x_s)f_1(y_1,y_2,\cdots,y_s)+f_2(x_1,x_2,\cdots,x_s)f_2(y_1,y_2,\cdots,y_s)+\cdots+f_n(x_1,x_2,\cdots,x_s)f_n(y_1,y_2,\cdots,y_s) <φ(X),φ(Y)>=f1(x1,x2,⋯,xs)f1(y1,y2,⋯,ys)+f2(x1,x2,⋯,xs)f2(y1,y2,⋯,ys)+⋯+fn(x1,x2,⋯,xs)fn(y1,y2,⋯,ys)一定是 ( x 1 , x 2 , ⋯ , x s , y 1 , y 2 , ⋯ , y s ) (x_1,x_2,\cdots,x_s,y_1,y_2,\cdots,y_s) (x1,x2,⋯,xs,y1,y2,⋯,ys)的函数。
通过某些数学证明,得知,当函数 K ( ⋅ ) K(\cdot) K(⋅)满足某个条件时,一定存在映射 φ ( ⋅ ) \varphi(\cdot) φ(⋅),使得 K ( x 1 , x 2 , ⋯ , x s , y 1 , y 2 , ⋯ , y s ) = < φ ( X ) , φ ( Y ) > K(x_1,x_2,\cdots,x_s,y_1,y_2,\cdots,y_s)= <φ(X),φ(Y)> K(x1,x2,⋯,xs,y1,y2,⋯,ys)=<φ(X),φ(Y)>
关键在于存在性,即我们只需要知道存在这种映射即可,不需要知道映射的具体表达式。mercer定给出了核函数的充要条件。
mercer定理,核函数的充要条件
①对称性
K
(
X
,
Y
)
=
K
(
Y
,
X
)
K(X,Y)=K(Y,X)
K(X,Y)=K(Y,X);
②正定性
任取N个元素
X
1
,
X
2
,
⋯
,
X
N
∈
X
X_{1},X_{2},\cdots ,X_{N}\in \mathcal{X}
X1,X2,⋯,XN∈X,对应的Gram matrix
K
=
[
K
(
X
i
,
X
j
)
]
K=[K(X_{i},X_{j})]
K=[K(Xi,Xj)]是半正定的。