我一直在尝试不同的预测方法,偶然发现了 nnetar() 函数在R的预测包中。我很快意识到虽然这确实可以预测,但每次运行它都会给我一些不同的东西。有人可以帮忙解释为什么会这样吗?我认为我对神经网络有一个很好的理解,除非nnetar()函数随机选择节点数或其他东西,否则我不知道什么会在预测中产生巨大的差异。有帮助吗?
答案 0 :(得分:2)
20,默认情况下,网络使用随机起始值进行训练,然后在使用该函数时对其预测进行平均。
因为该函数对每次运行使用随机起始值,所以每次调用的预测也会不同。
编辑:评论中来自OP的新问题
为了控制函数并每次获得相同的随机起始值,您可以简单地使用函数set.seed()
和您选择的值。
例如:
set.seed(666)
forecast(nnetar(...),...)
set.seed(666)
forecast(nnetar(...),...)
set.seed(666)
forecast(nnetar(...),...)
每次用这个"种子"运行它时,会给出相同的结果。价值(666)。当然,你必须在每次运行代码之前运行set.seed(666)
。
编辑2:评论中来自OP的新问题
为了拥有100个不同的网络以适应随机起始权重:
nnetar(...,repeats=100,...)