nnfor 库如何选择 elm 和 mlp 网络中每一层的节点数?
How does nnfor library choose number of nodes in each layer in elm and mlp networks?
我使用 nnfor
库中的 mlp
和 elm
函数来预测非平稳时间序列。它们都在输入层和隐藏层中提供不同数量的节点。我对他们如何选择每一层中的节点数量很感兴趣,如果能理解泛化错误改变它在该函数中的工作方式会很棒。
mlp
函数选择的隐藏节点数取决于hd.auto.type
参数的值:
- "set" 修复了 hd=5。
- "valid" 使用 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 包的作者有一篇介绍性的博客 post,可能值得一读:http://kourentzes.com/forecasting/2017/02/10/forecasting-time-series-with-neural-networks-in-r/
我使用 nnfor
库中的 mlp
和 elm
函数来预测非平稳时间序列。它们都在输入层和隐藏层中提供不同数量的节点。我对他们如何选择每一层中的节点数量很感兴趣,如果能理解泛化错误改变它在该函数中的工作方式会很棒。
mlp
函数选择的隐藏节点数取决于hd.auto.type
参数的值:
- "set" 修复了 hd=5。
- "valid" 使用 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 包的作者有一篇介绍性的博客 post,可能值得一读:http://kourentzes.com/forecasting/2017/02/10/forecasting-time-series-with-neural-networks-in-r/