核函数:RBF 是如何让线性 SVM 可以分类非线性数据的?

简介: 如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使得样本可分。

核函数:RBF 是如何让线性 SVM 可以分类非线性数据的?

1. 线性支持向量机

支持向量机的思想就是给定训练样本集 $D$,在样本空间中找到一个划分的超平面,例如下图:
在这里插入图片描述

但如果遇到某一些数据,并没有这么容易可以用一个平面分隔开,像如下的环形数据

alt

现实中非线性的数据还是很多数的,而解非线性问题要远比线性问题复杂得多,花费的资源也会成倍的增加,为此我们使用了核技巧(kernel trick)

2. 核函数

如果原始空间是有限维,即属性数有限,那么一定存在一个高维特征空间使得样本可分。1

简单地讲,就是把数据映射到一个更加高维的空间,让数据在此高维空间上的映射线性可分。文字可能不太容易懂,看图的话,我们会比较直观。

还是如上面的环形数据,利用了核函数映射后在三维空间上的分布,如下图所示:

在这里插入图片描述

利用 scikit-learn 计算的关于原点 (0, 0) 的 RBF(高斯)映射,结尾会附上代码。

不难看出,在这个三维空间上的点,能够简单的用一个平面就分隔开,这样就避免了解非线性问题。

2.1. 径向基函数(Radial Basis Function)

所谓径向基函数,就是某种沿径向对称的标量函数。 通常定义为空间中任一点 $x$ 到某一中心 $x_c$ 之间欧氏距离的单调函数。$x$ 越远离中心,函数的取值就越小。2

一般 RBF 核又指高斯核,其形式为:

$$ \kappa(\boldsymbol{x}_i,\boldsymbol{x}_j)=\mathrm{exp}\left(- \frac{\left\|\boldsymbol{x}_i-\boldsymbol{x}_j\right\|^2}{2\sigma^2}\right ) $$

其中 $\sigma \gt 0$ 为高斯核的带宽(其实意义与高斯分布的差不多),$\boldsymbol{x}_i$ 就是第 $i$ 个数据。

2.2. 计算核函数

计算核函数可以使用 sklearn 的 sklearn.metrics.pairwise.rbf_kernel 来计算:(具体的代码,可以在我的 Github 上下载,如果对你有帮助,希望可以给我个 star。)

>>> from sklearn.metrics import pairwise

>>> # draw circles data
>>> X, y = make_circles(100, factor=.1, noise=.1)
>>> # calculate the rbf (gaussian) kernel between X and (0, 0)
>>> K = pairwise.rbf_kernel(X, np.array([[0, 0]]))
>>> print(K)
[[0.58581766]
 [0.74202632]
...
 [0.63660304]
 [0.98952965]]

利用这种变换,我们就可以用 SVM 在数据之间找到一个可以把两个类别区分开来的平面了:

在这里插入图片描述


  1. 《机器学习》周志华,第 6 章 支持向量机,6.3 核函数
  2. 百度百科,高斯核函数
目录
相关文章
|
21天前
|
机器学习/深度学习 算法
深入理解SVM中的核函数及其应用
深入理解SVM中的核函数及其应用
|
21天前
|
机器学习/深度学习 算法
如何在SVM中应用核函数
如何在SVM中应用核函数
|
7月前
|
算法
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
MATLAB最小二乘法:线性最小二乘、加权线性最小二乘、稳健最小二乘、非线性最小二乘与剔除异常值效果比较
|
7月前
|
机器学习/深度学习 存储 算法
SVM不同核函数区别与选择
支持向量机(Support Vector Machine,SVM)是一种常用的监督学习算法,它可以将数据从低维空间映射到高维空间,以便更好地进行分类或回归分析。SVM的关键思想是找到一个能够最大化分类边界(或称为超平面)的决策边界,这个边界可以最好地区分不同类别的数据点。
280 0
|
机器学习/深度学习 算法
非线性世界的探索:多项式回归解密
非线性世界的探索:多项式回归解密
|
机器学习/深度学习 数据采集 数据建模
【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)
【使用时空RBF-NN进行非线性系统识别】实现了 RBF、分数 RBF 和时空 RBF 神经网络,用于非线性系统识别研究(Matlab代码实现)
120 0
|
机器学习/深度学习 数据可视化 算法
分别用线性SVM和高斯核SVM预测对数据进行分类
分别用线性SVM和高斯核SVM预测对数据进行分类
163 0
|
机器学习/深度学习 传感器 算法
【拟合】基于RBF-NN 进行非线性系统识别附matlab代码
【拟合】基于RBF-NN 进行非线性系统识别附matlab代码
|
机器学习/深度学习 算法
SVM(一):线性支持向量机
SVM(一):线性支持向量机
SVM(一):线性支持向量机
|
机器学习/深度学习
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机
SVM(三):非线性支持向量机