核函数是支持向量机经常使用的一种度量函数
核函数
假如要拟合,可能会用$y = \theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x_1^2+\theta_5x_2^2+\ldots$,当$y \geq 0$时,判断为1。但是我们并不知道哪些高次项是有用的,而计算这些高次项又是非常耗时的。 选取n个标记点$l^{(n)}$,使用核函数,拟合的函数就变成了$y = \theta_0+\theta_1f_1+\theta_2f_2+\theta_3f_3+\theta_4f_4+\theta_5f_5+\ldots$,这里的$f_i$代表给定的点x和每个标记点$l^{(i)}$的相似度。这里的相似度函数就是使用核函数(这边是高斯核函数):$similarity(x,l^{(i)}) = exp(-\frac{\left|x-l^{i}\right|^2}{2\sigma^2})$,$\sigma$是高斯函数的一个参数,$\sigma$越大,那么高斯核函数的值随着x变化的速度也就越慢(分母越小,指数增长的速度也就越慢)
如果$x \approx l^{(1)}$,那么$f_1 \approx exp(-\frac{0^2}{2\sigma^2}) \approx 1$
如果x和$l^{(1)}$相差很大,那么$f_1 \approx 0$
所以如果我们将$\theta_0$设置为小于0的某个值,而$\theta_i$设置为大于0的值,那么要想$y>0$,就必须保证x在某个标记点的附近,否则相似度就是接近0的值,无法让整体大于0。这就保证了所有判断为1的点都与某个标记点比较相似。当然这不是$\theta$唯一的取值方式,但是说明了核函数计算相似度是一种有效的判别方法。
选择标记点
如果将所有的训练点都算作标记点,那么$f_i = similarity(x^{(i)},l^{(i)}) = similarity(x^{(i)},x^{(i)}) = 0$
SVM的参数
C越大,带来更小的偏差和更高的方差($\frac{1}{\lambda}$)
$\sigma$越大,$f_i$变化得越平缓,带来更高的偏差和更低的方差