做时间序列预测有必要用深度学习吗?事实证明,梯度提升回归树媲美甚至超越多个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

相关文章

深度解析Spring Security 中的 SecurityFilterChain核心功能

《深度解析SpringSecurity中的SecurityFilterChain核心功能》SecurityFilterChain通过组件化配置、类型安全路径匹配、多链协同三大特性,重构了Spri... 目录Spring Security 中的SecurityFilterChain深度解析一、Security

深度解析Nginx日志分析与499状态码问题解决

《深度解析Nginx日志分析与499状态码问题解决》在Web服务器运维和性能优化过程中,Nginx日志是排查问题的重要依据,本文将围绕Nginx日志分析、499状态码的成因、排查方法及解决方案展开讨论... 目录前言1. Nginx日志基础1.1 Nginx日志存放位置1.2 Nginx日志格式2. 499

Java获取当前时间String类型和Date类型方式

《Java获取当前时间String类型和Date类型方式》:本文主要介绍Java获取当前时间String类型和Date类型方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,... 目录Java获取当前时间String和Date类型String类型和Date类型输出结果总结Java获取

Python实现批量提取BLF文件时间戳

《Python实现批量提取BLF文件时间戳》BLF(BinaryLoggingFormat)作为Vector公司推出的CAN总线数据记录格式,被广泛用于存储车辆通信数据,本文将使用Python轻松提取... 目录一、为什么需要批量处理 BLF 文件二、核心代码解析:从文件遍历到数据导出1. 环境准备与依赖库

MySQL多实例管理如何在一台主机上运行多个mysql

《MySQL多实例管理如何在一台主机上运行多个mysql》文章详解了在Linux主机上通过二进制方式安装MySQL多实例的步骤,涵盖端口配置、数据目录准备、初始化与启动流程,以及排错方法,适用于构建读... 目录一、什么是mysql多实例二、二进制方式安装MySQL1.获取二进制代码包2.安装基础依赖3.清

Spring的RedisTemplate的json反序列泛型丢失问题解决

《Spring的RedisTemplate的json反序列泛型丢失问题解决》本文主要介绍了SpringRedisTemplate中使用JSON序列化时泛型信息丢失的问题及其提出三种解决方案,可以根据性... 目录背景解决方案方案一方案二方案三总结背景在使用RedisTemplate操作redis时我们针对

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完

PowerShell中15个提升运维效率关键命令实战指南

《PowerShell中15个提升运维效率关键命令实战指南》作为网络安全专业人员的必备技能,PowerShell在系统管理、日志分析、威胁检测和自动化响应方面展现出强大能力,下面我们就来看看15个提升... 目录一、PowerShell在网络安全中的战略价值二、网络安全关键场景命令实战1. 系统安全基线核查

go中的时间处理过程

《go中的时间处理过程》:本文主要介绍go中的时间处理过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1 获取当前时间2 获取当前时间戳3 获取当前时间的字符串格式4 相互转化4.1 时间戳转时间字符串 (int64 > string)4.2 时间字符串转时间

深度解析Java DTO(最新推荐)

《深度解析JavaDTO(最新推荐)》DTO(DataTransferObject)是一种用于在不同层(如Controller层、Service层)之间传输数据的对象设计模式,其核心目的是封装数据,... 目录一、什么是DTO?DTO的核心特点:二、为什么需要DTO?(对比Entity)三、实际应用场景解析