解释径向基函数在支持向量机中的工作原理

bid*_*dby 1 kernel machine-learning gaussian svm

我无法准确理解 SVM 在使用 RBF 时的工作原理。我的数学知识还可以,但到目前为止我遇到的每一个解释对我来说都太简洁了。我目前的理解如下。假设我使用 SVM 作为不可线性分离的数据集的二元分类器(所以 rbf 是正确的选择?)。当 SVM 被训练时,它会绘制一个超平面(我认为它就像 3d 中的平面,但具有更多维度?),以最好地分离数据。

调整时,改变 gamma 的值会改变超平面的表面(也称为决策边界?)。

这就是我开始感到困惑的地方。

因此,伽马值的增加会导致高斯分布更窄。这是否就像说可以绘制的平面上的凹凸(如果以 3d 形式绘制)可以更窄以更好地拟合训练数据?或者在 2D 中,这就像伽玛定义了分隔数据的线的弯曲程度一样?

我也很困惑这如何从有限数量的特征中产生无限维度的表示?任何好的类比都会对我有很大帮助。

lej*_*lot 5

(所以 rbf 是正确的选择?)

这取决于。RBF 是非常简单的通用内核,可以使用,但还有许多其他内核。看看 pykernels 中包含的示例https://github.com/gmum/pykernels

当 SVM 被训练时,它会绘制一个超平面(我认为它就像 3d 中的平面,但具有更多维度?),以最好地分离数据。

让我们避免一些奇怪的混乱。这里没有绘制任何内容。SVM 将寻找由v(法线向量)和b(偏差,距原点的距离)定义的 d 维超平面,它只是一组点,x使得<v, x> = b。在 2D 超平面中是一条线,在 3D 超平面中是平面,在 d+1 维度中它是 d 维对象,总是比空间低一维(线是 1D,平面是 2D)。

调整时,改变 gamma 的值会改变超平面的表面(也称为决策边界?)。

现在这是一个经常犯的错误。决策边界不是超平面。决策边界是超平面到输入空间的投影。您无法观察实际的超平面,因为它通常具有非常高的维度。您可以将该超平面表示为函数方程,但仅此而已。另一方面,决策边界“存在”在您的输入空间中,如果输入是低维的,您甚至可以绘制该对象。但这不是超平面,它只是超平面与输入空间相交的方式。这就是为什么决策边界经常是弯曲的,甚至是不连续的,即使超平面总是线性且连续的——因为你只能看到它的非线性部分。现在在gamma做什么?RBF核导致连续函数空间的最优化。这些对象还有很多(此类对象是连续体)。然而,SVM 只能表达其中的一小部分——训练点中核值的线性组合。固定特定的伽玛限制要考虑的函数集 - 伽玛越大,内核越窄,因此正在考虑的函数由此类“尖峰”分布的线性组合组成。因此伽马本身不会改变表面,它会改变所考虑的假设的空间。

因此,伽马值的增加会导致高斯分布更窄。这是否就像说可以绘制的平面上的凹凸(如果以 3d 形式绘制)可以更窄以更好地拟合训练数据?或者在 2D 中,这就像伽玛定义了分隔数据的线的弯曲程度一样?

我想我回答了之前的观点 - 高伽玛意味着你只考虑形式的超平面

<v, x> - b = SUM_i alpha_i K_gamma(x_i, x) - b
Run Code Online (Sandbox Code Playgroud)

其中K_gamma(x_i, x) = exp(-gamma ||x_i-x||^2),因此您将获得基础中非常“尖峰”的元素。这将导致与您的训练数据非常紧密地契合。决策边界的确切形状很难估计,因为这取决于alpha_i训练期间选择的最佳拉格朗日乘数。

我也很困惑这如何从有限数量的特征中产生无限维度的表示?任何好的类比都会对我有很大帮助。

“无限表示”来自这样一个事实:为了使用向量和超平面,每个点实际上都映射到一个连续函数。因此,SVM 在内部不再真正处理 d 维点,而是处理函数。考虑二维情况,你有点 [0,0] 和 [1,1]。这是一个简单的二维问题。当您在此处应用带有 rbf 内核的 SVM 时,您将使用以 [0, 0] 为中心的非标准化高斯分布,以及以 [1,1] 为中心的另一个非标准化高斯分布。每个这样的高斯都是从 R^2 到 R 的函数,它表示其概率密度函数 (pdf)。这有点令人困惑,因为内核看起来也像高斯,但这只是因为两个函数的点积通常被定义为它们的乘积的积分,而两个高斯的乘积的积分也是......高斯!那么这个无穷大在哪里呢?请记住,您应该使用向量。如何将函数写成向量?您必须列出它的所有值,因此如果您有一个函数,f(x) = 1/sqrt(2*pi(sigma^2) exp(-||x-m||^2 / (2*sigma^2))您将必须列出无限数量的此类值才能完全定义它。这就是无限维的概念 - 您将点映射到函数,函数在向量空间方面是无限维的,因此您的表示是无限维的。

一个很好的例子可能是不同的映射。考虑数字 1、2、3、4、5、6、7、8、9、10 的一维数据集。让我们为奇数分配与偶数不同的标签。你无法线性地将这些人分开。但是您可以将每个点(数字)映射到一种特征函数,即以下形式的函数

f_x(y) = 1 iff x e [y-0.5, y+0.5]
Run Code Online (Sandbox Code Playgroud)

现在,在所有这些函数的空间中,我可以通过简单地构建方程的超平面,轻松地将由奇数 x 创建的函数与其余函数线性分离

<v, x> = SUM_[v_odd] <f_[v_odd](y), f_x(y)> = INTEGRAL (f_v * f_x) (y) dy
Run Code Online (Sandbox Code Playgroud)

当且仅当 x 为奇数时,这将等于 1,因为只有该积分才非零。显然,我只是使用有限数量的训练点(此处为 v_odd),但表示本身是无限维的。这些额外的“信息”从哪里来?根据我的假设 - 我定义映射的方式在我正在考虑的空间中引入了特定的结构。与 RBF 类似 - 您获得无限维,但这并不意味着您实际上正在考虑每个连续函数 - 您将自己限制为以训练点为中心的高斯线性组合。类似地,您可以使用正弦内核,它将您限制为正弦函数的组合。选择特定的“最佳”内核是另一回事,复杂且没有明确的答案。希望这个对你有帮助。