Bootstrap

机器学习中的kernel是什么?(待补充)

近来看到SVM和核化线性降维KPCA,对其中的核函数难以理解,因此去查阅了众多资料,接下来简单记录总结下对kernel的认识。
知乎问题链接
参考

kernel是什么 ?

  首先我们先给出kernel的定义:核函数(kernel function)就是指K(x,y)=<f(x),f(y)>,其中x和y是n维的输入值,f()指的是n维到m维的映射(通常m>>n),<x,y>即x和y的内积

看完上述定义,不少人还是一头雾水,不要着急,我们继续对定义进行分解。
首先K(x,y)=<f(x),f(y)>,即表示二者都可以计算高维(m维)中的内积计算,那二者有什么不同呢?我们先看<f(x),f(y)>,这就是我们一般的做法,先把低维(n维)映射到高维,获得f(x),f(y),然后再计算高维下f(x),f(y)的内积,但是高维下内积的计算成本也会响应的变大,有没有方法可以简化这个计算过程呢? !有,那就是核函数K(x,y),核函数仍是对低维的x,y进行计算,实现在低维下计算出高维映射后的内积结果

以上就是对定义的 进一步解读,从这里我们可以得出一个重要的概念,就是核函数本身只是一种简化对应高维下内积的计算方法,核函数可以直接通过原始维度的特征向量来计算得到维度拓展后的向量的镍基,而这种映射关系就是金额函数,并不负责低维到高维的映射(kernel目的不是为了升维,而是为了升维后的简化计算),此映射非彼映射。

接下来我们再举一个具体的实例来进一步理解kernel。
令 x = (x1, x2, x3, x4); y = (y1, y2, y3, y4);//低维下的数据

令 f(x) = (x1x1, x1x2, x1x3, x1x4, x2x1, x2x2, x2x3, x2x4, x3x1, x3x2, x3x3, x3x4, x4x1, x4x2, x4x3, x4x4); f(y)亦然;//低维升维的f()

令核函数 K(x, y) = (<x, y>)^2.

接下来,让我们带几个简单的数字进去看看是

;