支持向量机背后的基本理念

Posted

技术标签:

【中文标题】支持向量机背后的基本理念【英文标题】:Essential philosophy behind Support Vector Machine 【发布时间】:2012-07-14 22:08:08 【问题描述】:

我正在通过阅读大量材料来研究支持向量机 (SVM)。但是,似乎大部分都集中在如何通过使用线性、多项式、RBF / Gaussian 等多个内核对其进行映射来对输入的 2D 数据进行分类。

我的第一个问题是,SVM 可以处理高维 (n-D) 输入数据吗?

根据我的发现,答案是肯定的!

如果我的理解是正确的,n-D 输入数据将是

    在希尔伯特超空间中构建,然后这些数据将被 通过使用一些方法(例如 PCA ?)将其组合在一起/将其投影回 2D 平面进行简化,这样 内核方法可以将其映射成适当的形状,例如线或曲线可以将其分成不同的组。

这意味着大多数指南/教程都集中在第 (3) 步。但是如果输入数据大于 2D,我检查过的一些工具箱无法绘制。投影到二维后的数据如何?

如果没有数据的投影,他们如何分类?

我的第二个问题是:我的理解正确吗?

【问题讨论】:

【参考方案1】:

My first question is, does SVM can handle high-dimensional (n-D) input data?

是的。我已经处理了使用 LIBSVM 软件时 n > 2500 的数据:http://www.csie.ntu.edu.tw/~cjlin/libsvm/。我使用了线性和 RBF 内核。

My second question is, does it correct my understanding?

我不完全确定你在这里的意思,所以我会尝试评论你最近所说的话。我相信您的直觉通常是正确的。数据是在某个 n 维空间中“构造”出来的,使用一个 n-1 维的超平面将数据分为两组。但是,通过使用内核方法,可以使用线性方法生成此信息,而不会消耗计算机的所有内存。

我不确定您是否已经看过这篇文章,但如果您还没有看过,您可能会对本文中的一些信息感兴趣:http://pyml.sourceforge.net/doc/howto.pdf。我复制并粘贴了部分可能会引起您的想法的文本:

核方法是一种仅通过点积依赖于数据的算法。在这种情况下,点积可以被一个核函数替换,该核函数在一些可能的高维特征空间中计算点积。这有两个优点:首先,能够使用为线性分类器设计的方法生成非线性决策边界。其次,核函数的使用允许用户将分类器应用于没有明显固定维向量空间表示的数据。生物信息学中此类数据的主要例子是序列,无论是 DNA 还是蛋白质,以及蛋白质结构。

如果您能解释一下您所指的“指南”,这也会有所帮助。我认为我以前从未必须在二维平面上投影数据,而且对于具有荒谬数量的维度(或所谓的“特征”)的数据来说,这样做是没有意义的LIBSVM)。使用选定的内核方法应该足以对此类数据进行分类。

【讨论】:

感谢您的回复。我从你那里学到了一些新的观点。 (1)“n维空间中的数据,使用n-1维的超平面将数据分为两组”。这对我来说非常重要。这意味着 SVM 不会减少维数。它只是保持原样!所以我想知道SVM是怎么做的,有没有资料解释SVM是怎么做的,大致是它的思路,而不是数学表达式? (2) SVM 和一般的内核方法使用点积来映射数据。但为什么是点积?一开始,我认为使用点积是减少维度的方法。例如,一个 4 维问题可以在 2 次应用点积后映射为 2 维问题。不过好像我错了。 (3) 感谢您介绍我的论文,但我无法得到它。但是,引用的部分我在其他地方读过。 (4) 就像我写的那样,似乎大多数指南/教程/讲义都使用 2D 散点图说明了 SVM,其中他们专注于如何通过使用多个内核映射点来将点分类为组例如线性、多项式、RBF/高斯等。我的问题是,他们如何为多维问题绘制那些二维散点图?那些二维散点图是什么意思?它只是二维问题的原始输入数据,还是归约/映射过程的中间结果?

以上是关于支持向量机背后的基本理念的主要内容,如果未能解决你的问题,请参考以下文章

支持向量机背后的数学原理!

支持向量机背后的数学

svm支持向量机系列 -- 线性支持向量机

支持向量机(SVM)基本原理

6.支持向量机(SVM)什么是SVM支持向量机基本原理与思想基本原理课程中关于SVM介绍

支持向量机基本原理 matlab程序及其应用