基于PYTORCH的时间序列预测模型

2021-08-23 01:23罗晓牧弓伟门韶洋
锦绣·中旬刊 2021年10期
关键词:预测分类模型

罗晓牧 弓伟 门韶洋

时间序列预测是机器学习中一个非常重要的方向。本文主要介绍了在不同领域中训练基于PyTorch 的时间序列模型中的要点,包括对问题的限定、数据的预处理、模型的选择等,对于系统性能的提升有一定的指导作用。

时间序列预测是一个富有挑战的领域。使用FlowForecast [1],可以用于训练出数百个基于 PyTorch 的时间序列预测模型,用于不同范围的数据集,如河流的流量,COVID-19,太阳能,风能等。本文主要讨论了训练这些时间序列模型时的要点。

1.对问题加以限定

对于使用基于机器学习的时间序列模型,通常有不同的定义:

a)异常检测:这是用于在时间序列中检测出异常值的通用方法。然而“异常值”通常只出现在数据集中的很小一部分,但却与其它数据点截然不同。虽然二值检测通常那被认为是另外一个领域,异常检测可以被认为是二值检测的极端形式。大部分的异常检测都是无监督学习,因为我们通常只有在异常数据出现时才有可能判别出那是异常的数据。

b)时间序列分类:与其他形式的分类问题类似,我们将时间序列中的一段拿出来,然后将它分成某一类。与异常检测不同,通常每一类样本的数量都更加平衡(尽管有时候有些倾斜,如 10%,80%,10%)。

c)时间序列预测:通常指的是预测时间序列数据中的下一个值,或后面的 n 个值。这也是本文分析的重点。

D)时间序列分析:这是一个可用于包括以上各个分类的词。然而,通常可以认为是检查整个时间序列数据,比较不同的时间结构,然后设计出一个预测的模型。例如,如果设计出一个时间序列的预测模型,那么就可以得出时间序列中的因果关系因子,然后做出更深入的时间序列分析。

在开始之前,我们应该明确问题是一个预测问题,还是一个分类问题。有时候将一个预测问题变成一个分类问题更加合适。例如,预测的具体值并不重要时,可以将其分入某个区间变成一个分类的问题。更进一步,应该明确部署的问题,并明白最终的产品是什么。如果是需要一个毫秒级延时的股票交易系统,那么 20 层的 transformer 模型就一定不能满足标准。

2.数据质量与预处理:

a)通常要对数据归一化:在 99%的情况下,数据归一化或者正则化都能提高系统的性能。使用 FlowForecast 可以很方便地实现这一步。缺少了数据归一化,会出现损失函数爆炸的情况,尤其当训练某些 transformer 的时候。

b)重新检查空值,不恰当编码或者缺失的值:由于数据的质量问题,会导致浪费很多的时间。有时候缺失值会使用一种奇怪的方式进行编码。例如,有的气象站将缺失的降雨值设置为-9999。这会导致很多的问题,因为一般的缺失值检查处理不了这个问题。FlowForecast 中提供了对缺失值进行插值的模块,也能对可能不正确的录入数据进行警告。

c)开始只使用少量的特征:通常开始使用较少的特征,然后根据性能增加特征是更好的做法。例如,当预测 COVID 的变异时,开始仅仅使用死亡数据和新增数据。随着时间的推移熟悉了超参数之后,可以增加天气的数据。

3.模型选择和超参数选择

a)对于时间的滞后项进行可视化分析:在时间序列分析中,将不同的时间滞后项输入模型将导致不同的结果。通过调整参数,模型的结构改变,能学习到更长的依赖关系。然而,确定初始的范围是十分必要的。在某些情况下,长的依赖关系并没有什么作用。

b)以 DA-RNN 开始建模:使用DA-RNN可以得到一个很强的基准值。使用 transformers 可以超越 DA-RNN,但是那通常需要更多的數据,以及更加仔细的调参。

c)确定预测的长度:这是一个需要使用技巧搜索的超参数调整问题。这个问题是要确定模型一次预测的时间步长。可以基于上一次的预测结果叠加出更长的预测。一方面,如果要预测出更长的时间范围,可以直接将预测的误差加权加入损失函数;另一方面,使用太长的时间预测将使得模型的性能下降。在大部分的预测中,更短的预测时间通常效果更好。

d)以较低的学习率开始:对于大部分的时间预测模型,使用较低的学习率。

e)Adam 算法通常并不是最好的:在有的情况下,别的优化算法表现更好。例如,Bertadam 对于 transformer 型的模型比较好,一般的优化算法对DA-RNN 就足够了。

4.鲁棒性

a)在不同的实验场景进行仿真并分析。在不同的环境下对时间序列进行预测相对简单,例如,要预测河流的流量,可以尝试输入比较大的降雨量,看模型的输出。

b)仔细检查热力图和其他可解释性度量。当模型表现相对比较好的时候,要通过热力图检查模型是否使用重要的特征。如果不是,模型则不是使用真实的特征之间的因果关系,而仅仅只是记住了某些特征。

5.结论

时间序列预测是一个富有挑战的领域,尤其是基于机器学习的模型。本文所提到的要点对于提高系统的性能有一定帮助。

参考文献

[1] https://github.com/AIStream-Peelout/flow-forecast

作者简介:罗晓牧(出生年月:1980-),性别:男,广东省广州市(籍贯),现职称:副教授,学历:工科博士研究生毕业,研究方向:机器学习,无线传感器网络,生物信息获取。广州中医药大学医学信息工程学院.

猜你喜欢
预测分类模型
选修2—2期中考试预测卷(B卷)
选修2—2期中考试预测卷(A卷)
自制空间站模型
按需分类
教你一招:数的分类
模型小览(二)
说说分类那些事
圆周运动与解题模型
离散型随机变量分布列的两法则和三模型
给塑料分分类吧