首页 文章

帮助我理解二进制SVM中的线性可分性

提问于
浏览
5

我从math.stackexchange.com交叉发布这个,因为我对我来说是一个时间敏感的问题 .


我的问题涉及支持向量机中与超平面的线性可分性 .

根据Wikipedia

...正式地,支持向量机在高维或无限维空间中构造超平面或超平面集,其可用于分类,回归或其他任务 . 直观地,通过与任何类的最近训练数据点具有最大距离的超平面(所谓的功能边界)实现良好的分离,因为通常边缘越大,分类器分类的泛化误差越低 .

超平面对类的线性分离直观地对我有意义 . 而且我认为我理解二维几何的线性可分性 . 但是,我正在使用流行的SVM库(libSVM)实现SVM,当弄乱数字时,我无法理解SVM如何在类之间创建曲线,或者在圆形曲线内将类别1中的中心点包围起来 . 如果n维空间V中的超平面是维度n-1的“平坦”子集,或者对于二维空间 - 1D线,则由类别2中的点包围 .

这就是我的意思:

circularly enclosed class separation for a 2D binary SVM

那不是超平面 . 这是循环的 . 这是如何运作的?或者SVM内部的维度是否比二维2D输入功能更多?


此示例应用程序可以下载here .


编辑:

感谢您的全面解答 . 因此,SVM可以通过使用内核函数很好地分离奇怪的数据 . 在将数据发送到SVM之前将数据线性化是否有帮助?例如,我的一个输入要素(一个数值)有一个转折点(例如0),它完全符合第1类,但在零和零之下,它适合第2类 . 现在,因为我知道这一点,它会不会帮助分类为SVM发送此功能的绝对值?

7 回答

  • 2

    我对SVM并不熟悉,但从我的研究回忆起,它们经常被用于“核心功能” - 实质上是标准内部产品的替代品,它有效地使空间非线性化 . 它松散地等同于将空间的非线性变换应用到应用线性分类器的某个“工作空间”,然后将结果拉回到原始空间,分类器使用的线性子空间不再是线性的 .

    维基百科文章确实在"Non-linear classification"小节中提到了这一点,并提供了一个指向http://en.wikipedia.org/wiki/Kernel_trick的链接,该链接更普遍地解释了该技术 .

  • 0

    正如mokus所解释的那样,支持向量机使用内核函数将数据隐式映射到可以线性分离的特征空间:

    SVM mapping one feature space into another

    不同的内核函数用于各种数据 . 请注意,图片中的变换会添加额外的维度(要素),但此功能从未在内存中实现 .

    (插图来自Chris Thornton, U. Sussex . )

  • 1

    看看这个YouTube video,它说明了一个线性不可分离的点的例子,当映射到更高的维度时,这些点可以被平面分离 .

    alt text

  • 11

    这是通过应用所谓的[Kernel Trick]来实现的(http://en.wikipedia.org/wiki/Kernel_trick)基本上做的是,如果在现有输入空间(在你的情况下是2-D)中某些东西不是线性可分的,那么它被投射到更高的维度这可以分开 . 应用内核函数(可以是非线性的)来修改特征空间 . 然后在该特征空间中执行所有计算(其可能也具有无限维度) .

    使用此内核函数转换输入中的每个点,并执行所有进一步的计算,就像这是您的原始输入空间一样 . 因此,您的点可以在更高维度(可能是无限)中分离,因此更高维度的线性超平面在原始维度中可能不是线性的 .

    举一个简单的例子,考虑XOR的例子 . 如果在X轴上绘制Input1,在Y轴上绘制Input2,则输出类将为:

    • 0级:(0,0),(1,1)

    • 第1类:(0,1),(1,0)

    正如您所看到的,它在2-D中不是线性可分离的 . 但是,如果我在3-D中采用这些有序对,(通过在3-D中移动1点)说:

    • 0级:(0,0,1),(1,1,0)

    • 第1类:(0,1,0),(1,0,0)

    现在您可以很容易地观察到三维中有一个平面线性地分离这两个类 .

    因此,如果将输入投影到足够大的维度(可能是无限的),那么您将能够在该维度中线性分离您的类 .

    这里需要注意的一个重点(也许我也会回答你的另一个问题)是你不必自己创建一个内核函数(就像我上面提到的那样) . 好处是内核函数会自动处理您的输入和弄清楚如何“线性化”它 .

  • 0

    对于在二维空间中给出的问题中的SVM示例,让x1,x2为两个轴 . 您可以使用变换函数F = x1 ^ 2 x2 ^ 2并将此问题转换为1-D空间问题 . 如果您仔细注意,您可以看到在变换空间中,您可以轻松地线性分离点(F轴上的阈值) . 这里变换的空间是[F](1维) . 在大多数情况下,您将增加维度以获得线性可分离的超平面 .

  • 3
  • 8

    My answer to a previous question可能会对这种情况下发生的事情有所了解 . 我给出的例子是非常人为的,而不是真正在SVM中发生的事情,但它应该给你直觉 .

相关问题