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

相关文章

C#实现将Excel工作表拆分为多个窗格

《C#实现将Excel工作表拆分为多个窗格》在日常工作中,我们经常需要处理包含大量数据的Excel文件,本文将深入探讨如何在C#中利用强大的Spire.XLSfor.NET自动化实现Excel工作表的... 目录为什么需要拆分 Excel 窗格借助 Spire.XLS for .NET 实现冻结窗格(Fro

SQL 注入攻击(SQL Injection)原理、利用方式与防御策略深度解析

《SQL注入攻击(SQLInjection)原理、利用方式与防御策略深度解析》本文将从SQL注入的基本原理、攻击方式、常见利用手法,到企业级防御方案进行全面讲解,以帮助开发者和安全人员更系统地理解... 目录一、前言二、SQL 注入攻击的基本概念三、SQL 注入常见类型分析1. 基于错误回显的注入(Erro

MySQL 批量插入的原理和实战方法(快速提升大数据导入效率)

《MySQL批量插入的原理和实战方法(快速提升大数据导入效率)》在日常开发中,我们经常需要将大量数据批量插入到MySQL数据库中,本文将介绍批量插入的原理、实现方法,并结合Python和PyMySQ... 目录一、批量插入的优势二、mysql 表的创建示例三、python 实现批量插入1. 安装 PyMyS

Java领域模型示例详解

《Java领域模型示例详解》本文介绍了Java领域模型(POJO/Entity/VO/DTO/BO)的定义、用途和区别,强调了它们在不同场景下的角色和使用场景,文章还通过一个流程示例展示了各模型如何协... 目录Java领域模型(POJO / Entity / VO/ DTO / BO)一、为什么需要领域模

深入理解Redis线程模型的原理及使用

《深入理解Redis线程模型的原理及使用》Redis的线程模型整体还是多线程的,只是后台执行指令的核心线程是单线程的,整个线程模型可以理解为还是以单线程为主,基于这种单线程为主的线程模型,不同客户端的... 目录1 Redis是单线程www.chinasem.cn还是多线程2 Redis如何保证指令原子性2.

Java枚举类型深度详解

《Java枚举类型深度详解》Java的枚举类型(enum)是一种强大的工具,它不仅可以让你的代码更简洁、可读,而且通过类型安全、常量集合、方法重写和接口实现等特性,使得枚举在很多场景下都非常有用,本文... 目录前言1. enum关键字的使用:定义枚举类型什么是枚举类型?如何定义枚举类型?使用枚举类型:2.

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Python函数作用域与闭包举例深度解析

《Python函数作用域与闭包举例深度解析》Python函数的作用域规则和闭包是编程中的关键概念,它们决定了变量的访问和生命周期,:本文主要介绍Python函数作用域与闭包的相关资料,文中通过代码... 目录1. 基础作用域访问示例1:访问全局变量示例2:访问外层函数变量2. 闭包基础示例3:简单闭包示例4