时间序列预测方法最全总结!

组合预测模型 | ARIMA-LSTM时间序列预测(Python) 阅读详情

时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。

需要明确一点的是,与回归分析预测模型不同,时间序列模型依赖于数值在时间上的先后顺序,同样大小的值改变顺序后输入模型产生的结果是不同的。如之前的文章所介绍,时间序列可以分为平稳序列,即存在某种周期,季节性及趋势的方差和均值不随时间而变化的序列,和非平稳序列。如何对各种场景的时序数据做准确地预测,是一个非常值得研究的问题。

本文为大家总结时间序列预测的有关方法,浅析这些技术并探索如何可以提高这些方法的预测效果。

01

基本规则法

要预测一个时间序列,我们首先需要发现其变化的规律。最基本的方法,就是通过人工经验,挖掘时序数据的演化特征,找到时序变化的周期,从而预估时间序列的未来走势。具体的观察一个时间序列,当序列存在周期性时,提取时间序列的周期性特征进行预测。

图 | 抽取时序的周期进行拟合

02

传统参数法

之前我们介绍了时间序列的统计分析方法,该方法可以将时间序列的演化变为数学参数,天然的,我们可以通过拟合好的模型,进行时间序列的预测。

传统的参数预测方法可以分为两种,一种拟合标准时间序列的餐顺方法,包括移动平均,指数平均等;另一种是考虑多因素组合的参数方法,即AR,MA,ARMA等模型。这类方法比较适用于小规模,单变量的预测,比如某门店的销量预测等。总的来说,基于此类方法的建模步骤是:

首先需要对观测值序列进行平稳性检测,如果不平稳,则对其进行差分运算直到差分后的数据平稳;
在数据平稳后则对其进行白噪声检验,白噪声是指零均值常方差的随机平稳序列;
如果是平稳非白噪声序列就计算ACF(自相关系数)、PACF(偏自相关系数),进行ARMA等模型识别,
对已识别好的模型,确定模型参数,最后应用预测并进行误差分析。

这类方法一般是统计或者金融出身的人用的比较多,对统计学或者随机过程知识的要求比较高。而在数据挖掘的场景中比较难适用,因为需要大量的参数化建模。比如有一个连锁门店的销售数据,要预测每个门店的未来销量,用这类方法的话就需要对每个门店都建立模型, 这样就很难操作了。

03

时间序列分解

时间序列分解法是数年来一直非常有用的方法,一个时间序列往往是一下几类变化形式的叠加或耦合:

长期趋势(Secular trend, T):长期趋势指现象在较长时期内持续发展变化的一种趋向或状态。
季节变动(Seasonal Variation, S):季节波动是由于季节的变化引起的现象发展水平的规则变动
循环波动(Cyclical Variation, C):循环波动指以若干年为期限,不具严格规则的周期性连续变动
不规则波动(Irregular Variation, I): 不规则波动指由于众多偶然因素对时间序列造成的影响

图 | 原始时间序列

时间序列分解模型

// 加法模型

加法模型的形式如下:

加法模型中的四种成分之间是相互独立的,某种成分的变动并不影响其他成分的变动。各个成分都用绝对量表示,并且具有相同的量纲。

// 乘法模型

乘法模型的形式如下:

乘法模型中四种成分之间保持着相互依存的关系,一般而言,长期趋势用绝对量表示,具有和时间序列本身相同的量纲,其他成分则用相对量表示。

// 加乘混合模型

以上两种方式的混合

时间序列的长期趋势分析

图 | 拟合的时序趋势

// 移动平均法

在原时间序列内依次求连续若干期的平均数作为其某一期的趋势值,如此逐项递移求得一系列的移动平均数,形成一个平均数时间序列。

// 时间回归法

使用回归分析中的最小二乘法,以时间t或t的函数为自变量拟合趋势方程。常用的趋势方程如下:

一阶线性方程
二次(多次)方程曲线
指数曲线

时间序列季节变动分析

时间序列短期会受季节等短期因素影响,从而存在一些周期性


图 | 拟合的季节变动

// 乘法模型-季节指数

乘法模型中的季节成分通过季节指数来反映。常用的方法称为移动平均趋势剔除法。步骤如下:

  1. 计算一动平均值

  2. 从序列中剔除移动平均值

时间序列循环变动分析

时序长期来看会存在一个循环往复,通常通过剩余法来计算循环变动成分C:

如果有季节成分,计算季节指数,得到季节调整后的数据TCI
根据趋势方程从季节调整后的数据中消除长期趋势,得到序列CI
对消去季节成分和趋势值的序列CI进行移动平均以消除不规则波动,得到循环变动成分C

图 | 拟合的长期循环变动

时间序列不规则变动分析

除了以上三种变动信息,剩下的为不规律的时序变动信息。如有需要,可以进一步分解出不规则变动成分:

对于一个时间序列,剔除长期趋势,季节性,循环变动因素之后,剩下的就是不规则变动因素

图 | 拟合的不规则变动

             Prophet

这里特别提一个Facebook 所服务化的时间序列预测工具,Prophet,具体可以参考官网说明。该方法类似于STL时序分解的思路,增加考虑节假日等信息对时序变化的影响。

04

机器学习

近年来时间序列预测方法,多采用机器学习方式。机器学习的方法,主要是构建样本数据集,采用“时间特征”到“样本值”的方式,通过有监督学习,学习特征与标签之前的关联关系,从而实现时间序列预测。常用的场景有:

// 单步预测

在时间序列预测中的标准做法是使用滞后的观测值,作为输入变量来预测当前的时间的观测值。这被称为单步单变量预测。

// 多步预测

另一种预测问题类型是使用过去的观测序列 来预测未来的观测序列。这就是多步预测或序列预测。

// 多变量预测

另一个重要的时间序列称为多元时间序列,即每个时间有多个观测值:

这意味着我们通过不同的测量手段得到了多种观测值,并且希望预测其中的一个或几个值。例如,我们可能有两组时间序列观测值,,我们希望分析这组多元时间序列来预测 。

基于以上场景,许多监督学习的方法可以应用在时间序列的预测中,比如svm/xgboost/逻辑回归/回归树/...

05

深度学习

深度学习方法近年来逐渐替代机器学习方法,成为人工智能与数据分析的主流,对于时间序列的分析,有许多方法可以进行处理,包括:循环神经网络-LSTM模型/卷积神经网络/基于注意力机制的模型(seq2seq)/...

// 循环神经网络

循环神经网络(RNN)框架及其变种(LSTM/GRU/...)是为处理序列型而生的模型,天生的循环自回归的结构是对时间序列的很好的表示。所采用的方式也是监督学习,不过不需要人为的构建时序特征,可以通过深度学习网络拟合时序曲线,捕捉时间先后顺序关系,长期依赖,进行特征学习与预测。

// 卷积神经网络

传统的卷积神经网络(CNN)一般认为不太适合时序问题的建模,这主要由于其卷积核大小的限制,不能很好的抓取长时的依赖信息。但是最近也有很多的工作显示,特定的卷积神经网络结构也可以达到很好的效果,通常将时间序列转化为图像,再应用基于卷积神经网络的模型做分析。

Gramian Angular Field (格拉姆角场GAF)

将笛卡尔坐标系下的一维时间序列,转化为极坐标系表示,再使用三角函数生成GAF矩阵。计算过程:

数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间
极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列
角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF

Short Time Fourier Transform (短时傅里叶变换STFT)

在语音信号处理场景使用很广泛,其目标主要将时间序列转为时频图像,进而采用卷积网络进行特征分析。


// 时间卷积网络

时间卷积网络(TCN)是一种特殊的卷积神经网络,针对一维空间做卷积,迭代多层捕捉长期关系。具体的,对于上一层t时刻的值,只依赖于下一层t时刻及其之前的值。和传统的卷积神经网络的不同之处在于,TCN不能看到未来的数据,它是单向的结构,不是双向的。也就是说只有有了前面的因才有后面的果,是一种严格的时间约束模型,因此又被称为因果卷积。

// 基于注意力机制的模型

在RNN中分析时间序列需要我们一步步的顺序处理从 t-n 到 t 的所有信息,而当它们相距较远(n非常大)时RNN的效果常常较差,且由于其顺序性处理效率也较低。基于注意力机制(Attention)的模型,采用跳步的方式计算每个数值之间的两两关联,然后组合这些关联分数得到一个加权的表示。该表示通过前馈神经网络的学习,可以更好的考虑到时序的上下文的信息。

以上步骤如下动图所示:

// 结合CNN+RNN+Attention,作用各不相同互相配合

主要设计思想:

  • CNN捕捉短期局部依赖关系

  • RNN捕捉长期宏观依赖关系

  • Attention为重要时间段或变量加权

06

一些需要注意的难点

  • 理解时间序列预测问题是要用历史数据预测未来数据

  • 时间序列问题的训练集、测试集划分

  • 特征工程方法及过程

  • 如何转化为监督学习数据集

  • LSTM计算过程理解,包括输入输出维度、参数数量等

  • seq2seq过程的理解,decoder实现

  • attention注意力机制的原理及实现,包括encoder-decoder attention, self attention, multi-head attention等

  • 时间卷积网络的含义,dilated-convolution 和 causal-convolution

  • prophet预测原理,各参数对模型拟合效果、泛化效果的影响

  • 时间序列基本规则法中周期因子得计算过程

  • 传统方法如周期因子、线性回归、ARMA等的预测结果表现为,预测趋势大致正确,但对波动预测不理想,体现在波动的幅度差异、相位偏移。

  • 时间序列分解方法。理解加法模型和乘法模型,判断分解模型的选取及分解技巧。

// 工具

  • tslearn:开源的时间序列机器学习python工具包

  • tsfresh:开源的时间序列特征提取python工具包

  • pyts:开源的时间序列分类Python工具包。提供预处理工具及若干种时间序列分类算法

“整理不易,点赞三连↓

混沌模型时间序列预测 一、混沌理论 混沌现象是介于确定和随机之间的一种不规则运动,是一种由确定的非线性动力学系统生成的复杂行为,广泛存在于自然系统和社会系统中。混沌是确定性系统中由于随机性行为而产生的一种外在的、复杂的、貌似无规则的运动。对于确定性的非线性系统出现的具有内在随机性的解,称为混沌解。 混沌系统分为两类:(1)保守系统中不可积系统的混沌,如庞加莱证明的太阳系稳定性问题;(2)耗散系统中的混沌,如Lor... 阅读详情

相关推荐

时间序列预测_基于Excel的时间序列分析和预测

时间序列用于描述某种现象随时间发展变化的特征。在生活和工作中经常需要作出预测。比如,预测一只股票价格的走势,预测下一年度的销售额等。时间序列基础概念1、什么是时间序列?时间序列是同一现象在不同时间上的相继观察值排列而成的序列。例如,下图是2000-2013年我国人均GDP、啤酒产量和居民消费价格指数的时间序列。人均GDP就是一个时间序列,可以看出,时间序列包括时间指标和数值指标两个部分。2、时间序...

weixin_39912368的博客 1万+

15种时间序列预测方法总结(包含多种方法代码实现)

本文提供时间序列分析从基本概念到模型的讲解,利用python和pytroch实现代码讲解,文章内既包括简单的代码示例又包括复杂的代码讲解部分,也有精美的图片的形式帮助读者更加快速的理解时间序列,本文涉及到的内容有机器学习和深度学习部分也包括一部分强化学习内容,文章内还含有运行结果的展示,同时提供给大家数据集进行操作,可以说时间序列类的任务你只看这一篇文章就足够了,总之无论你是数据科学新手,还是寻求进一步提升你的时间序列预测技能的专业人士,这篇博客都将为你提供宝贵的知识和经验。

Snu77的博客 11万+

【XGBoost 时间序列预测】XGBoost做时间序列预测

XGBoost是用于分类和回归问题的梯度提升集成方法的一个实现。XGBoost是为表格式数据集的分类和回归问题而设计的,也可以用于时间序列预测。通过使用滑动时间窗口表示,时间序列数据集可以适用于有监督学习。下面我们一起来学习下: 1、xgboost安装: pip install xgboost 也可以使用scikit-learn API中的XGBRegressor包装类 2、例子讲解 让我们用一个例子来具体学习。设想我们有这样一组时间序列数据: time measure 1 100 2 110 3

赖德发的博客 5510

时间序列预测模型(非常详细),零基础入门到精通,看这一篇就够了

时间序列预测模型(非常详细),零基础入门到精通,看这一篇就够了

Java癫疯的博客 9998

时间序列预测模型方法

简介 时间序列预测法是一种历史资料延伸预测,也称历史引伸预测法。是以时间数列所能反映的社会经济现象的发展过程和规律性,进行引伸外推,预测其发展趋势的方法。 时间序列,也叫时间数列、历史复数或动态数列。它是将某种统计指标的数值,按时间先后顺序排到所形成的数列。时间序列预测法就是通过编制和分析时间序列,根据时间序列所反映出来的发展过程、方向和趋势,进行类推或延伸,借以预测下一段时间或以后若干年内可

不忘初心 方得始终 3万+

时间序列预测 — 时间序列预测研究综述

指对某种事物发展变化过程进行观测并按照一定频率采集得出的一组随机变量。就是从众多数据中挖掘出其蕴含的核心规律并且依据已知的因素对未来的数据做出准确的估计。由于大量物联网数据采集设备的接入、多维数据的爆炸增长和对预测精度的要求愈发苛刻,经典的参数模型以及传统机器学习算法难以满足预测任务的高效率和高精度需求。近年来,以卷积神经网络、循环神经网络和 Transformer模型为代表的深度学习算法在时间序列预测任务中取得了丰硕的成果。

几度春风里的博客 2万+

时间序列预测的8种常用方法简介

时间序列预测8种常用方法简介,包括朴素预测法、简单平均法、移动平均法、简单指数平滑法、霍尔特(Holt)线性趋势法、Holt-Winter方法、AMRIA。

WHYbeHERE的博客 5万+

数据分析实战│时间序列预测

时间序列预测问题是一类常见的数据分析问题。数据中往往包含时间标签,这类问题往往根据过去一段时间的数据,建立能够比较精确地反映序列中所包含的动态依存关系的数学模型,并对未来的数据进行预测。

不断学习,不断进步,提高自己 2508

11种常见的时间序列预测方法

11种常见的时间序列预测方法

SeafyLiang的博客 3万+

时间序列多步预测经典方法总结

本篇文章将讲解时间序列中的经典问题:多步预测,所谓多步预测就是利用过去的时间数据来预测未来多个状态的时序数据,举个例子就是利用过去30天的数据来预测未来2天的数据。

优快云 精品推荐 7646

【数据分析】基于时间序列的预测方法

时间序列(Time Series,TS)是数据科学中比较有意思的一个领域。顾名思义,TS是按固定时间间隔收集的数据点的集合。对这些数据进行分析以确定长期趋势,以便预测未来或执行其他形式的分析。但是TS又与常规回归问题不同。...

Data · Model · Agent · Repeat 1万+

时间序列预测方法之 Transformer

最近打算分享一些基于机器学习的时间序列预测方法。这是第三篇。 前面介绍的 DeepAR 和 DeepState 都是基于 RNN 的模型。RNN 是序列建模的经典方法,它通过递归来获得序列的全局信息,代价是无法并行。CNN 也可以用来建模序列,但由于卷积捕捉的是局部信息,CNN 模型往往需要通过叠加很多层才能获得较大的感受野。后续我可能会~~(意思就是未必会)~~介绍基于 CNN 的时间序列预测方...

算命笔记 2万+

Win10如何使用BC3.1精简版

Win10如何使用BC3.1精简版 使用Borland C++3.1 学习μC/OS—Ⅱ几乎是现在的普遍做法,但是由于Win10系统不能直接使用BC3.1,所以需要用到DOSBox。 1、解压bc3.1精简版压缩包,本文将BC3.1文件夹复制在D盘下,DOSBOX按照默认路径安装。下图为两者安装目录图示: 2、修改DOSBOX的配置文件,找到DOSBox文件安装路径,记事本方式打开DOSBox 0.74-3 Options.bat文件,在此文件末尾添加: MOUNT C D:\BC//意为把D:\BC目录

qq_45547236的博客 2377

时间序列预测方法总结

这本来是我回答的一个问题:有什么好的模型可以做高精度的时间序列预测呢? - BINGO Hong的回答 - 知乎 https://www.zhihu.com/question/21229371/answer/533770345 但觉得在那个答案下一直更新好麻烦,干脆就移到自己主页文章好了。 以后会在这里更新,原答案不更新了。 时间序列基本规则法-周期因子法 提取时间序列的周期性特征进行预测,...

Poo_Chai的博客 1万+

AI工程化之生成式UI & A2UI(一)

本文系统介绍了生成式UI和Google A2UI技术。生成式UI通过AI直接生成前端代码(完全生成式)或DSL(混合式),实现千人千面的动态界面和研发提效。Google A2UI提出组件级和消息级协议,采用JSON规范实现渲染框架解耦,支持多端渲染。文章详细阐述了A2UI的架构设计,包括协议生成、服务端处理和渲染器实现,并对比了与传统前端框架的差异,指出A2UI本质是UI=F(AI(UI)+AI(state))的创新模式。最后通过playground项目展示了A2UI的实践应用。

qq_34306228的博客 589

skywalking各项指标说明

skywalking各项指标说明

没有简介 2487

时间序列预测

时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。

weixin_53741275的博客 9414

VCS的增量和分离编译

vcs的增量和分离编译

yunduor909的博客 3302

时间序列预测方法

之前一直在看时间序列预测方法的文献,最近终于有点头绪了,然后就花了些时间来做一下整理。时间序列预测方法可分为传统的,基于机器学习的和基于深度学习的,以下每一方面都列举了几个比较经典的模型算法。

jkevinking的博客 7553

车辆贷款违约预测挑战赛

2021科大讯飞-车辆贷款违约预测挑战赛--方案简介车贷违约预测问题,目的是建立风险识别模型来预测可能违约的借款人。预测结果为借款人是否可能违约,属于二分类问题。偏数据挖掘的比赛,关键点是如何基于对数据的理解抽象归纳出有用的特征。站在大佬的视角,尝试学习总结,站在巨人的肩膀上,也许看得会更远一些。直接进入主题,开始学习套路,芜湖~特征工程1、常用库、数据导入import pandas as pd import numpy as np import lightgbm as lgb import xgboost

平平淡淡,戒急用忍,一生学闭嘴。 3341

关节电机技术全解析:原理、双编码器、控制方法与硬件选型

关于关机电机的组成,技术原理,特点以及选型等方面的详细介绍,可以帮助快速学习关节电机相关内容!

start_up_go的博客 692

时间序列预测——一文搞懂什么是时间序列

时间序列(Time Series)是指按照时间顺序排列的一系列数据点,每个数据点通常在特定时间戳上被收集和记录。简而言之,时间序列是一种按时间维度组织的数据,它能够反映一个变量在不同时间段的变化趋势或行为模式。时间序列数据的核心特征在于时间依赖性,即数据点之间通常存在某种内在的时间序列关系,当前时刻的数据往往受到之前时刻数据的影响。这种依赖关系是时间序列分析和预测的关键所在。顺序性:时间序列数据具有时间顺序特征,时间是数据的一个重要维度,数据点不是独立的,它们的顺序性对分析至关重要。

qq_63708623的博客 6914

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题

成功解决使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 目录 解决问题 解决思路 解决方法 T1、修改默认配置 T2、修改后缀参数(此方法是其他网友推荐,博主没有尝试) T3、如果以上还不成功,这个时候很可能是环境配置有问题 解决问题 使用jupyter notebook命令打开原先存的.ipynb文件突然消失的问题 解决思路 使用jupyter notebook命令打开原先存的.ipynb文件突然消失,说明...

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 5116

超完整!11 种经典时间序列预测方法!

本文演示了11 种不同的经典时间序列预测方法,以及时间序列方法的对比及实践教程。自回归 (AR)移动平均线 (MA)自回归移动平均线 (ARMA)自回归综合移动平均线 (ARIMA)季节性自回归综合移动平均线 (SARIMA)具有外生回归的季节性自回归积分移动平均值 (SARIMAX)向量自回归 (VAR)向量自回归移动平均 (VARMA)具有外生回归的向量自回归移动平均值 (VARMAX)简单指数平滑 (SES)Holt Winter 指数平滑 (HWES)

m0_59235245的博客 2619

点云焊缝提取

本文介绍了一个基于PCL库的点云处理流程,包含三个核心模块:MLS平滑处理通过多项式拟合修正点云位置;差异提取通过双向匹配定位源/目标点云的非重叠区域;统计过滤剔除离群噪声点。该流程采用"平滑-筛选-净化"的通用思路,将复杂算法封装为可配置接口,实现了工业级点云预处理。文章重点分析了各模块的原理、PCL接口调用及参数设计逻辑,同时指出参数调优、算法扩展等深入探索方向,展现了PCL在点云处理中的模块化优势与实用价值。

weixin_45196569的博客 250

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

上一篇: 使用计算机视觉来做异常检测!
下一篇: 三月组队学习计划!
Datawhale
Datawhale 领域专家: 物联网技术领域 领域专家: 物联网技术领域
博客等级 码龄8年 8900粉丝 1080原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值