我是靠谱客的博主 淡定硬币,最近开发中收集的这篇文章主要介绍SVM(三) 核函数,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

今天我们讲解一下SVM的核函数,那么什么是核函数呢?我也不知道啊,但是我们可以从普通的回归任务出发。假设我们有这样一个式子:

begin{equation}
begin{split}
h_theta (x_1, x_2) = theta_0 + theta_1 x_1 + theta_2 x_2 + theta_3 x{_1^2} + theta_4 x_2^2
end{split}
end{equation}

我们令 ( x_3 = x_1^2 ), (x_4 = x_2^2),那么上面的式子变成了:

begin{equation}
begin{split}
h_theta (x_1, x_2) = theta_0 + theta_1 x_1 + theta_2 x_2 + theta_3 x_3 + theta_4 x_4
end{split}
end{equation}

从上面可以看出,原来的2元n次多项式回归变成了4元1次多项式回归,通过这个改进,我们是不是把上述的非线性回归重新变回了线性回归,即把特征从2维空间映射到了4维空间。这就给了我们启发,如果想把非线性特征转变为线性特征,只要把数据特征映射到高维特征空间上去。

在SVM中,我们也可以利用这样的思想。对于SVM不可分的低维数据,只要将其映射到高维,就可以利用前两节讲解的线性SVM的方法进行求解。

核函数

上面我们讲解了回归中将非线性映射到线性的思想,那么在SVM中,我们该如何运用这种思想呢?

在SVM中,我们引入了一种叫做核函数的东西。回顾上一小节我们的目标函数:

begin{equation}
max sum_{i=1}^{m}alpha_i - frac{1}{2} sum sum alpha_i alpha_j y_i y_j x_i^T x_j
end{equation}

begin{equation}
begin{split}
s.t. &sum_{i=1}^m alpha_i y_i = 0 \
&alpha_i geq 0 , i = 1,2,…,m
end{split}
end{equation}

注意到上式低维特征是以(x_i^T x_j) 内积的形式出现,如果我们定义一个从低维映射到高维的函数 ( phi),将所有的特征映射到更高的维度,让数据变得线性可分,那么我们就可以用前两节所说的方法进行函数目标的优化。那么,现在我们的函数变为:

begin{equation}
max sum_{i=1}^{m}alpha_i - frac{1}{2} sum sum alpha_i alpha_j y_i y_j phi (x_i^T) phi (x_j)
end{equation}

begin{equation}
begin{split}
s.t. &sum_{i=1}^m alpha_i y_i = 0 \
&alpha_i geq 0 , i = 1,2,…,m
end{split}
end{equation}

这样看来我们完美的解决了线性不可分的问题,但是事实真的是这样的吗?一个2维特征的数据我们可以映射到4维来进行特征的内积。如果我们有3维特征的数据,我们可以映射到16维。那么1000维的特征,10000维的特征呢,这样做是不是造成了 维度的爆炸增长。这时候, 核函数就被提出了。

假设(phi)是从低维的输入空间(chi )到高维的 再生希尔伯特空间(mathcal{H})的映射。那么如果存在函数 (k(x_i,x_j)),对于任意的(x_i, x_j in chi),都有:

begin{equation}
k(x_i,x_j) = phi(x_i).phi(x_j)
end{equation}

我们称(k(x,z))为核函数。核函数的价值在于虽然是将特征从低维到高维的转换,但它是在低维上进行计算,而将实际的分类效果表现在高维上,这样避免了在高维上的直接计算,降低了计算复杂度。

那么什么样的函数可以作为核函数呢?周志华的西瓜书上给出了详细的定义。总的来说,核函数是一个 半正定核函数。一个函数想要成为半正定核函数,那么必须满足,它所对应的 Gram核矩阵是半正定的。也就是说,对于任意的(x_i in chi , i=1,2,3...m),(k(x_i,x_j))对应的核矩阵(K = bigg[ K(x_i, x_j )bigg])是半正定矩阵。那么什么是半正定矩阵呢?设(A)为实对称矩阵,对任意的非零向量 (x),有(x^TAx geq 0),那么我们称(A)是 半正定矩阵

通过前面的讨论我们可以知道,我们希望样本在特征空间内线性可分,因此特征空间的好坏对支持向量机的性能至关重要,但是我们并不知道特征空间的形式时,我们并不知道什么样的核函数适合的,而核函数隐式地定义了这个特征空间。还好大佬们帮我们找到了一些核函数,常用的核函数也仅仅是以下几个。

线性核函数(Linear Kernel)

begin{equation}
k(x_i,x_j) = x_i^T x_j
end{equation}

也就是说,线性可分SVM可以和线性不可分SVM可以归为一类,只是核函数不同而已。

多项式核函数(Polynomial Kernel)是线性不可分SVM常用核函数之一

begin{equation}
k(x_i,x_j) = (x_i^T x_j)^d
end{equation}

(d=1)时,多项式核退化为线性核。

高斯核函数(Gaussian Kernel),有时候也称为径向基函数(Radial Basis Function)即RBF核,它是非线性SVM最常使用的核函数。

begin{equation}
k(x_i,x_j) = exp(- frac{||x_i^T x_j||}{2sigma^2}), sigma > 0 是高斯核的带宽
end{equation}

当然核函数不止上面的,还有 拉普拉斯核,Sigmoid核,此外还可以通过和 函数组合如线性组合,直积得到不同的核函数。

总结

核函数解决了SVM的线性不可分的情况,并且将线性SVM和非线性SVM进行了统一,降低了高维空间计算的复杂度,因此核函数是非常重要的一个概念,在其他的地方也有着重要的应用,如核PCA降维,核聚类,核感知机等。特征空间上去。

最后

以上就是淡定硬币为你收集整理的SVM(三) 核函数的全部内容,希望文章能够帮你解决SVM(三) 核函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部