我正在通过阅读大量 Material 来学习支持向量机(SVM)。然而,似乎大部分内容都集中在如何通过使用线性、多项式、RBF/高斯等多个内核进行映射来对输入的二维数据进行分类。
我的第一个问题是,SVM 可以处理高维(n-D)输入数据吗?
根据我的发现,答案是肯定的!
如果我的理解是正确的,n维输入数据将是
- 在希尔伯特超空间中构建,那么这些数据将是
- 通过使用一些方法(例如 PCA?)将其组合在一起/将其投影回 2D 平面进行简化,以便
- 内核方法可以将其映射成适当的形状,例如直线或曲线可以将其分成不同的组。
这意味着大多数指南/教程都集中在步骤(3)上。但如果输入数据大于二维,我检查过的一些工具箱无法绘制。之后的数据如何投影为2D?
如果没有数据投影,他们如何对其进行分类?
我的第二个问题是:我的理解正确吗?
最佳答案
我的第一个问题是,SVM 是否可以处理高维(n-D)输入数据?
是的。我在使用 LIBSVM 软件时处理过 n > 2500 的数据:http://www.csie.ntu.edu.tw/~cjlin/libsvm/ 。我使用了线性和 RBF 内核。
我的第二个问题是,它是否正确我的理解?
我不太确定你在这里的意思,所以我会尝试评论你最近所说的内容。我相信你的直觉大体上是正确的。数据是在某个n维空间中“构造”的,并且使用n-1维的超平面将数据分为两组。但是,通过使用内核方法,可以使用线性方法生成此信息,而不会消耗计算机的所有内存。
我不确定您是否已经看过这篇文章,但如果您还没有看过,您可能会对本文中的一些信息感兴趣:http://pyml.sourceforge.net/doc/howto.pdf 。我复制并粘贴了可能引起您想法的部分文字:
A kernel method is an algorithm that depends on the data only through dot-products. When this is the case, the dot product can be replaced by a kernel function which computes a dot product in some possibly high dimensional feature space. This has two advantages: First, the ability to generate non-linear decision boundaries using methods designed for linear classifiers. Second, the use of kernel functions allows the user to apply a classifier to data that have no obvious fixed-dimensional vector space representation. The prime example of such data in bioinformatics are sequence, either DNA or protein, and protein structure.
如果您能解释一下您所指的“指南”,也会有所帮助。我认为我以前从未需要在二维平面上投影数据,而且对于具有大量维度(或所谓的“特征”)的数据来说,这样做是没有意义的。 LIBSVM)。使用选定的核方法应该足以对此类数据进行分类。
关于visualization - 支持向量机背后的基本原理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11497898/