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