核函数是什么
在使用SVM分类器处理非线性问题时,核函数是绕不过的坎,其实关于核函数,首先需要记住这两句话:
- 核函数可以使向量直接在原来的低维空间中进行内积计算,避免了直接在高维空间中的复杂计算。
- 计算两个向量在隐式映射过后的空间中的内积的函数叫做核函数。
现在不懂这两句话也没有关系,别急,我一直认为,抽象的东西举一个例子就可以把它纠下神坛。所以下边我们带着这两句话看一个例子。但是要记住,一定要一边嘴里念叨着这两句话一边看实例:
假设有两个向量
X1=(a1,a2)T,
X2=(b1,b2)T
那么,我们对向量做一个映射,映射函数是
ϕ(X)=(2
x1,x12,2
x2,x22,2
x1x2,1)
那么
X1′=(2
a1,a12,2
a2,a22,2
a1a2,1)
X2′=(2
b1,b12,2
b2,b22,2
b1b2,1)
我们求映射后的内积如下:
<X1′,X2′>=a1b1+(a1b1)2+a2b2+(a2b2)2+a1a2b1b2+1
接下来,我们可以求一个内积的变换:
(<X1,X2>+1)2=2a1b1+(a1b1)2+2a2b2+(a2b2)2+2a1a2b1b2+1 (别问我为什么会求这个公式,凑出来的,没啥道理!)
amazing!可以发现,除了部分系数之外,所有项都相同,但是我们可以直接在原来的低维空间中进行计算,而不需要映射在高维空间之后再求解,这就是核函数的妙用。
以上,我们可以把
K(X1,X2)=(<X1,X2>+1)2叫做X1,X2的核函数。
(注意:核函数只是向量内积在低维空间映射到了高维空间,两个维度下向量并没有其他关系。也就是说,在核函数下,我们只需要关注内积操作相似,不需要考虑内部怎么变化的。)
但是上边的例子也可以看到,公式只是根据这个特例凑出来的,并没有什么遵循的依据,有很大的巧合性。所以,数学家们就又发明了一些通用的核函数。
常用的核函数
- 线性核函数
- 多项式核函数,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d =2)多项式核函数,显然刚才我们举的例子是这里多项式核的一个特例(R = 1,d =2)
- 高斯核函数,高斯核非常灵活,也是使用最广泛的核函数之一。