SVM - 训练样本数量与特征数量之间的关系

Posted

技术标签:

【中文标题】SVM - 训练样本数量与特征数量之间的关系【英文标题】:SVM - relation between the number of training samples and the number of features 【发布时间】:2013-11-17 18:32:31 【问题描述】:

训练样本的数量和训练数据的维度应该是什么关系?

例如,我有一个包含 20000 个训练样本和 16000 个特征的案例。我正在考虑使用 PCA 来获得一些降维的情况,但我不知道我应该减少多少维我的训练数据。这些之间有关系吗? 我正在使用具有 2 个类和一个线性内核的支持向量机分类器。

【问题讨论】:

对于独立输入特征的两类判别和多元高斯分布,每类训练样本数应大于特征数的三倍。(ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=1054863)。 Cover has shown that if the total number of training samples less than twice the number of features,then there exists a hyperplane which can separate the training data perfectly even if the two classes are generated by the same distribution (dtic.mil/dtic/tr/fulltext/u2/a229035.pdf)(pg 46)。 我在研究神经网络时偶然发现了它。我不确定结果与 svm 公式的相关性如何,但根据经验可能有用.. 这个问题似乎离题了,因为它与编程无关。这属于stats.stackexchange.com。 任何答案对您有帮助吗?如果没有,为什么不呢? 帮了大忙,谢谢! 【参考方案1】:

SVM 找到的解决方案会自动限制在样本跨越的空间内,因此使用 PCA 仅去除方差为零的维度不会改变解决方案。正如 damienfrancois 所写,减少超出此范围的风险可能会破坏相关信息。为避免这种情况,您有两种选择:

1) 相信structural risk minimization 不仅是一个有趣的理论概念,而且可以为您的应用程序做正确的事情,并按原样使用数据。

2) 使用feature selection 算法找出哪些特征/组合实际上是有用的。但是,对于这么多的功能,找到最佳的功能组合显然是不可行的,因此您可能只需按个人性能对功能进行排序(在线性情况下:at-score),然后测试您需要多少最佳功能为了得到一个好的结果。

Zaw Lin 的评论当然是正确的,你总是可以在这样一个高维空间中分离类,但同样当然分类器性能不应该在训练数据上评估,而是例如使用cross-validation。

【讨论】:

【参考方案2】:

这完全是数据的intrinsic dimensionality和VC-dimenionality的问题。但是软管理论概念在实践中不会有太大帮助。

在实践中,使用适当正则化的线性 SVM,您可能只需使用 16k 特征即可。

如果您想使用 PCA,请查看 scree plot 以获取使用具有最高相应特征值的 n 主成分保持的方差百分比。但是如果标签和数据之间的关系是高度非线性的,那么基于 PCA 的特征提取将“破坏”信息。

另一种选择是使用其他 L1 正则化模型,例如 LASSO。

【讨论】:

以上是关于SVM - 训练样本数量与特征数量之间的关系的主要内容,如果未能解决你的问题,请参考以下文章

SVM分类器对样本数的要求

与实际提供的相比,为啥在 SVM 中排名的特征数量更少?

测试和训练数据集具有不同数量的特征

测试和训练集中不同数量的特征

支持向量的数量与训练数据和分类器性能之间的关系是啥? [关闭]

K-邻近(KNN)算法