支持向量机中常用的核函数是线性、径向基函数和多项式。有人可以用简单的方式解释这个内核函数是什么吗:) 因为我是这个领域的新手,所以我不清楚这些内核类型的重要性是什么。
最佳答案
让我们从头开始。支持向量机是一种线性模型,它总是寻找一个超平面来将一个类与另一个类分开。我将专注于二维情况,因为它更容易理解并且 - 可以形象化以提供一些直觉,但请记住,这对于更高维度是正确的(简单地将线变为平面,抛物线变为抛物面等)。
用非常简短的话来说内核
内核做的是更改点积的定义 在线性公式中。这是什么意思? SVM 使用点积,对于定义为 <x,y> = x^Ty = SUM_{i=1}^d x_i y_i
的有限维度.这或多或少地捕捉了两个向量之间的相似性(也是投影的几何运算,它也与向量之间的角度密切相关)。内核技巧的作用是改变 <x,y>
的每次出现。在 SVM 的数学中转化为 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 的选择将(除其他外)影响边界的形状。
线性核
在这里,我们实际上没有任何内核,您只有“正常”点积,因此在 2d 中,您的决策边界始终是线。
如您所见,我们可以正确地分离大部分点,但由于我们假设的“僵硬性” - 我们永远不会捕获所有点。
保利
在这里,我们的内核在一定程度上引入了我们特征的多项式组合空间。因此,我们可以使用稍微“弯曲”的决策边界,例如度数 = 2 的抛物线
如您所见 - 我们分离了更多点!好的,我们可以通过使用高阶多项式得到所有这些吗?让我们试试4!
不幸的是没有。为什么?因为多项式组合不够灵活。它不会“弯曲”我们的空间来捕捉我们想要的东西(也许它并没有那么糟糕?我的意思是 - 看看这一点,它看起来像一个异常值!)。
RBF内核
在这里,我们的诱导空间是高斯分布的空间……每个点都成为正态分布的概率密度函数(按比例缩放)。在这样的空间中,点积是积分(因为我们确实有无限多个维度!)因此,我们具有极大的灵活性,事实上,使用这样的内核你可以分离所有东西(但这很好吗?)
粗略比较
好的,那么主要区别是什么?我现在将在几个措施下对这三个内核进行排序
那么该选择哪一个呢?这取决于。 Vapnik 和 Cortes(SVM 的发明者)非常支持你总是应该尝试适应的想法 最简单的模型 并且仅当它不适合时 - 选择更复杂的。所以你通常应该从线性模型(SVM 情况下的内核)开始,如果它得到非常糟糕的分数 - 切换到 poly/rbf(但是请记住,由于超参数的数量,使用它们要困难得多)
所有图像都使用 libSVM 网站上的一个漂亮的小程序完成 - 试一试,没有什么比大量图像和交互更直观了:-)
https://www.csie.ntu.edu.tw/~cjlin/libsvm/
关于machine-learning - 支持向量机内核类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33778297/