当我尝试对一些高维度输入应用一些机器学习算法(分类,具体来说是SVM)时,如果我得到的结果不太令人满意,我该如何处理这种情况呢?
1、2或3维数据可以可视化,同时还可以展示算法的结果,这样您就能够了解发生了什么,并且有一些思路来解决问题。然而,一旦数据超过三维,则除了直观地调整参数外,我并不确定如何解决它。
当我尝试对一些高维度输入应用一些机器学习算法(分类,具体来说是SVM)时,如果我得到的结果不太令人满意,我该如何处理这种情况呢?
1、2或3维数据可以可视化,同时还可以展示算法的结果,这样您就能够了解发生了什么,并且有一些思路来解决问题。然而,一旦数据超过三维,则除了直观地调整参数外,我并不确定如何解决它。
编辑:让我再添加这个“数据点”。最近我使用SVM和PCA预处理在四个独立的数据集上进行了另一个大规模实验。对于任何降维选择,PCA都没有改善分类结果。原始数据使用简单的对角线缩放(对于每个特征,减去平均值并除以标准差)表现更好。我不会得出任何广义结论——只是分享这个实验。也许在不同的数据上,PCA可以有所帮助。
一些建议:
将项目数据(仅用于可视化)投影到较低维空间(使用PCA或MDS或其他适合您的数据的方法)
尝试理解为什么学习失败。您认为它过度拟合了吗?您认为您有足够的数据吗?可能您的特征中没有足够的信息来解决您要解决的任务?有方法可以回答这些问题,而不需要可视化数据。
此外,如果您告诉我们任务是什么以及您的SVM输出是什么,可能会有更具体的建议。
参数选择方面的精选论文列表:
高维基因组微阵列数据特征选择哦,关于SVM还有一件事。SVM是一个黑盒子。你最好弄清楚生成数据的机制,并对机制进行建模,而不是对数据进行建模。另一方面,如果这是可能的,那么你很可能不会在这里问这个问题(我也不会对过度拟合感到那么痛苦)。
参数选择方面的精选论文列表
如果我没记错的话,您正在尝试查看SVM的哪些参数可以给您最好的结果。您的问题是模型/曲线拟合。
我几年前曾经处理过类似的问题。有很多库和算法可以做同样的事情。我使用了牛顿-拉弗森算法和一种变异的遗传算法来拟合曲线。
通过现实世界的实验生成/猜测/获取您所希望的结果(或者如果您只是进行简单的分类,那就自己动手吧)。将此与您的SVM输出进行比较。我之前提到的算法会重复这个过程,直到您的模型(在这种情况下是SVM)的结果与预期值相匹配(请注意,根据您的问题/数据大小,这个过程可能需要一些时间... 在一个140节点的Beowulf集群上,我花了大约2个月的时间)。
如果您选择使用牛顿-拉弗森算法,这里可能是一个不错的起点。