我正在使用 R 中的神经网络来构建一个具有 14 个输入和一个输出的 NN。我使用相同的输入训练数据和相同的网络架构/设置多次构建/训练网络。
在生成每个网络后,我在一组独立的测试数据上使用它来计算一些预测值。尽管每次构建网络时所有输入(训练数据和测试数据)都保持不变,但我发现预测数据的每次迭代都存在很大差异。
我知道每次在 NN 内产生的权重都会有所不同,并且没有两个神经网络会是相同的,但是在给定相同数据的情况下,我可以尝试生成在每列火车上更一致的网络吗?
我正在使用 R 中的神经网络来构建一个具有 14 个输入和一个输出的 NN。我使用相同的输入训练数据和相同的网络架构/设置多次构建/训练网络。
在生成每个网络后,我在一组独立的测试数据上使用它来计算一些预测值。尽管每次构建网络时所有输入(训练数据和测试数据)都保持不变,但我发现预测数据的每次迭代都存在很大差异。
我知道每次在 NN 内产生的权重都会有所不同,并且没有两个神经网络会是相同的,但是在给定相同数据的情况下,我可以尝试生成在每列火车上更一致的网络吗?
通常,通过增加隐藏节点的数量并使用适当的权重衰减(又名脊惩罚),您可以获得更高的稳定性。
具体来说,我建议使用该caret
软件包来更好地了解您的准确性(甚至是准确性的不确定性。)另外,插入符号是avNNet
使集成学习器脱离多个神经网络以减少初始种子的影响。我个人没有看到使用的巨大改进,avNNet
但它可以解决您最初的问题。
我还要确保您的输入都经过适当调整。您是否对它们进行了正交化然后重新缩放?pcaNNet
Caret 也可以通过它的功能为你做这个预处理。
最后,您可以考虑折腾一些跳过层连接。您需要确保数据中没有异常值/杠杆点来扭曲这些连接。