支持向量机核函数类型

10

支持向量机中常用的核函数包括线性、径向基函数和多项式函数。有没有人能简单地解释一下这个核函数是什么呢?因为我是新手,不太清楚这些核函数类型的重要性。

1个回答

26

让我们从头开始。支持向量机(Support Vector Machine)是一种线性模型,它始终寻找一个超平面来分离一类数据和另一类数据。我将重点介绍二维情况,因为更容易理解和可视化,但请记住,这也适用于更高的维度(线变成面,抛物线变成抛物面等等)。

简单介绍核函数

核函数所做的是改变线性公式中的点积定义。这意味着什么?SVM使用点积计算相似性,对于有限维度来说,可以定义为<x,y> = x^Ty = SUM_{i=1}^d x_i y_i。这大致捕获了两个向量之间的相似性(但也是一个几何投影操作,与向量之间的夹角密切相关)。核技巧所做的是,将数学公式中每个<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

从上图可以看出我们能够正确地分离大多数点,但由于我们的假设"僵硬",我们将无法捕获所有点。

Poly

此处,我们的核心诱导了我们特征的多项式组合空间,最高可达一定程度。因此,我们可以处理略微"弯曲"的决策边界,例如二次项为2的抛物线。

SVM_poly2

如您所见-我们分离了更多的点!好的,如果我们使用更高阶的多项式,能否得到它们所有的分离?让我们尝试4!

SVM_poly4

不幸的是不行。为什么?因为多项式组合不够灵活。它不会足够"弯曲"我们的空间去捕捉我们想要的东西(也许这不是那么糟糕?我的意思是-看看这个点,它看起来像一个异常值!)。

RBF kernel

此处,我们诱导的空间是高斯分布的空间......每个点成为一个正态分布的概率密度函数(最多只能缩放)。在这样的空间中,点积是积分(因为我们有无限多的维度!),因此我们具有极端的灵活性,事实上,使用这样的核,您可以分离一切(但这好吗?)

SVM_rbf

大致比较

好的,那么主要差异是什么?我将根据以下几项措施对这三个内核进行排序:

  • SVM学习时间: 线性核 < 多项式核 < 径向基核(rbf)
  • 适应任何数据的能力: 线性核 < 多项式核 < 径向基核(rbf)
  • 过拟合风险: 线性核 < 多项式核 < 径向基核(rbf)
  • 欠拟合风险: 径向基核(rbf)< 多项式核 < 线性核
  • 超参数数量: 线性核(0)< 径向基核(2)< 多项式核(3)
  • 核函数的“局部”程度: 线性核 < 多项式核 < 径向基核(rbf)
  • 那么应该选择哪一个呢?Vapnik和Cortes(SVM的发明人)支持这个想法:你始终应该尝试使用最简单的模型,只有在它欠拟合时才转为更复杂的模型。因此,通常应从线性模型(在SVM中是核函数)开始,如果它得分真的很差,就切换到多项式/径向基核(但请记住,由于超参数的数量,使用它们要困难得多)

    所有的图像都是使用libSVM网站上很好的应用程序制作的-不妨试试,没有什么比大量的图像和交互更能给你直观感受 :-) https://www.csie.ntu.edu.tw/~cjlin/libsvm/


1
非常感谢您宝贵的回答 :) - user5232014
1
@lejilot,你能否提供我这句话的资源:Vapnik和Cortes(SVM的发明者)非常支持这个想法,即你应该尽可能地拟合最简单的模型,只有在欠拟合时才去使用更复杂的模型。 - user5232014
1
是的,“统计学习理论”一书是由弗拉基米尔·瓦普尼克所著 - http://www.amazon.com/Statistical-Learning-Theory-Vladimir-Vapnik/dp/0471030031 - lejlot

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接