【发布时间】:2018-10-01 03:34:11
【问题描述】:
我已经为时间序列预测训练了一个 LSTM 模型。我使用了一种提前停止的方法,有 150 个 epoch 的耐心。
我使用了 0.2 的 dropout,这是训练和验证损失的图:
提前停止方法在 650 个 epoch 后停止训练,并在 460 个 epoch 左右保存最佳权重,其中验证损失最好。
我的问题是: 火车损失总是高于验证损失是否正常? 我知道如果相反(火车上方的验证损失),那将是过度拟合的迹象。 但是这个案子呢?
编辑: 我的数据集是具有每小时时间频率的时间序列。它由 35000 个实例组成。我已将数据分成 80% 的训练和 20% 的验证,但按时间顺序排列。因此,例如,培训将包含 2017 年初的数据,并验证从 2017 年到年底的数据。 我通过平均 15 天的数据创建了这个图,结果如下:
所以也许原因是正如你所说,验证数据有一个更简单的模式。我该如何解决这个问题?
【问题讨论】:
-
你在做k-fold交叉验证吗?您的训练集和验证集的大小是多少?
-
我想知道您是如何拆分数据的。这是时间序列预测。你在做移动窗口、随机分割、K-fold CV 等吗?我刚刚想到的一个场景是您的验证数据的输入周期比训练数据长。或者可能训练数据比验证集更老,因此验证集具有更好的数据质量。
-
数据集的总大小为 35000 个实例。我将其中的 80% 用于训练,20% 用于验证。我没有做k fold CV,因为训练时间已经很长了。随机拆分是什么意思?就我而言,我的数据是时间序列,所以我不做任何随机拆分
-
也看看我编辑的帖子
标签: python neural-network keras lstm loss