我将使用ANN进行我的工作,其中我有一个大数据集,比如输入[600x40]和输出[600x6]。可以看出,输入(40)的数量对于ANN来说太高,并且它可能陷入局部最小值和/或显着增加CPU时间。有没有办法选择信息量最大的输入?
在我第一次尝试时,我在Matlab中使用以下代码来查找每两个输入之间的互相关:
[rho, ~] = corr(inputs, 'rows','pairwise')
但是,我认为这种简单的相关性无法识别输入之间隐藏的复杂关系。
有什么想法吗?
答案 0 :(得分:1)
首先,40个输入是非常小的空间,不应该减少。大量输入是100,000,而不是40.此外,600x40不是一个大数据集,也不是“显着增加CPU时间”,如果它学得慢,而不是检查你的代码,因为它似乎是问题,而不是你的数据。
此外,功能选择不是一个好方法,只有在收集功能实际上很昂贵时才应该使用它。在任何其他情况下,您正在寻找降维,例如PCA,LDA等,尽管如前所述 - 您的数据不应该减少,而是 - 您应该考虑获得更多(新样本/新功能)。
答案 1 :(得分:0)
免责声明:我与lejlot就此问题 - 您应该获得更多数据和 更多功能,而不是尝试删除功能。但是,这并没有回答你的问题,所以我们走了。
尝试最基本的贪婪方法 - 尝试删除每个功能并重新训练你的ANN(当然几次),看看你的结果是好还是坏。选择这种情况,结果变得更好,改善是最好的。重复,直到您通过删除功能得不到任何改进。这将花费大量时间,因此您可能希望尝试在数据的某个子集上执行此操作(例如,将数据集的3倍分割为10倍)。
它很难看,但有时却有效。
我重申我在免责声明中所说的话 - 这不是要走的路。