我们如何修剪 R 中的神经网络?

Sau*_*mar 5 r neural-network pruning

我的模型中有 30 个自变量。我想根据变量的重要性修剪神经网络。我试过使用 RSNNS 包的 mlp 函数,但我不知道可以给 "pruneFunc" 和 "pruneFuncParams" 提供什么参数?
有没有其他方法可以修剪神经网络?

Gau*_*rav 2

mlp()(RSNNS 包)中的“pruneFunc”和“pruneFuncParams”参数用于修剪隐藏层神经元的数量。我不认为你可以用它来减少你的输入变量。

您可以使用“NeuralNetTools”包在网络上运行 Garson 算法。该包中的函数在 RSNNS(以及其他包)创建的大多数神经网络对象上运行。Garson 算法将根据权重给出每个变量的重要性。然后,您可以排除这些变量并重新训练您的网络。

有关 Garson 算法的更多详细信息,请参阅这些链接... https://beckmw.wordpress.com/2013/08/12/variable-importance-in-neural-networks/ https://beckmw.wordpress.com/标签/神经网络/

或者,在开始训练神经网络之前,您可以尝试其他多种降维技术(如 PCA)。

您在评论中提到“减少变量并仅将重要变量提供给神经网络可以提供更好的预测”......但这并不准确......

如果经过足够的训练,具有 2 个隐藏层的 MLP 可以逼近任何函数,并且通常具有 1 个隐藏层的 MLP 足以逼近大多数函数。如果有任何输入变量的重要性非常低(甚至在模型中完全没有作用),足够的训练量将使与该变量相关的权重非常小(接近于零),从而不会产生任何显着的影响。影响你的预测。减少变量数量的唯一显着好处是预测的计算时间较短。