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 - 训练样本数量与特征数量之间的关系的主要内容,如果未能解决你的问题,请参考以下文章