如何利用高维输入空间来解决机器学习问题?

sol*_*old 16 classification machine-learning svm

当我尝试在一些高维输入上应用一些ML算法(分类,更具体地说,特别是SVM)时,我应该如何处理,我得到的结果不太令人满意?

可以显示1,2或3维数据以及算法的结果,这样您就可以了解正在发生的事情,并了解如何解决问题.一旦数据超过3个维度,除了直观地使用参数,我不确定如何攻击它?

Ste*_*joa 26

你对数据做了什么?我的回答:没事.SVM 旨在处理高维数据.我现在正在研究一个涉及使用SVM进行监督分类的研究问题.除了在互联网上查找来源之外,我还在分类之前对降维的影响进行了自己的实验.使用PCA/LDA预处理特征并未显着提高SVM的分类准确性.

对我而言,从SVM的工作方式来看,这是完全有意义的.设x是m维特征向量.令y = Ax,其中y在R ^ n中,并且对于n <m,x在R ^ m中,即,y是x投影到较低维度的空间上.如果类Y1和Y2在R ^ n中是线性可分的,则对应的类X1和X2在R ^ m中是线性可分的.因此,理论上,原始子空间应该"至少"与它们在较低维度上的投影是可分离的,即PCA应该没有帮助.

这是一个讨论在SVM之前使用PCA的讨论:链接

可以做的是更改SVM参数.例如,对于libsvm 链接,参数C和gamma对于分类成功至关重要.libsvm faq,特别是此条目链接,包含更多有用的提示.其中:

  1. 在分类之前缩放您的功能.
  2. 尝试获得平衡的课程.如果不可能,那么惩罚一个班级比另一个班级更多.查看有关SVM不平衡的更多参考资料.
  3. 检查SVM参数.尝试多种组合以获得最佳组合.
  4. 首先使用RBF内核.它几乎总是效果最好(从计算上讲).
  5. 几乎忘了......在测试之前,交叉验证!

编辑:我只想添加这个"数据点".我最近在四个独占数据集上使用SVM和PCA预处理进行了另一次大规模实验.对于任何降低维数的选择,PCA都没有改进分类结果.具有简单对角缩放的原始数据(对于每个特征,减去平均值并除以标准偏差)表现更好.我没有做出任何广泛的结论 - 只是分享这个实验.也许在不同的数据上,PCA可以提供帮助.

  • 问题不在于减少维数,作者只是抱怨他无法掌握多维数据.但是无所谓.PCA在你的情况下没有帮助的事实并不意味着它没用.尝试弥补人工数据:在一个维度上可分离的点.添加一些噪声以获得50维数据.最大边距超平面很可能会消失. (3认同)
  • 我认为我的答案完整地解决了这个问题.但关于声明,"添加一些噪声来获得50维数据",添加*noise*与添加*features*不同.如果将包含不相关噪声的49个特征连接到两个类可分离的一个有意义的特征,则SVM仍将像在一维空间中一样成功地分隔50维空间中的类.这个毋庸置疑. (3认同)

use*_*973 7

一些建议:

  • 项目数据(仅用于可视化)到较低维空间(使用PCA或MDS或对数据有意义的任何内容)

  • 试着理解学习失败的原因.你认为它适合吗?你认为你有足够的数据吗?您的功能中是否可能没有足够的信息来解决您要解决的任务?有方法可以回答每个问题,而无需可视化数据.

此外,如果您告诉我们任务是什么以及您的SVM输出是什么,那么人们可能会提出更具体的建议.