通俗易懂的解释SVM核函数。
作者:Lili JiangAn Intuitive Explanation of Kernels in Support Vector Machine (SVM)
编译:McGL
公众号:PyVision(欢迎关注,专注CV,偶尔CS)
https://towardsdatascience.com/an-intuitive-explanation-of-kernels-in-support-vector-machine-svm-9ef366e8d5fb
简而言之,内核(kernel)是一种捷径,可以帮助我们更快地进行某些计算,否则就会涉及到更高维空间的计算。这听起来相当抽象。在这篇博文中,我将向你们展示一个只需要基本算术的简单例子。
一个简单的例子:
有一个三维向量 x = (x1,x2,x3)。我们将操作 f (x)定义为: f (x) = (x1x1,x1x2,x1x3,x2x1,x2x2,x2x3,x3x1,x3x2,x3x3)。换句话说,它希望x每个对相乘,并生成一个9维向量。
让我们代入数字,使它更直观!假设 x = (1, 2, 3); y = (4, 5, 6)。则:
f(x) = (1, 2, 3, 2, 4, 6, 3, 6, 9)
【rbf核函数|rbf核函数_SVM核函数的直观解释】f(y) = (16, 20, 24, 20, 25, 30, 24, 30, 36)
出于某种原因,我们实际上并不关心 f(x)和 f(y)。我们只想知道点积,
很多代数!主要是因为 f 是从三维空间到九维空间的映射。尽管最终的答案只是一个数字,但我们必须在中间“膨胀” ,在九维空间中完成所有这些乏味的计算,然后才能浓缩成单个数字。
文章图片
如果我告诉你有捷径呢?
我声称,“核” K(x, y ) = (
让我们来测试一下:
备注: x = (1, 2, 3); y = (4, 5, 6)
K(x, y) = (
瞧,同样的结果。但是这个计算要容易得多,因为我们只在三维空间中进行操作。我们从未涉足九维空间!
数学定义:
现在让我们继续讨论数学形式。
K(x, y) =
K 表示核函数。这里 x,y 是 n 维输入。f 是从 n 维到 m 维空间的映射。通常 m 比 n 大得多。内核是一个函数,它接受 x 和 y 作为输入,得到与 <f(x),f(y)> 相同的结果,而无需计算 f(x)和 f(y)。
内核的另一个美妙之处在于: 它们允许我们在无限维中做事情!f(x)可以是从 n 维到无限维的映射,因此不可能先写出 f(x) 和 f(y) ,然后再做点积。内核给了我们一个绝妙的捷径。其中一个例子就是径向基核函数(RBF)内核。与SVM的关系:
这与SVM有什么关系?SVM的思想是 y = w phi (x) + b,其中 w 是权重,phi 是特征向量,b 是偏差。如果 y > 0,那么我们把数据分为1类,否则分为0类。我们希望找到一组权重和偏差,使边际最大化。一些教材说,内核使SVM的数据线性可分。我认为一个更精确的说法是,内核不会使数据线性可分。特征向量 phi (x) 使数据线性可分。内核是使计算过程更快、更容易,特别是在特征向量 phi 维度很高的情况下。
为什么它也可以被理解为相似性的度量:
如果我们把以上内核的定义