Kernels
本节内容:
核函数(Kernel)是一类计算变量间相似度的函数,它可用于构造新的特征变量,帮助SVM解决复杂的非线性分类问题。
相关机器学习概念:
相似度函数(Similarity Function)
高斯核函数(Gaussian Kernel)
1. Kernels
对于下图中的非线性分类问题,常用的思路是构造多项式特征变量,如果 θ T x = θ 0 + θ 1 x 1 + θ 2 x 2 + θ 3 x 1 x 2 + θ 4 x 1 2 + θ 5 x 2 2 + . . . ≥ 0 \theta^T x=\theta_0+\theta_1x_1+\theta_2x_2+\theta_3x_1x_2+\theta_4x^2_1+\theta_5x^2_2 +...≥0 θTx=θ0+θ1x1+θ2x2+θ3x1x2+θ4x12+θ5x22+...≥0,预测 y = 1 y=1 y=1,反之预测0.
然而,将所有高阶项纳入特征变量会导致运算成本过高等问题,有没有更好的选择特征变量的方法呢?
核函数就是一种可用于构造新的特征变量的方法。
把新的特征变量记作
f
f
f,
θ
T
f
=
θ
0
+
θ
1
f
1
+
.
.
.
+
θ
n
f
n
\theta^T f=\theta_0+\theta_1f_1+...+\theta_nf_n
θTf=θ0+θ1f1+...+θnfn
f
i
f_i
fi的计算方法如下:
f
i
=
s
i
m
i
l
a
r
i
t
y
(
x
,
l
(
i
)
)
=
e
x
p
(
−
‖
x
−
l
(
i
)
‖
2
2
σ
2
)
f_i=similarity(x,l^{(i)})=exp(-\frac{‖ x-l^{(i)} ‖^2}{2\sigma^2})
fi=similarity(x,l(i))=exp(−2σ2‖x−l(i)‖2)
其中,
l
(
i
)
l^{(i)}
l(i)是我们事先选择的一些标记点(选择方法在下一节会讲到),它的维度和样本点的维度相同,每个标记点定义一个新的特征变量。这里的similarity函数是高斯核函数(Gaussian Kernel),它是核函数中的一种。核函数是众多相似度函数的总称。
高斯核函数所做的,其实是计算了样本点和标记点的远近程度,距离越近,
f
i
f_i
fi的值越接近1,反之,其值越接近0.
如果
x
≈
l
(
i
)
x≈l^{(i)}
x≈l(i),那么
f
i
≈
e
x
p
(
−
0
2
σ
2
)
≈
1
f_i≈exp(-\frac{0}{2\sigma^2})≈1
fi≈exp(−2σ20)≈1
如果
x
x
x距离
l
(
i
)
l^{(i)}
l(i)很远,那么
f
i
≈
e
x
p
(
−
(
l
a
r
g
e
n
u
m
b
e
r
)
2
2
σ
2
)
≈
0
f_i≈exp(-\frac{(large\ number)^2}{2\sigma^2})≈0
fi≈exp(−2σ2(large number)2)≈0
高斯核函数的表达式中有一个
σ
2
\sigma^2
σ2,它是高斯核函数的参数,它控制了
f
i
f_i
fi下降的速度。
\qquad
2. Application
2.1 SVM with Kernels
要使用核函数,首先需要选择一系列标记点。
标记点该如何选择呢?
在实践中,一种选择标记点的方法是将标记点与样本点完全对应。有m个样本点,就能得到m个标记点。此外,按照惯例,我们可能还会加入一个额外的标记点 f 0 f_0 f0,其值始终为1.
这样我们就得到了带核函数的SVM模型:
Hypothesis: Given x, compute features
f
∈
R
m
+
1
f∈\R^{m+1}
f∈Rm+1
\qquad
Predict “y=1” if
θ
T
f
=
θ
0
+
θ
1
f
1
+
.
.
.
+
θ
m
f
m
≥
0
\theta^T f=\theta_0+\theta_1f_1+...+\theta_mf_m≥0
θTf=θ0+θ1f1+...+θmfm≥0
Objective function:
J
(
θ
)
=
C
∑
i
=
1
m
[
y
(
i
)
c
o
s
t
1
(
θ
T
f
(
i
)
)
+
(
1
−
y
(
i
)
)
c
o
s
t
0
(
θ
T
f
(
i
)
)
]
+
1
2
∑
j
=
1
m
θ
j
2
J(\theta)=C\sum_{i=1}^{m}[y^{(i)}cost_1(\theta^T f^{(i)})+(1-y^{(i)})cost_0(\theta^T f^{(i)})]+\frac{1}{2}\sum_{j=1}^m\theta_j^2
J(θ)=Ci=1∑m[y(i)cost1(θTf(i))+(1−y(i))cost0(θTf(i))]+21j=1∑mθj2
\qquad
从原理上看,核函数不仅可以应用于SVM,也可应用于其他算法,如逻辑回归等。但在实践中我们并不这样做,原因是用于SVM的计算技巧不能很好地推广到其他算法上,核函数和其他算法结合时运算速度会非常慢。
\qquad