支持向量机核类型

在支持向量机中常用的核函数有线性核、径向基函数核和多项式核。请问有人能用简单的方式解释一下什么是核函数吗?我刚接触这个领域,对这些核类型的重要性还不太理解。


回答:

让我们从头开始。支持向量机是一种线性模型,它总是寻找一个超平面来将一个类别与另一个类别分开。我将重点放在二维情况,因为它更容易理解,并且可以可视化以提供一些直觉,但请记住,这在更高维度中也是成立的(只是线变成了平面,抛物线变成了抛物面等)。

简短的核函数介绍

核函数的作用是改变线性公式中点积的定义。这是什么意思呢?SVM使用点积,对于有限维度定义为<x,y> = x^Ty = SUM_{i=1}^d x_i y_i。这大致捕捉了两个向量之间的相似性(但也是一种几何投影操作,与向量之间的角度密切相关)。核技巧所做的是将SVM数学中的每个<x,y>替换为K(x,y),表示“K是在某个空间中的点积”,并且对于每个核函数都存在一个映射f_K,使得K(x,y)=<f_K(x), f_K(y)>,诀窍在于,你不直接使用f_K,而是只计算它们的点积,这为你节省了大量时间(有时是无限的时间,因为f_K(x)可能有无限维度)。那么,这对我们意味着什么呢?我们仍然“生活”在x的空间中,而不是f_K(x)的空间中。结果相当不错——如果你在f_K的空间中构建一个超平面,分隔你的数据,然后回顾x的空间(你可以说你通过f_K^{-1}将超平面投影回来),你会得到非线性决策边界!边界的类型取决于f_K,f_K取决于K,因此,K的选择(除其他因素外)会影响边界的形状。

线性核

在这里,实际上我们没有使用任何核函数,你只是使用“正常”的点积,因此在二维中你的决策边界总是直线。

SVM_lin

如你所见,我们可以正确地分隔大部分点,但由于我们假设的“僵硬性”——我们永远无法捕捉到所有点。

多项式核

在这里,我们的核函数引入了我们特征的多项式组合空间,直到某个程度。因此,我们可以处理稍微“弯曲”的决策边界,例如度数为2的抛物线

SVM_poly2

如你所见——我们分隔了更多的点!那么,我们可以通过使用更高阶的多项式来捕捉所有点吗?让我们尝试4次方!

SVM_poly4

遗憾的是不行。为什么?因为多项式组合不够灵活。它不会“弯曲”我们的空间到足以捕捉我们想要的程度(也许这并不那么糟糕?我是说——看看这个点,它看起来像一个异常值!)。

RBF核

在这里,我们引入了高斯分布的空间…每个点都变成了(经过缩放的)正态分布的概率密度函数。在这样的空间中,点积是积分(因为我们确实有无限维度!),因此,我们具有极大的灵活性,事实上,使用这样的核函数你可以分隔一切(但这好吗?)

SVM_rbf

粗略比较

那么,主要区别是什么?我现在将这三个核函数按几个标准进行排序

  • SVM学习时间:线性 < 多项式 < RBF
  • 拟合任何数据的能力:线性 < 多项式 < RBF
  • 过拟合风险:线性 < 多项式 < RBF
  • 欠拟合风险:RBF < 多项式 < 线性
  • 超参数数量:线性(0) < RBF(2) < 多项式(3)
  • 特定核函数的“局部性”:线性 < 多项式 < RBF

那么应该选择哪一个呢?这取决于情况。Vapnik和Cortes(SVM的发明者)很好地支持了这样一个观点:你总是应该尝试拟合尽可能简单的模型,只有在它欠拟合时——才转向更复杂的模型。因此,你通常应该从线性模型(在SVM的情况下是核函数)开始,如果它的表现非常差——切换到多项式/RBF(然而请记住,由于超参数的数量,与它们一起工作要困难得多)

所有图像都是使用libSVM网站上的一个很好的小程序制作的——试试看吧,没有什么比大量的图像和互动更能给你直觉了 🙂https://www.csie.ntu.edu.tw/~cjlin/libsvm/

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注