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

时间:2013-11-06 13:33:31

标签: matlab machine-learning svm libsvm

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

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

2 个答案:

答案 0 :(得分:4)

SVM找到的解决方案会自动限制在样本跨越的空间内,因此使用PCA来摆脱零方差的维度不会改变解决方案。正如达米恩弗兰科斯所写,除此之外,你还有可能破坏相关信息。为避免这种情况,您有两种选择:

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

2)使用feature selection算法找出哪些功能/组合实际上是提供信息的。但是,找到最佳的功能组合显然不适用于这么多功能,因此您可以通过单独的性能(在线性情况下:t-score)对功能进行排序,然后测试多少最佳功能你需要得到一个好结果。

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

答案 1 :(得分:2)

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

在实践中,使用正确的正则化线性SVM,您可能只需使用16k功能。

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

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