搭一个时间序列预测模型需要避开哪些坑?

简介

如果说哪类机器学习问题坑最多,那我一定投时间序列预测一票。

时间序列模型有哪些-时间序列预测模型避坑总结。_80楼网赚论坛|80楼网创

时间序列预测问题中数据形式的特殊性,导致了搭建模型过程中会遇到各种各样的坑。从头到尾搭建一个时间序列预测模型需要避开哪些坑?今天给大家总结一下我在实际工作中遇到的问题,包括数据、模型、指标、应用等四个方面的坑。

数据中的坑

任何机器学习模型的第一步都需要进行数据处理,而这一步在时间序列预测问题上坑非!常!多!我们常见的任务,比如图像分类或者文本匹配,输入数据都是结构化的,文本分成的token一共就那么几个,图像的rgb也都是0到255之间的一个数。但是时间序列的输入数据是离散值,而且取值理论上没有固定的范围。这就造成了时间序列处理中有很多需要注意的点。下面跟大家说几个我在做时间序列预测时遇到的典型坑供大家参考。

时间序列模型有哪些-时间序列预测模型避坑总结。_80楼网赚论坛|80楼网创

第一个坑:数据预处理。时间序列预测的数据集千差万别,数据的取值范围差异也很大,可能最小值是0时间序列模型有哪些,最大值是1000000。这种数据直接输入模型很难训练,因此一般需要做一些例如归一化等数据预处理。但是选哪种预处理方法最好呢?数据预处理方法选的不好,相当于地基没打好,后面做的各种实验全白费,因此一定要先选一个适合自己数据集的处理方法。如果数值差异很大,一般通常是先取对数缩小scale,再在此基础上做归一化。此外一定要注意数据泄露的问题!归一化求均值时,只能用Encoder的数据计算,不要把Deccoder的数据也加进去。数据预处理细节很多,一个不小心就会导致后面的实验全白做了,一定要小心。

第二个坑:窗口选择问题。使用深度学习进行预测,一般都会选择历史N天作为Encoder输入,预测未来M天的。那么这个N天和M天怎么选呢?M是问题定义好的,比如需要预测未来30天的预测结果,M就是30。至于N的选择,就要注意了。一方面,N的选择一定要比M长,一般为M的1.5倍以上。另一方面时间序列模型有哪些,要看数据的周期性。如果数据呈现明显的以365天为周期的年周期性,那么N至少要涵盖一年,才能让模型预测出来接下来要发生的事。N的选择也不能太长,会导致模型训练慢,或者收敛困难的问题。N如果选的长度不够,模型知道的信息不足,后面模型设计的再怎么花哨,也不会取得好的效果。一定要结合数据特点进行窗口选择,把你想让模型知道的信息都输入给模型。

模型中的坑

时间序列模型千千万,如何选择最适合自己场景的呢?我曾经在之前的文章中详细汇总了各类深度学习时间序列预测模型,Transformer、LSTM、CNN等基础结构都有针对时间序列预测的模型,也有Nbeats、LSTNet等专门针对时间序列预测设计的网络。

在模型的选择上,一个比较重要的原则是根据预测序列的长短来定。如果是单点预测,LSTM就能取得非常好的效果。如果是长周期预测,那就必须加一些Attention才能更好的进行对齐,这个时候可以考虑LSTM+Attention,或者直接上Transformer模型。另一个考虑因素是你的数据噪声大不大,一个经验是,噪声越大的数据集,用越简单的模型往往能取得更好的效果,而用了复杂模型反而会因为过拟合导致效果较差。

时间序列模型有哪些-时间序列预测模型避坑总结。_80楼网赚论坛|80楼网创

指标中的坑

在时间序列预测评价指标上,一定要结合实际需求来选择。时间序列预测的评价指标可以分为两类,一类是scale无关的(如smape、rmsle、mape等),一类是scale相关的(如mse、rmse、mae、nd等)。Scale无关的,即不管每个样本点的取值多大,对最终loss的贡献都是差不多的,因为这些指标计算的都是预测值相对于真实值的偏差百分比。而scale相关的指标,数值越大对loss的贡献就越大,因为它们直接计算预测值和真实值的差值。

时间序列模型有哪些-时间序列预测模型避坑总结。_80楼网赚论坛|80楼网创

在选择指标时,如果更关注大值样本的效果,可以用scale相关的指标;如果更关注全局所有样本的效果,可以用scale无关的指标。对于scale无关的指标还要注意一点,在一些场景中,小值样本比大值样本多得多,数据呈现长尾部分。这种情况下使用scale无关指标,则更偏向于看小值样本效果。同时,小值样本可能存在更大的误差,比如真实值是1,预测值是2,这偏差就是100%了,小样本本来就噪声大。如果用scale无关指标在这类数据上评估,很可能反映的是拟合噪声的效果。因此更合适的做法是对测试集做一个采样,小值样本、大值样本保留差不多的数量,才能更科学的评价模型效果。

应用中的坑

时间序列预测的结果不能只看指标,一定要看预测结果的折线图!有的时候看着指标不错,但实际预测出来的曲线可能是下面某些图那样的:

在应用之前,一定要做一些可视化分析,看模型预测的曲线和真实曲线差异在哪,把历史的真实序列也要画出来,这样才能看出哪些地方你认为模型本该预测出来,但实际没预测出来,针对性的优化模型。

总结

实际应用中搭建时间序列预测模型时,和学术界的差异还是很大的。学术界用的数据大多数都很干净,规律性很强。但是实际应用中的数据集,噪声大、取值范围大、规律性不明显等都是很大概率要面对的问题。你在时间序列预测中踩过坑吗?欢迎评论区交流~

———END———
限 时 特 惠:本站每日持续更新海量各大内部创业教程,一年会员只需88元,全站资源免费下载点击查看详情
站 长 微 信:chuangyedemao