nnfor库如何选择Elm和mlp网络中每一层的节点数?

时间:2018-11-30 09:50:40

标签: r neural-network forecasting

我使用mlp库中的elmnnfor函数来预测非平稳时间序列。两者在输入层和隐藏层中给出的节点数不同。我对它们如何选择每一层中的节点数很感兴趣,并且很高兴了解泛化错误会更改其在该函数中的工作方式。

1 个答案:

答案 0 :(得分:2)

mlp函数选择的隐藏节点数取决于hd.auto.type参数的值:

  • “设置”可修复hd = 5。
  • “有效”使用(随机)抽样的20%验证集来查找 最佳隐藏节点数。
  • “简历”使用5倍交叉验证。
  • “ elm”使用ELM估计隐藏节点的数量(实验性)。

为“ valid”,“ cv”和“ elm”参数值尝试的隐藏节点数范围为1到max(2, min(dim(X)[2] + 2, length(Y) - 2))。这些隐藏的节点仅限于单个层。

“ cv”和“ valid”方法使用均方误差的最小值来查找隐藏节点的数量。

据我从source code中的auto.hd.elm函数可以看出,“ elm”方法使用有效模型系数数量的中值来选择隐藏节点的数量。希望对您有意义!

elm函数使用min(100 - 60*(type=="step" | type=="lm"),max(4, length(Y) - 2 - as.numeric(direct)*length(X[1,])))来确定隐藏节点的数量。其中type是用于输出层权重的估计,而direct是存在直接的输入-输出连接。

输入节点的数量取决于季节和时滞。

泛化误差可以使用交叉验证来近似。需要明确的是,这种交叉验证必须与用于查找隐藏节点数量的任何验证分开进行。

nnfor软件包作者有一篇介绍性博客文章,可能值得检查:http://kourentzes.com/forecasting/2017/02/10/forecasting-time-series-with-neural-networks-in-r/