【问题标题】:How does nnfor library choose number of nodes in each layer in elm and mlp networks?nnfor 库如何选择 elm 和 mlp 网络中每一层的节点数?
【发布时间】:2019-05-02 11:04:51
【问题描述】:

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

【问题讨论】:

  • Hi Maksym 欢迎来到堆栈溢出。你是说 elm 而不是 elp?

标签: r neural-network forecasting


【解决方案1】:

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

  • “设置”修复 hd=5。
  • “有效”使用 20% 的验证集(随机)抽样来找到 最佳隐藏节点数。
  • “cv”使用 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/

【讨论】:

  • 谢谢你的方法,是否可以像这里一样绘制这样的图。link我的意思是它需要一些值,我们在使用这些函数后得到它们mlp或@ 987654333@.
  • 生成类似于链接图的内容:1) 创建单独的测试和训练数据集,2) 训练具有 n 个隐藏节点的模型,3) 使用预测/预测功能、新模型和测试生成预测数据集,4)计算预测和测试数据集之间的误差(可能需要均方误差),5)最后绘制误差作为 n(隐藏节点数)的函数。必须针对每个隐藏节点数量重复步骤 2 到 4。无法使用 nnfor 包生成链接图。
  • 明白,谢谢。您能否再回答一个问题.. 它如何根据季节性和滞后选择输入节点的数量?
  • 写到 "滞后 y 用作输入。如果没有提供,则使用 1:frequency(y)。使用 0 表示没有单变量滞后,但我的如果我的频率等于 365,它给了我在 mlp 函数中的 41 个输入节点和在 elm 中的 100 个输入节点。为什么会这样?Oo
猜你喜欢
  • 2012-03-15
  • 2019-02-28
  • 2020-02-02
  • 2019-01-26
  • 2017-03-17
  • 1970-01-01
  • 2017-09-28
  • 2021-07-15
  • 2020-08-30
相关资源
最近更新 更多