【问题标题】:non linear svm kernel dimension非线性支持向量机内核维度
【发布时间】:2012-10-12 09:52:23
【问题描述】:

我在理解非线性 SVM 的内核方面存在一些问题。 首先我对非线性 SVM 的理解是:使用内核将输入转换到一个非常高维的空间,其中转换后的输入可以被一个线性超平面分开。

内核例如:RBF:

         K(x_i, x_j) = exp(-||x_i - x_j||^2/(2*sigma^2));

其中 x_i 和 x_j 是两个输入。在这里,我们需要更改 sigma 以适应我们的问题。

       (1) Say if my input dimension is d, what will be the dimension of the 
           transformed space?

       (2) If the transformed space has a dimension of more than 10000 is it 
           effective to use a linear SVM there to separate the inputs?

【问题讨论】:

    标签: machine-learning computer-vision svm libsvm pattern-recognition


    【解决方案1】:

    您的问题是一个非常自然的问题,几乎所有了解内核方法的人都会提出一些变体。但是,我不会尝试根据线性超平面运行的隐含特征空间来理解非线性内核发生了什么,因为大多数非平凡内核具有很难可视化的特征空间。

    相反,专注于理解kernel trick,并将内核视为在输入空间中引入一种特定形式的非线性决策边界。由于内核技巧,以及一些相当令人生畏的数学,如果您不熟悉它,任何满足某些属性的内核函数都可以被视为在某些特征空间中运行,但永远不会执行到该空间的映射时间>。如果您有兴趣,可以阅读以下(相当)可访问的教程:from zero to Reproducing Kernel Hilbert Spaces in twelve pages or less

    还请注意,由于根据松弛变量的公式,超平面不必精确分离点:有一个目标函数正在被最大化,其中包含对错误分类实例的惩罚,但如果边缘为在大多数情况下生成的分类器更好。基本上,我们正在根据以下标准优化分类规则:

    1. 边距有多大
    2. 训练集上的错误

    SVM 公式使我们能够有效地解决这个问题。一个内核或另一个内核是否更好取决于应用程序(例如,文本分类和其他语言处理问题通常使用线性内核显示最佳性能,这可能是由于输入数据的极端维度)。没有真正的替代品可以尝试一堆,看看哪个效果最好(并确保 SVM 超参数设置正确---this talk by one of the LibSVM authors has the gory details)。

    【讨论】:

      【解决方案2】:

      嗯,这不仅仅是增加维度的问题。这是一般机制,但不是全部想法,如果内核映射的唯一目标是增加维度是真的,我们可以得出结论,所有内核函数都是等价的,但它们不是。

      映射的制作方式可以在新空间中实现线性分离。 谈到您的示例,并且只是为了扩展 greeness 所说的内容,RBF 内核将根据超球体对特征空间进行排序,其中输入向量需要接近现有球体才能产生激活。

      所以直接回答你的问题:

      1) 请注意,您不直接在特征空间上工作。相反,优化问题是使用特征空间中向量的内积来解决的,因此在计算上您不会增加向量的维数。

      2)这取决于您的数据的性质,具有高维模式会以某种方式帮助您防止过度拟合,但不一定是线性可分的。同样,新空间中的线性可分离性将因为地图的制作方式而实现,而不仅仅是因为它在更高的维度中。从这个意义上说,RBF 会有所帮助,但请记住,如果您的数据不是局部封闭的,它可能无法很好地进行泛化。

      【讨论】:

        【解决方案3】:

        转换通常会增加数据的维数,不一定非常多。这取决于。 RBF 内核是最流行的内核函数之一。它在每个数据点周围添加了一个“凹凸”。对应的特征空间是无限维的希尔伯特空间。

        在不了解数据的具体背景的情况下,很难判断转换为 10000 维对分类是否有效。但是,为您的问题选择一个好的映射(编码先验知识 + 获得函数类的正确复杂性)可以改善结果。

        例如,MNIST database of handwritten digits 包含 60K 训练示例和 10K 测试示例,具有 28x28 二进制图像。

        • 线性 SVM 的测试误差约为 8.5%。
        • 多项式 SVM 的测试误差约为 1%。

        【讨论】:

          猜你喜欢
          • 2016-02-20
          • 2011-08-25
          • 2018-02-05
          • 2014-09-24
          • 2012-06-14
          • 2015-05-31
          • 2016-04-21
          • 2017-08-12
          • 2018-08-28
          相关资源
          最近更新 更多