【发布时间】:2019-05-02 11:04:51
【问题描述】:
我使用来自nnfor 库的mlp 和elm 函数来预测非平稳时间序列。它们都在输入层和隐藏层中给出不同数量的节点。我对他们如何选择每一层中的节点数量很感兴趣,很高兴了解泛化错误会改变它在该函数中的工作方式。
【问题讨论】:
-
Hi Maksym 欢迎来到堆栈溢出。你是说 elm 而不是 elp?
标签: r neural-network forecasting
我使用来自nnfor 库的mlp 和elm 函数来预测非平稳时间序列。它们都在输入层和隐藏层中给出不同数量的节点。我对他们如何选择每一层中的节点数量很感兴趣,很高兴了解泛化错误会改变它在该函数中的工作方式。
【问题讨论】:
标签: r neural-network forecasting
mlp函数选择的隐藏节点数量取决于hd.auto.type参数的值:
为“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/
【讨论】:
mlp或@ 987654333@.