做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...

本文主要是介绍做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

75a4fd4faa263905606ba932d746e03f.png

来源:机器之心
本文约2600字,建议阅读9分钟
在时间序列预测任务上,你不妨试试简单的机器学习方法。

在深度学习方法应用广泛的今天,所有领域是不是非它不可呢?其实未必,在时间序列预测任务上,简单的机器学习方法能够媲美甚至超越很多 DNN 模型。

过去几年,时间序列领域的经典参数方法(自回归)已经在很大程度上被复杂的深度学习框架(如 DeepGIO 或 LSTNet 等)更新替代。这是因为传统方法可能无法捕获长期和短期序列混合传递的信息,而深度学习方法的思路是掌握数据中的跨时非线性依赖。从结果来看,这些深度学习方法不仅优于 ARIMA 等传统方法和梯度提升回归树(Gradient Boosting Regression Tree, GBRT)等简单机器学习模型,而且增强了这样一种预期,即机器学习领域的时间序列预测模型需要以深度学习工作为基础,才能得到 SOTA 结果。

但是,推荐系列领域的最新启示表明,深度学习方法在机器学习各种研究分支取得的成就需要对简单高效模型定期确认和评估,以保持各自研究领域进展的真实性。除了时间序列预测模型越来越复杂之外,另一个动机包括文献中正在完善的深度学习模型在处理时间序列预测问题上的片面性,因此限制了现有解决方案方法的多样性。

在前段时间的一篇论文《Do We Really Need Deep Learning Models for Time Series Forecasting?》中,来自德国希尔德斯海姆大学计算机科学系的研究者展示了通过精心配置的输入处理结构,GBRT 等简单但强大的集成模型在时间序列预测领域能够媲美甚至超越很多 DNN 模型。

69184f81390840c632d908eeb6e35c1e.png

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

研究者对特征工程多输出 GBRT 模型进行了评估,并提出了以下两个研究问题:

  • 对于用于时间序列预测的基于窗口的学习框架来说,精心配置 GBRT 模型的输入和输出结构有什么效果?

  • 一个虽简单但配置良好的 GBRT 模型与 SOTA 深度学习时间序列预测框架相比如何?

为了回答这两个问题,研究者选择了双重实验设置,分别解决两类预测任务,即系统化方式中的单变量和多变量预测。目的是评估 GBRT 模型以及在顶会(NeurIPS、KDD、SIGIR、ECML、ICML、CIKM、IJCAI、ICLR 等)中出现的 SOTA 深度学习方法。这项研究的整体贡献可以总结如下:

一,研究者将一个简单的机器学习方法 GBRT 提升了竞品 DNN 时间序列预测模型的标准。首先将 GBRT 转换成一个基于窗口的回归框架,接着对它的输入和输出结构进行特征工程,如此便能从额外上下文信息中获益最多;

二,为了突出输入处理对时间序列预测模型的重要性,研究者通过实证证明了为什么基于窗口的 GBRT 输入设置可以在时间序列预测领域提高 ARIMA 和原版 GBRT 等精心配置的模型所产生的预测性能;

三,研究者比较了 GBRT 与各种 SOTA 深度学习时间序列预测模型的性能,并验证了它在单变量和双变量时间序列预测任务中的竞争力。

这项研究也引起了不少人的共鸣。有人认为,时间序列分类任务同样也没有必要用深度学习方法。在一些情况下,SVMs 或逻辑回归方法表现更好,速度也更快。

485feb9153ea4e08d62e125c7d4000d3.png

研究设计

选择基线。研究者系统地过滤了 2016 年至 2020 年在 NeurIPS、KDD、SIGIR、SDM、ECML、ICML、CIKM、IJCAI、ICLR 等会议表现较好的论文集。论文需满足以下要求:

  • 主题:只考虑时间序列预测领域的研究;

  • 数据结构:专用数据类型,但如异步时间序列和概念化为图形的数据被排除在外;

  • 可复现:数据、源代码应公开。如果源代码不可用,但实验设置有清晰的文档,研究也可以从实验中复制结果;

  • 计算的可行性:研究中得出的结果能够以易于处理的方式复现,并在合理的时间内可计算。

评估。该研究在两个层次上对时间序列预测 GBRT 模型进行评估:一个单变量和一个多变量。为了使所选的深度学习基线和 GBRT 之间具有显著的可比性,该研究在相同的数据集上评估了所有模型,数据集如下表 1 所示:左边提供了关于用来评估模型数据集,而右边则列出了各自的实验规范:

81b950264d19039b95df7e8acc3bb3a9.png

问题公式化。时间序列预测问题,就监督学习而言,时间序列预测可以表述为:给定一个集合84a1d96d0037fc0ddabe2a7256cd0275.png和一个集合d129fda5afaa0bddc6cf6c6c4623c4e2.png,经过一系列假设后,得到如下期望损失最小化模型:

735e5497bf172d8eb54cf395920f6e9d.png

GBRT

GBRT 模型,特别是 XGBoost 实现,其优点是易于应用,而且在结构化数据上特别成功。但是当涉及时间序列预测的初始(naive)实现时,GBRT 模型失去了很大一部分灵活性,因为它们没有被投射到基于窗口的回归问题中,而是被配置为适合大部分时间序列作为完整且连续的数据点序列来预测时间序列的后续和剩余测试部分。

与上述初始实现不同,该研究通过将时间序列重新配置为窗口输入,并在多个训练实例(窗口)上进行训练,以模拟成功的时间序列预测模型中使用的输入处理行为,为此该研究定义了一个可调窗口,24dd75fc32e0ba4992ba2632421b030e.png。这种基于窗口的 GBRT 模型输入设置如图 1 所示:

174f0b6be2b2014a556b402e144305e9.png

第一步是使用变换函数e6885636f2d786e2bbc2c3216fec09ca.png将典型的 2D 训练实例(时间序列输入窗口)变换为适合 GBRT 的 1D 形状向量(扁平窗口)。该函数将所有 w 实例的目标值 y_i 连接起来,然后将最后一个时间点实例 t 的协变量向量附加到输入窗口 w 中,表示为 d2b448c4ea9fbf087b40de80da651758.png

基于窗口的 GBRT 输入设置极大地提高了其预测性能,因为 GBRT 模型现在能够掌握数据的底层时间序列结构,并且现在可以被认为是先进 DNN 时间序列预测模型的适当机器学习基线。另一方面,简单配置的 GBRT 模型9f7d397956471ec9df2d4c13d5027caa.png是一个简单的逐点回归模型,将时间点 c6f945898bfb7b4a5d3a0fee67107016.png的协变量作为输入,预测单一目标值 Y_i、j 为同一时间点训练损失如下:

811736ccbf6b4c462c0b8db0043b50ef.png

实验结果

单变量时间序列的结果

下表 2 总体结果表明,除了 traffic 预测外,基于窗口的 GBRT 具有较强的竞争力。另一方面,具有传统配置的预测模型(例如 ARIMA 和 GBRT(Naive))的表现远远优于预期。

fc6b3a73d405b776d738c4f73b0f87b6.png

而在 electricity 预测方面,基于窗口的 GBRT 在所有模型中均显示出最佳的 RMSE 性能,其在 WAPE 和 MAE 方面的性能仅优于 2016 年推出的 TRMF,基于注意力的 DARNN 模型表现较差。关于 exchange rate 任务,LSTNet(以 w = 24 重新实现)和 TMRF 显示出相当强的结果,优于基于窗口的 GBRT 基线。

在不考虑时间预测器的情况下,traffic 预测的结果是混合的,因此 DARNN 和 LSTNet 实现了 traffic 数据集的最佳结果,而对于 PeMSD7 数据集,基于窗口的 GBRT 基线在两个方面优于 DNN 模型三个指标。然而,时间协变量的包含显著提高了 GBRT 的性能(下表 3),因此,对于 traffic 预测,所有 DNN 方法,包括 DeepGlo [18] 和 STGCN(spatio-temporal traffic forecasting model ) [19],其在 PeMSD7 上实现了 6.77 的 RMSE,优于重新配置的 GBRT 基线。

ff3f907b459ba6b20fba48e9112caa37.png

下表 4 显示了 LSTNet 与 GBRT(W-b) 的结果:

dd859472ccd85471fb7e5a06543a9ed9.png

下表 5 中的结果表明 GBRT 的竞争力,但也表明基于 transformer 的模型相当强大,例如 TFT 超过了提升回归树性能。然而,作为一个例外,TFT 构成了本研究中唯一一个始终优于 GBRT 的 DNN 模型,而 DeepAR 和 DeepState 等概率模型在这些单变量数据集上的表现优于其他模型。

d3f0469f763482a37d51882b0c2c0789.png

多元数据集

下表 6 中为 DARNN 与基于窗口 GBRT 比较:简单、配置良好的 GBRT 基线可以超越 DNN 框架。

e4526fb16c74601d97b3b4cdbd0a42ed.png

从下表 7 可以看出,即使是专门为某一预测任务设计的 DNN 模型,也没有达到预期效果。相反,DAQFF 的性能比简单的基于窗口、特征工程的梯度提升回归树模型更差。在本实验中,值得注意的是,即使是传统应用预测意义上的 GBRT 模型也能在 air quality 数据集上提供更好的结果。

47697415852fce5cd332475b151ef4be.png

编辑:黄继彦

校对:林亦霖

39ae6bd90782a39d1375f92bee3c8bb9.png

这篇关于做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个DNN模型...的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/900927

相关文章

Golang的CSP模型简介(最新推荐)

《Golang的CSP模型简介(最新推荐)》Golang采用了CSP(CommunicatingSequentialProcesses,通信顺序进程)并发模型,通过goroutine和channe... 目录前言一、介绍1. 什么是 CSP 模型2. Goroutine3. Channel4. Channe

C#使用yield关键字实现提升迭代性能与效率

《C#使用yield关键字实现提升迭代性能与效率》yield关键字在C#中简化了数据迭代的方式,实现了按需生成数据,自动维护迭代状态,本文主要来聊聊如何使用yield关键字实现提升迭代性能与效率,感兴... 目录前言传统迭代和yield迭代方式对比yield延迟加载按需获取数据yield break显式示迭

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

五大特性引领创新! 深度操作系统 deepin 25 Preview预览版发布

《五大特性引领创新!深度操作系统deepin25Preview预览版发布》今日,深度操作系统正式推出deepin25Preview版本,该版本集成了五大核心特性:磐石系统、全新DDE、Tr... 深度操作系统今日发布了 deepin 25 Preview,新版本囊括五大特性:磐石系统、全新 DDE、Tree

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

Node.js 中 http 模块的深度剖析与实战应用小结

《Node.js中http模块的深度剖析与实战应用小结》本文详细介绍了Node.js中的http模块,从创建HTTP服务器、处理请求与响应,到获取请求参数,每个环节都通过代码示例进行解析,旨在帮... 目录Node.js 中 http 模块的深度剖析与实战应用一、引言二、创建 HTTP 服务器:基石搭建(一

如何用Java结合经纬度位置计算目标点的日出日落时间详解

《如何用Java结合经纬度位置计算目标点的日出日落时间详解》这篇文章主详细讲解了如何基于目标点的经纬度计算日出日落时间,提供了在线API和Java库两种计算方法,并通过实际案例展示了其应用,需要的朋友... 目录前言一、应用示例1、天安门升旗时间2、湖南省日出日落信息二、Java日出日落计算1、在线API2

Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)

《Python基于火山引擎豆包大模型搭建QQ机器人详细教程(2024年最新)》:本文主要介绍Python基于火山引擎豆包大模型搭建QQ机器人详细的相关资料,包括开通模型、配置APIKEY鉴权和SD... 目录豆包大模型概述开通模型付费安装 SDK 环境配置 API KEY 鉴权Ark 模型接口Prompt

如何使用 Bash 脚本中的time命令来统计命令执行时间(中英双语)

《如何使用Bash脚本中的time命令来统计命令执行时间(中英双语)》本文介绍了如何在Bash脚本中使用`time`命令来测量命令执行时间,包括`real`、`user`和`sys`三个时间指标,... 使用 Bash 脚本中的 time 命令来统计命令执行时间在日常的开发和运维过程中,性能监控和优化是不

python中的与时间相关的模块应用场景分析

《python中的与时间相关的模块应用场景分析》本文介绍了Python中与时间相关的几个重要模块:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateu... 目录1. time 模块2. datetime 模块3. calendar 模块4. timeit