我是机器学习领域的新手,基本上是在自学,我正在阅读一些与支持向量机相关的论文,因为我正计划用它来解决我的文本分类问题。然而,我无法在任何论文中取得很大进展,因为我一直坚持内核和内核方法的概念并将数据映射到更高的维度。
我知道这很有用,因为我看过整本教科书都是关于内核方法和内核编写的,但是有人可以从一个非常基础的层面上发布关于内核和内核方法的解释,因为我已经看过所有的解释到目前为止,假设有一定的关于该领域的先验知识。
另外,我有点不清楚内核函数以及它如何用于将“数据映射到更高维空间”,如果有人可以请我澄清这些概念或者指向一个基本资源来解释这些东西来自基本水平,我将非常感激。
提前致谢。
答案 0 :(得分:4)
很难将复杂的数学提炼到一个简单的水平,但这个例子有助于我相信。
我道歉,似乎Stack Overflow不像Computional Science那样支持数学标记,所以你必须忍受一些糟糕的基于文本的方程式。矢量 x = [ x 1 , x 2 ],所以 x 1 是向量 x 的第一个组成部分。
为简单起见,我们假设每个训练示例只有两个属性,因此您的数据是二维的。您已经开发了一个映射函数,可以将这两个属性映射到三个属性的更高维度。您的映射功能如下:
Φ( x )= [ x 1 2 , x 2 < / sub> 2 , x 1 * x 2 ]
在SVM拉格朗日公式中:
每个训练示例都显示为内部产品,并带有另一个训练示例(上图在第一个等式中显示了这一点)。如果你想使用你的映射函数,你可以为每个训练样例插入它。
如果你这样做,当然你必须明确地计算每个训练样本的Φ( x ),然后计算你的高维空间中两个向量的内积。如果我们对两个向量 x 和 y 执行此操作,我们会:
Φ( x )*Φ( y )= [ x 1 2 , x 2 2 , x 1 * x < sub> 2 ] * [ y 1 2 , y 2 2 , y 1 * y 2 ] = < em> x 1 2 * y 1 2 + < em> x 2 2 * y 2 2 + < em> x 1 * x 2 * y 1 * ý<子> 2 子> 的
想象一下,你使用多项式内核 K ( x , y )=( x * y ) d ,学位为2,你会得到:
K ( x , y )=( x 1 * < em> y 1 + x 2 * y 2 ) 2 = x 1 2 * y 1 2 + x 2 2 * y 2 2 + x 1 * x 2 * y 1 * y 2
核函数允许您在计算内积之前避免计算更高维空间,但仍然导致在更高维空间中的两个向量的内积。在这种情况下,我们保持示例简单,因此我们可以明确地完成它,但是Mercer's Theorem表明我们可以证明这对其他函数是正确的,而不必知道显式映射,只要函数服从{{3 }}。您可以看到内核参数 d 如何显着影响映射, d = 3 会导致完全不同的映射,因此更改内核参数会修改更高维空间
由于高维映射从未明确使用,而只是作为选择最佳alpha的方法,我们并不需要知道它是什么,我们可以利用它而无需计算它。 / p>
答案 1 :(得分:0)
由于您的应用程序是文本分类,因此您无需担心非线性内核。文本已经“生活”在高维度(和稀疏)空间中,并且不需要进入更高维度的空间。
您可以放心地尝试使用Linear内核。
阅读经典的Joachims论文和论文,SVMLight的作者,对文本分类进行深入理解。