机器学习中对于时间序列的数据进行train、val、test划分时需要注意的问题是,不要将val中的数据出现在train中,准确的说,是选取的val数据的时间节点不能与train中数据时间节点有任何交集。否则,你会发现训练时,val的loss会与train的loss几乎一样,即失去其作用。因为,对于时间序列预测这种任务,如果你的验证集中与训练集中时间上出现重叠,模型会在训练时记忆你训练集中出现的重叠数据,专业的说法是引入未来数据。例如,告诉你5日到10日的收盘价格,让你预测第11日收盘价(验证阶段);同时,给你11日到16日的收盘价,让你记忆第17日的收盘价(训练阶段)。这11日的价格你记忆过,影响了神经单元权重,自然在验证时无法做到客观。

一般有三种处理方案

1,Train-Test split that respect temporal order of observations.

2,Multiple Train-Test splits that respect temporal order of observations.

3,Walk-Forward Validation where a model may be updated each time step new data is received.

具体训练划分处理方案可以参考以下

参考:

  1. How To Backtest Machine Learning Models for Time Series Forecasting

  2. Time Series Nested Cross-Validation

  3. Cross-validation for time series

  4. 除了预测姨妈周期,时间序列还能干嘛?

  5. 机器学习与时间序列预测

(以上个人理解。试验时反应出的问题,但没有理论验证过,如有错误望指出,谢谢)

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐