我很难完全理解在使用径向基函数(RBF)时支持向量机(SVM)是如何工作的。我的数学知识还可以,但到目前为止我遇到的所有解释对我来说都太简略了。我目前的理解如下。假设我使用SVM作为二元分类器来处理一个非线性可分的数据集(所以RBF是正确的选择吗?)。当SVM被训练时,它会绘制一个最佳分离数据的超平面(我认为这就像3D中的平面,但有更多维度?)。
在调参时,改变gamma值会改变超平面的表面(也称为决策边界?)。
从这里开始我开始真正感到困惑..
所以,gamma值的增加会导致一个更窄的高斯分布。这是否意味着如果在3D中绘制,允许平面上的凸起变得更窄以更好地拟合训练数据?或者在2D中,这是否意味着gamma定义了分隔数据的线可以有多弯曲?
我还非常困惑于如何从有限数量的特征中得到无限维度的表示?任何好的类比都会对我有很大帮助。
回答:
(所以RBF是正确的选择吗?)
这取决于情况。RBF是一个非常简单、通用的核函数,可能会被使用,但还有其他几十种。例如,可以看看pykernels中包含的那些 https://github.com/gmum/pykernels
当SVM被训练时,它会绘制一个最佳分离数据的超平面(我认为这就像3D中的平面,但有更多维度?)。
让我们避免一些奇怪的混淆。这里没有任何东西被绘制。SVM会寻找由v
(法向量)和b
(偏置,原点距离)定义的d维超平面,这只是满足<v, x> = b
的一组点。在2D中,超平面是一条线,在3D中,超平面是一个平面,在d+1维中,它是一个d维对象,总是比空间低一维(线是1D,平面是2D)。
在调参时,改变gamma值会改变超平面的表面(也称为决策边界?)。
现在这是一个常见的错误。决策边界不是超平面。决策边界是超平面在输入空间上的投影。你无法观察到实际的超平面,因为它通常是非常高维的。你可以将这个超平面表示为一个函数方程,但仅此而已。另一方面,决策边界“存在”于你的输入空间中,如果输入是低维的,你甚至可以绘制这个对象。但这不是超平面,它只是超平面与你的输入空间相交的方式。这就是为什么即使超平面总是线性和连续的,决策边界往往是弯曲的甚至是不连续的——因为你只是看到了它的一个非线性部分。现在gamma
在做什么?RBF核函数导致在连续函数空间中进行优化。这些函数有很多(这些对象有一个连续体)。然而,SVM只能表达这些函数的一小部分——训练点上核值的线性组合。固定特定的gamma会限制考虑的函数集——gamma越大,核函数越窄,因此考虑的函数由这种“尖锐”分布的线性组合构成。所以gamma本身并不改变表面,它改变了考虑的假设空间。
所以,gamma值的增加会导致一个更窄的高斯分布。这是否意味着如果在3D中绘制,允许平面上的凸起变得更窄以更好地拟合训练数据?或者在2D中,这是否意味着gamma定义了分隔数据的线可以有多弯曲?
我想我已经在前面的点中回答了——高gamma意味着你只考虑形式为
<v, x> - b = SUM_i alpha_i K_gamma(x_i, x) - b
的超平面,其中K_gamma(x_i, x) = exp(-gamma ||x_i-x||^2)
,因此你会得到非常“尖锐”的基元素。这将导致对训练数据的非常紧密的拟合。决策边界的确切形状很难估计,因为这取决于训练过程中选择的最优拉格朗日乘数alpha_i
。
我还非常困惑于如何从有限数量的特征中得到无限维度的表示?任何好的类比都会对我有很大帮助。
“无限表示”来自于这样一个事实,为了处理向量和超平面,你的每个点实际上都被映射到一个连续函数。所以SVM在内部实际上不再处理d维点,而是处理函数。考虑2D情况,你有点[0,0]和[1,1]。这是一个简单的2D问题。当你在这里应用带有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))
,你将不得不列出无限数量的这样的值来完全定义它。这就是无限维度的概念——你将点映射到函数,函数在向量空间中是无限维的,因此你的表示是无限维的。
一个好的例子可能是不同的映射。考虑一个1D数据集,数字1,2,3,4,5,6,7,8,9,10。让我们给奇数和偶数分配不同的标签。你无法线性分离这些点。但你可以将每个点(数字)映射到一种特征函数,形式为
f_x(y) = 1 iff x e [y-0.5, y+0.5]
现在,在所有这样的函数空间中,我可以通过简单地构建方程为
<v, x> = SUM_[v_odd] <f_[v_odd](y), f_x(y)> = INTEGRAL (f_v * f_x) (y) dy
的超平面,轻松地线性分离由奇数x创建的函数与其他函数。这将等于1当且仅当x是奇数,因为只有这个积分是非零的。显然我只是使用了有限数量的训练点(这里的v_odd),但表示本身是无限维的。这额外的“信息”从哪里来?来自我的假设——我定义的映射在所考虑的空间中引入了特定的结构。同样地,RBF给你无限维度,但这并不意味着你实际上考虑了每个连续函数——你限制自己为以训练点为中心的高斯分布的线性组合。同样,你可以使用正弦核函数,这将你限制为正弦函数的组合。选择特定的、最佳的核函数是另一个复杂且没有明确答案的故事。希望这对你有所帮助。