支持向量机中使用的流行内核函数是线性,径向基函数和多项式。有人可以用简单的方式来阐述这个内核功能:)由于我是这个领域的新手,我不清楚这些内核类型的重要性。
答案 0 :(得分:17)
让我们从开始。支持向量机是一个线性模型,它总是寻找超平面将一个类与另一个类分开。我将重点关注二维案例,因为它更易于理解,并且 - 可视化以提供一些直觉,但请记住,这对于更高维度(简单的线条变为平面,抛物线变为抛物线等)都是如此。 / p>
内核在线性公式中更改点积的定义。这是什么意思? SVM适用于点积,适用于定义为<x,y> = x^Ty = SUM_{i=1}^d x_i y_i
的有限维。这或多或少捕获两个矢量之间的相似性(但也是投影的几何操作,它也与矢量之间的角度密切相关)。内核技巧的作用是将SVM数学中<x,y>
的每个出现更改为K(x,y)
说&#34; K是SOME空间中的点积&#34;并且每个内核都存在映射f_K ,K(x,y)=<f_K(x), f_K(y)>
诀窍是,你不直接使用f_K,而只是计算他们的点积,这可以节省大量的时间(有时 - 无限量,因为f_K(x)可能有无限多个维度) 。好吧,那么它对我们有什么影响?我们仍然&#34;生活&#34;在x的空间中,而不是f_K(x)。结果非常好 - 如果你在f_K的空间中构建超平面,分离你的数据,然后回顾x的空间(所以你可能会说你通过f_K ^ { - 1}投影超平面)你会得到非线性的决定界限!边界的类型取决于f_K,f_K取决于K,因此,K的选择(除其他外)将影响边界的形状。
这里我们实际上没有任何内核,你只需要#34;正常&#34;点积,因此在2d你的决策边界总是线。
正如您所看到的,我们可以正确地分离大多数点,但由于&#34;刚度&#34;我们的假设 - 我们永远不会捕获所有这些。
在这里,我们的内核在一定程度上引入了我们特征的多项式组合的空间。因此,我们可以轻微地工作&#34;弯曲&#34;决策边界,例如度数为2的抛物线
正如你所看到的 - 我们分开了更多的积分!好的,我们可以通过使用更高阶的多项式来获得所有这些吗?让我们尝试4!
不幸的是没有。为什么?因为多项式组合不够灵活。它不会弯曲&#34;我们的空间足以捕获我们想要的东西(也许它不是那么糟糕?我的意思是 - 看看这一点,它看起来像一个异常值!)。
这里,我们的诱导空间是高斯分布的空间......每个点都成为正态分布的概率密度函数(直到缩放)。在这样的空间中,点积是积分(因为我们有无数个维度!)因此,我们有极大的灵活性,事实上,使用这样的内核你可以分离所有东西(但它是否好?)
好的,那么主要区别是什么?我现在将根据一些措施对这三个内核进行排序
那么选择哪一个?这取决于。 Vapnik和Cortes(SVM的发明者)非常支持你总是应该尝试使用最简单的模型并且只有当它不合适时 - 去寻找更复杂的模型。所以你通常应该从线性模型开始(在SVM的情况下是内核),如果得分非常糟糕 - 切换到poly / rbf(但请记住,由于超参数的数量,使用它们要困难得多)
使用libSVM网站上的一个漂亮的小程序完成所有图像 - 尝试一下,没有什么能让你更直观,然后是大量的图像和交互:-) https://www.csie.ntu.edu.tw/~cjlin/libsvm/