【发布时间】:2017-08-23 09:25:09
【问题描述】:
我一直在尝试不同的预测方法,但偶然发现了 nnetar() R 的预测包中的函数。我很快意识到虽然这确实可以预测,但每次运行它都会给我一些不同的东西。有人可以帮助解释为什么会发生这种情况吗?我以为我对神经网络有很好的理解,我看不出什么会在预测中产生巨大差异,除非 nnetar() 函数随机选择节点数量或其他东西。有什么帮助吗?
【问题讨论】:
标签: r neural-network forecasting
我一直在尝试不同的预测方法,但偶然发现了 nnetar() R 的预测包中的函数。我很快意识到虽然这确实可以预测,但每次运行它都会给我一些不同的东西。有人可以帮助解释为什么会发生这种情况吗?我以为我对神经网络有很好的理解,我看不出什么会在预测中产生巨大差异,除非 nnetar() 函数随机选择节点数量或其他东西。有什么帮助吗?
【问题讨论】:
标签: r neural-network forecasting
20,默认情况下,网络使用随机起始值进行训练,然后在您使用该函数时对其预测进行平均。
因为函数每次运行都使用随机起始值,所以每次调用的预测也会不同。
编辑:来自 cmets 中 OP 的新问题
为了控制函数,每次都得到相同的随机起始值,你可以简单的使用函数set.seed() 和你选择的值。
例如:
set.seed(666)
forecast(nnetar(...),...)
set.seed(666)
forecast(nnetar(...),...)
set.seed(666)
forecast(nnetar(...),...)
每次使用此“种子”值 (666) 运行它时都会给出相同的结果。当然,您必须在每次运行其余代码之前运行set.seed(666)。
编辑 2:来自 cmets 中 OP 的新问题
为了让 100 个不同的网络适应随机的起始权重:
nnetar(...,repeats=100,...)
【讨论】: