社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

Kaggle经验--时间序列预测真的需要深度学习模型吗?

深度学习基础与进阶 • 3 月前 • 313 次点击  

 

  kaggle竞赛宝典技巧 
作者:时序人

时间序列预测一定需要深度学习模型吗?

简介


时间序列预测是机器学习中的一项常见的任务,具有非常广泛的应用,例如:电力能源、交通流量和空气质量等预测。传统的时间序列预测模型往往依赖于滚动平均、向量自回归和自回归综合移动平均。另一方面,最近有人提出了深度学习和矩阵分解模型来解决时间序列预测问题,并获得了更具竞争力的性能,但是该类模型往往过于复杂。

最近来自德国的几位学者在arxiv上发表了一篇有意思的对比综述文章,其用GBRT与最近各大顶会发表的新颖模型进行对比,并公布了其代码和结果。

本期文章将为大家简要分享这篇文章中的精华要点,供广大研究者开发者们参考。


论文地址:https://arxiv.org/abs/2101.02118

论文源码:https://github.com/Daniela-Shereen/GBRT-for-TSF




已有方法


时间序列预测问题分为两类:

(1)单变量时间序列预测问题,数据只有一个通道,预测值仅由目标通道向量序列组成;(2)多变量时间序列预测问题,其中预测器由向量对序列(x,y)组成,但任务是仅预测单个目标通道。


ARIMA模型(Autoregressive Integrated Moving Average model),差分整合移动平均自回归模型,又称整合移动平均自回归模型(移动也可称作滑动),为时间序列预测分析方法之一。


时间正则化矩阵分解(TRMF)模型是一种高度可扩展的基于矩阵分解的方法,因为它能够对数据中的全局结构进行建模。作为本研究中较早的方法之一,该模型仅限于捕捉时间序列数据中的线性依赖关系,但还是显示了极具竞争力的结果。


长短期时间序列网络(LSTNet)强调了局部多变量模式,由卷积层建模,以及长期依赖关系,由递归网络结构捕获。


基于注意力的双阶段RNN(DARNN)首先将模型输入通过一个输入注意力机制随后采用一个配有额外时间注意力机制的编码器-解码器模型。


Deep Global Local Forecaster (DeepGlo) 是基于一个全局matrix factorization结构,该结构被一个时间卷积网络所规范化。该模型包含了来自日期和时间的额外通道。


时空融合转化器(Temporal Fusion Transformer)模型是本研究中最新的DNN方法,通过将用于局部处理的递归层与捕捉数据中长期依赖关系的转化器典型的自我注意层相结合,该模型不仅可以在学习过程中动态地关注相关的特征,而且还可以通过门控机抑制那些被认为是不相关的特征。


DeepAR模型是一个自动回归的概率RNN模型,在附加时间和分类协变量的帮助下,从时间序列中估计参数分布。


深度状态空间模型(DeepState)是一个概率生成模型,使用RNN学习参数化的线性状态空间模型。


深度空气质量预测框架(DAQFF)包括一个两阶段的特征表示;数据通过三个一维卷积层,然后是两个双向LSTM层和一个次级线性层进行预测。




模型对比


该文作者尝试回答一个问题:一个简单但配置良好的GBRT模型与最先进的深度学习时间序列预测方法的结果比较?


与深度神经网络(DNN)模型类似,该文作者通过将时间序列预测任务转化为一个基于窗口的回归问题,对GBRT模型的输入和输出结构进行了特征设计,例如,对于每个训练窗口,目标值与外部特征相连接,然后扁平化形成一个多输出GBRT模型的输入实例。作者对8个最先进的深度学习模型的9个数据集进行了比较研究,这些模型都是在过去几年中在各大顶会上发表过的工作。对比结果表明,基于窗口的输入转换将一个简单的GBRT模型的性能提高到超过本文所评估的所有最先进的DNN模型的水平。



01

GBRT算法设计



文提出的GBRT训练方法主要包括两方面的修改:

  1. 转换窗口输入为一维向量,需要注意的是,协变量只使用最后一个时间步的协变量,实验部分论证了相对于使用窗口全部的协变量这种方式训练的模型效果更好。

  2. 将预测器包装为支持多输出的MultiOutputRegressor。这种设置会导致预测范围内的目标变量是独立预测的,模型无法从它们之间的潜在关系中获益。但是GBRT基于窗口数据的输入设置不仅将预测问题转化为回归任务,还能够捕捉目标变量中的自相关效应,弥补了多输出独立预测的缺陷。


下面是训练的损失函数: 




实验结果


01

单变量时间序列预测

没有协变量


有协变量



02

深度学习模型对比

vs. LSTNet


vs. DeepAR, DeepState, TFT



03

多变量时间序列预测

vs. DARNN


vs. DNNs




总结展望


该文复现了最近一些用于时间序列预测的深度学习的工作,并在各种数据集上与GBRT进行比较。实验结果证明,GBRT虽然概念很简单,但是可以通过对GBRT的输入和输出结构进行有效的特征工厂处理来超越最先进的DNN模型。作者提出,不应忽视简单的机器学习基线方法,应该更加谨慎地进行配置使得其更加适合任务,也许会获得非常大的提升。


思考:

  1. 机器学习方法一般包括特征工程,模型架构,损失函数。其中最重要的是特征工程和损失函数,分别定义了从哪里学和学什么,在优化一个方法时,这两点是我们不能忽略的,特征工程和损失函数正确的条件下,模型架构创新往往非常困难而且能带来的提升有限。

  2. 直接将预测器包装为支持多输出的MultiOutputRegressor,窗口数据的输入设置可以在一定程度上弥补多输出独立预测的缺陷,但是约束不是非常强,可以考虑增加更强的约束以改善效果。 

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/173450
 
313 次点击