我使用DeepAR算法来预测随时间变化的调查响应进度。我希望模型预测调查进度中的下20个数据点。每个调查都是我训练数据中的一个时间序列。每个时间序列的长度是调查运行的#天。例如,下面的系列表明,调查于2011年6月29日开始,最后一次回复是在2011年7月24日(25天为长度)。
{"start":"2011-06-29 00:00:00", "target": [37, 41.2, 47.3, 56.4, 60.6, 60.6,
61.8, 63, 63, 63, 63.6, 63.6, 64.2, 65.5, 66.1, 66.1, 66.1, 66.1, 66.1, 66.1,
66.1, 66.1, 66.1, 66.1, 66.7], "cat": 3}如您所见,时间序列中的值可以保持不变,也可以增加。训练数据永远不会显示下降的趋势。令人惊讶的是,当我生成预测时,我注意到预测有下降的趋势。当训练数据中没有下降趋势的痕迹时,我想知道模型是如何学习到这一点的。在我看来,这似乎是预测中的一个基本缺陷。有人能解释一下为什么模型会有这样的行为吗?我使用下面的超参数构建DeepAR模型。对模型进行了测试,RMSE约为9。如果我更改任何超参数,是否会有所帮助?任何对此的建议。
time_freq= 'D',
context_length= 30,
prediction_length= 20,
cardinality= 8,
embedding_dimension= 30,
num_cells= 40,
num_layers= 2,
likelihood= 'student-T',
epochs= 20,
mini_batch_size= 32,
learning_rate= 0.001,
dropout_rate= 0.05,
early_stopping_patience= 10 发布于 2018-07-06 18:38:55
如果在所有时间序列中都存在上升趋势,那么学习这一点应该没有问题。如果你的时间序列通常有一个上升和下降的周期,那么算法可能会学习到这一点,从而生成类似的模式,即使你预测的例子到目前为止只有一个上升趋势。你有多少个时间序列,它们的平均时长是多少?
你的所有超参数看起来都是合理的,如果不了解更多的数据,就很难说出需要改进的地方。如果你没有那么多的时间序列,你可以尝试增加纪元的数量(也许尝试几百个),并将提前停止增加到20 - 30。
https://stackoverflow.com/questions/51183829
复制相似问题