Machine learning 支持向量机核类型

Machine learning 支持向量机核类型,machine-learning,svm,Machine Learning,Svm,支持向量机中常用的核函数有线性、径向基函数和多项式。有人能用简单的方式解释一下这个内核函数是什么吗:)因为我对这个领域还不太熟悉,所以我不清楚这些内核类型的重要性。让我们从这个问题开始。支持向量机是一种线性模型,它总是寻找一个超平面来将一个类与另一个类分开。我将重点讨论二维的情况,因为它更容易理解,并且可以通过可视化给出一些直觉,但是请记住,这对于更高的维度是正确的(简单地说,线变成平面,抛物线变成抛物面等等) 简而言之,内核 内核所做的是改变线性公式中点积的定义。这是什么意思?对于定义为=x^

支持向量机中常用的核函数有线性、径向基函数和多项式。有人能用简单的方式解释一下这个内核函数是什么吗:)因为我对这个领域还不太熟悉,所以我不清楚这些内核类型的重要性。

让我们从这个问题开始。支持向量机是一种线性模型,它总是寻找一个超平面来将一个类与另一个类分开。我将重点讨论二维的情况,因为它更容易理解,并且可以通过可视化给出一些直觉,但是请记住,这对于更高的维度是正确的(简单地说,线变成平面,抛物线变成抛物面等等)

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

线性核 在这里,我们实际上没有任何内核,您只有“正常”点积,因此在2d中,您的决策边界始终是直线

正如您所见,我们可以正确地分离大多数点,但由于我们假设的“刚性”,我们永远不会捕获所有点

聚 在这里,我们的内核在一定程度上诱导了特征多项式组合的空间。因此,我们可以处理稍微“弯曲”的决策边界,例如阶数为2的抛物线

如你所见-我们分离了更多的点!好的,我们能用高阶多项式得到所有的点吗?让我们试试4

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

径向基核函数 在这里,我们的诱导空间是一个高斯分布的空间…每个点都成为正态分布的概率密度函数(直至标度)。在这样的空间中,点积是积分(因为我们有无限多个维度!),因此,我们具有极大的灵活性,事实上,使用这样的核可以分离所有东西(但它好吗?)

粗略比较 好的,那么主要的区别是什么呢?我现在将根据几个度量对这三个内核进行排序

  • 支持向量机学习时间:线性
  • 拟合任何数据的能力:线性<多边形<径向基函数
  • 过度拟合风险:线性
  • 拟合不良风险:rbf
  • 超参数数量:线性(0)
  • 如何“局部”是特定的核:线性
那么选择哪一个呢?这取决于。Vapnik和Cortes(支持向量机的发明者)非常支持这样一种观点,即您应该始终尝试拟合尽可能最简单的模型,并且只有在拟合不足的情况下,才去拟合更复杂的模型。因此,您通常应该从线性模型(支持向量机的内核)开始如果它的分数真的很差-切换到poly/rbf(但是请记住,由于超参数的数量,使用它们要困难得多)

所有的图片都是在libSVM的网站上用一个很好的小程序完成的-试试看,没有什么比大量的图片和交互更能让你直观:-)

谢谢你非常宝贵的回答:)@lejilot你能为我提供这句话的资源吗:Vapnik和Cortes(支持向量机的发明者)非常支持这样一种观点,即你应该尽可能地尝试拟合最简单的模型,并且只有在它不适合的情况下——去拟合更复杂的模型。是的,Vladimir Vapnik的“统计学习理论”-