问题:给定一个函数 K,我们能否使用 K 来替代计算
ϕ(x)Tϕ(z)
,也就说,是否能够找出一个
ϕ
,使得对于所有的 x 和 z, 都有
K(x,z)=ϕ(x)Tϕ(z)
?
比如给出了
K(x,z)=(xTz)2
,怎样判定 K 是一个有效的核函数?
给定m个样本
{x1,...,xm}
,假设
K
是一个
对于任意的有效的核函数
下面我们使用符号
ϕk(x)
来表示映射函数
ϕ(x)
的第k个属性,对于任意的向量
z
我们可以证明:
因为 z 是任意的,因此核函数K必然是半正定的
而且由 Mercer 定理,我们可以得到,上面的条件反过来也成立。也就是说:
Mercer 定理表明为了证明 K 是有效的核函数,那么我们不用去寻找 ϕ ,而只需要在训练集上求出各个 Kij ,然后判断矩阵 K 是否是半正定( 使用左上角主子式大于等于零等方法)即可。
核函数不仅仅用在 SVM 上,但凡在一个模型后算法中出现了 <x,z> <script type="math/tex" id="MathJax-Element-7347">< x, z ></script>,我们都可以用 K(x,z) 去替换,这可能能够很好地改善我们的算法。