上一节说到,如果新的空间维度很高,计算耗时,那z的内积能不能先在原始x空间计算好了再应用到z空间呢?
举了一个转化到二阶空间的例子,其实可以先在x空间做内积,减少计算量
这种转换叫做kernel function
它将z'z的内积表示成x’x的函数。
经过替换,在SVM中一些式子的就可以如下表示。kernel trick是一个避免了在高纬度空间进行计算的方法。
更一般的kernel
能不能对x做无限维的变换呢?有了kernel就能做到。
这里就是把x变换为了无穷维……这种kernel称为高斯核。
把g的表达式写一下,就像是将 每个以一个sv为中心的高斯函数 线性组合了一下。
所以使用高斯核的SVM的本质:
SVM如果参数选择不好仍然会overfit
几种kernel的比较:
linear kernel 简单快速可解释性强,只能对线性可分数据集
polynomial kernel 线性不可分情况可处理,比linear灵活,参数选择困难
Gaussian kernel 参数选择问题...
kernel描述了一种相似性
自己可以构造kernel,必须符合mercer's condition。对称、半正定。