精华内容
下载资源
问答
  • 2021-07-21 00:14:40

    来自 | 知乎 作者 | BINGO Hong

    链接 | https://zhuanlan.zhihu.com/p/67832773

    已经得到作者授权,仅作学术交流,请勿二次转载

    1. 时间序列基本规则法-周期因子法

    a. 提取时间序列的周期性特征进行预测

    参考:时间序列规则法快速入门 https://www.jianshu.com/p/31e20f00c26f?spm=5176.12282029.0.0.36241491UUhnZE

    • 计算周期因子factors

    • 计算base

    • 预测=base*factors

    b. 观察序列,当序列存在周期性时,可以用周期因子法做为baseline

    • 在天池竞赛-资金流入流出预测-挑战Baseline-天池大赛-阿里云天池,周期因子可以取得110分+的成绩,排名进500妥妥的。(后面有机会再贴代码)

      挑战baseline比赛链接:https://tianchi.aliyun.com/competition/entrance/231573/introduction?spm=5176.12281949.1003.6.493e24486tbptc

    2. 线性回归-利用时间特征做线性回归

    a. 提取时间的周期性特点做为特征,此时训练集每条样本为"时间特征->目标值",时间序列的依赖关系被剔除,不需要严格依赖滑窗截取训练样本。常见是将时间用0-1哑变量表达,有以下若干种特征:

    • 将星期转化为了0-1变量,从周一至周天,独热编码共7个变量

    • 将节假日转化为0-1变量,视具体节假日数目,可简单分为两类,"有假日"-"无假日",独热编码共2个变量;或赋予不同编码值,如区分国庆、春节、劳动节等使用1、2、3表示

    • 将月初转化为0-1变量,简单分两类表示为"是月初"-"非月初",共2个特征

    • 类似的月中、月初可以转化为0-1变量

    • 控制时间粒度,区分是weekday or weekend

    b. 观察序列,当序列存在周期性时,线性回归也可做为baseline

    • 在天池竞赛-资金流入流出预测-挑战Baseline-天池大赛-阿里云天池,线性回归可以取得100分+的成绩,应该还没到500,多调节下特征就能进去了。

    3.传统时序建模方法,ARMA/ARIMA等线性模型。

    参考:

    • 写给你的金融时间序列分析:基础篇 

      https://zhuanlan.zhihu.com/p/38320827

    • 自回归/滑动平均阶数判断 Identifying the orders of AR and MA terms in an ARIMA model(https://people.duke.edu/~rnau/411arim3.htm)列举了11条一般原则,其中提到:

      • 差分方法可消除正相关但同时引入负相关

      • AR项可消除正相关,MA项消除负相关

      • AR项和MA项作用会相互抵消,通常包含两种要素时可尝试减少某项,避免过拟合

    4.时间序列分解,使用加法模型或乘法模型将原始序列拆分为4部分。

    a. 拆分为4部分:长期趋势变动T、季节变动S(显式周期,固定幅度、长度的周期波动)、循环变动C(隐式周期,周期长不具严格规则的波动)和不规则变动I。参考:

    • 时间序列分解法 - MBA智库百科(https://wiki.mbalib.com/wiki/时间序列分解法)

    • 时间序列分解(https://www.jianshu.com/p/e6d286132690)

    b. 乘法模型中SCI均为比例,加法模型中SCI与T有相同量纲。

    c. 循环变动C较为复杂,短期不体现或归入趋势变化中。

    d. 两类平滑方法:

    • 以滑动平均作为平滑方法提取趋势的seasonal_decompose朴素分解。statsmodels.tsa.seasonal.seasonal_decompose(https://www.statsmodels.org/dev/generated/statsmodels.tsa.seasonal.seasonal_decompose.html#statsmodels.tsa.seasonal.seasonal_decompose)

    • 以鲁棒局部加权回归作为平滑方法的STL分解。statsmodels.tsa.seasonal.STL

    e. 季节性分析。数据中有季节性因素,与整体趋势相比显得比较弱。原文: Investigating Seasonality in a Time Series: A Mystery in Three Parts (https://data.blog/2018/07/24/investigating-seasonality-in-a-time-series-a-mystery-in-three-parts/);中文:干货 | 季节性的分析才不简单,小心不要在随机数据中也分析出季节性

    f. 在天池竞赛-资金流入流出预测-挑战Baseline-天池大赛-阿里云天池,时间序列分解方法也能取得很好的成绩。(后面有机会试试这种方法)

    • 【天池大数据赛题解析】资金流入流出预测(附Top4答辩ppt) - 止战 - 博客园(https://www.cnblogs.com/zhizhan/p/4868411.html)

    5. 特征工程着手,时间滑窗改变数据的组织方式,使用xgboost/LSTM模型/时间卷积网络等。

    参考:

    • kaggle商品销量预测1st的思路:特征工程+LGBM/LSTM, 1st place solution | Kaggle (https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47582)

    • kaggle商品销量预测5th的思路:特征工程+LGBM/CNN-DNN/seq2seq,5th Place Solution | Kaggle (https://www.kaggle.com/c/favorita-grocery-sales-forecasting/discussion/47556)

    6. 转化为监督学习数据集,使用xgboot/LSTM模型/时间卷积网络/seq2seq(attention_based_model)。

    参考:

    • 如何用Python将时间序列转换为监督学习问题 - 云+社区 - 腾讯云

      https://cloud.tencent.com/developer/article/1042809

    • Keras中带LSTM的多变量时间序列预测 - 云+社区 - 腾讯云

      https://cloud.tencent.com/developer/article/1041442

    • 时间卷积网络(TCN) 总结:时序模型不再是递归网络(RNN) 的天下,但作为信息粗暴提取的一种方法,请不要神话CNN !

      http://nooverfit.com/wp/时间卷积网络tcn-总结:时序模型不再是递归网络rnn

    • 算法上可以引入注意力机制的seq2seq模型,见过纯粹的seq2seq解法,结合注意力机制的还没见过开源代码(可能是搜索不够仔细)。

    • seq2seq代码:Kaggle-Competition-Favorita/seq2seq

      https://github.com/LenzDu/Kaggle-Competition-Favorita/blob/master/seq2seq.py

    • 注意力机制资料:

      • 台大-李宏毅《Attention_based_model》

      • 他们只说注意力机制(Attention Mechanism)不练,还是我来给大家撸代码讲解(https://juejin.im/post/5bbf41c3f265da0af16160d2#heading-0)

      • 《Attention is All You Need》浅读(简介+代码)(https://kexue.fm/archives/4765)

      • 川陀学者:Attention机制详解(二)——Self-Attention与Transformer(https://zhuanlan.zhihu.com/p/47282410)

      • The Illustrated Transformer (https://jalammar.github.io/illustrated-transformer/)

      • Visualizing A Neural Machine Translation Model (Mechanics of Seq2seq Models With Attention)

    7.Facebook-prophet,类似于STL分解思路,因为觉得在控制程度和可解释性上比传统时序模型更有优势,所以单独列车。

    参考:

    • 官网说明(英文)

      https://facebook.github.io/prophet/docs/quick_start.html#python-api

    • 官网notbook(英文)

      https://github.com/facebook/prophet/blob/master/notebooks/trend_changepoints.ipynb

    • 中文推荐 @张戎 的文章,从原理到使用都有介绍,很良心。

      张戎:Facebook 时间序列预测算法 Prophet 的研究

      https://zhuanlan.zhihu.com/p/52330017

    • 个人理解,想进一步用好,可以好好看看论文和官网,有空撸遍python的源码

    • 理解prior_scale在代码中如何实现控制趋势项、季节项和节假日项

    • 对于趋势项参数changepoint_range、changepoint_prior_scale如何影响模型拟合和泛化程度

    • 趋势项中的Uncertainty-Intervals(interval_width参数)如何在预测结果使用

    • 论文中的"Simulated Historical Forecasts"对应prophet的Diagnostics工具,可以利用该工具做时间序列的交叉验证评价模型准确程度,如何利用该工具调整模型

    8. 深度学习网络,结合CNN+RNN+Attention,作用各不相同互相配合。目前也只是看了论文,有代码的顺便给出代码链接,代码还没细看。

    主要设计思想:

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

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

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

    • AR捕捉数据尺度变化(没太搞懂啥意思~)

    方法:

    • LSTNet:适用于自相关图表现出有明显周期的时间序列,否则与传统方法相当。LSTNet-Pytorch、LSTNet-Keras、LSTNet-Gluon(Mxnet)。

    • TPA-LSTM:改进了attention机制,侧重选择关键变量,而非选择时间步;实验效果说是对周期不明显的时间序列也能有不错效果。TPA-LSTM-Tensorflow

    代码的坑填上。

    • LSTNet代码解读, BINGO Hong:LSTNet详解(https://zhuanlan.zhihu.com/p/61795416)

    • TPA-LSTM注意力机制, BINGO Hong:TPA注意力机制(TPA-LSTM)

      (https://zhuanlan.zhihu.com/p/63134630)

    9.将时间序列转化为图像,再应用基于卷积神经网络的模型做分析

    a. Gramian Angular Field (格拉姆角场GAF)

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

    • 计算过程:

      • 数值缩放:将笛卡尔坐标系下的时间序列缩放到[0,1]或[-1,1]区间

      • 极坐标转换:使用坐标变换公式,将笛卡尔坐标系序列转化为极坐标系时间序列

      • 角度和/差的三角函数变换:若使用两角和的cos函数则得到GASF,若使用两角差的cos函数则得到GADF

    • 优势:

      • 极坐标中半径表示时间戳,角度表示时间序列数值

      • 通过半径r保持序列的时间依赖性

      • 极坐标保留时间关系的绝对值(翻译得不好,大家可看原文:polar coordinates preserve absolute temporal relations)

      • 每个序列产生唯一的极坐标映射图

      • 可通过GAF矩阵的主对角线,恢复笛卡尔坐标下的原始时间序列

    • 缺点:

      • 当序列长度为n时,产生的GAF矩阵大小为n*n,因此作者建议使用分段聚合近似(Piecewise Aggregation Approximation)保留序列趋势同时减少序列大小。

    • 参考:

      • GAF方法的具体介绍见《Imaging Time-Series to Improve Classification and Imputation》(https://arxiv.org/pdf/1506.00327.pdf)

      • GAF的使用工具见pyts.image.GramianAngularField

      • 案例:波动率预测:基于CNN的图像识别策略(附代码) - 云+社区 - 腾讯云(https://cloud.tencent.com/developer/article/1610107)

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

    • 通用的语音信号处理工具。在我毕业论文里就有使用到,论文还没上知网,链接后面再补吧。

    • 将时间序列转为时频图像。


    工具:

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

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

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

    难点:

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

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

    • 特征工程方法及过程(方法2的过程很有趣)

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

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

    • seq2seq过程的理解,decoder实现

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

    • 时间卷积网络的含义,顾名思义就是将CNN方法用于时间序列中,主要是dilated-convolution and causal-convolution

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

    • TPA侧重选择关键变量

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

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

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

    公众号:AI蜗牛车
    
    保持谦逊、保持自律、保持进步
    
    
    
    个人微信
    备注:昵称+学校/公司+方向
    如果没有备注不拉群!
    拉你进AI蜗牛车交流群
    
    
    
    
    
    更多相关内容
  • 时间序列预测方法最全总结!

    万次阅读 多人点赞 2021-03-12 00:15:38
    时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等,具有非常高的商业价值。需要明确一点的是,与回归分析预测模型...

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

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

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

    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工具包。提供预处理工具及若干种时间序列分类算法

    “整理不易,三连

    展开全文
  • 11种常见的时间序列预测方法

    千次阅读 2022-05-02 21:58:30
    11种常见的时间序列预测方法

    参考内容:4大类11种常见的时间序列预测方法总结和代码示例

    代码地址:
    https://github.com/SeafyLiang/machine_learning_study/blob/master/time_series

    本篇文章将总结时间序列预测方法,并将所有方法分类介绍并提供相应的python代码示例,以下是本文将要介绍的方法列表:

    1、使用平滑技术进行时间序列预测

    • 指数平滑
    • Holt-Winters 法

    2、单变量时间序列预测

    • 自回归 (AR)
    • 移动平均模型 (MA)
    • 自回归滑动平均模型 (ARMA)
    • 差分整合移动平均自回归模型 (ARIMA)
    • 季节性 ARIMA (SARIMA)

    3、外生变量的时间序列预测

    • 包含外生变量的SARIMAX (SARIMAX)
    • 具有外生回归量的向量自回归移动平均 (VARMAX)

    4、多元时间序列预测

    • 向量自回归 (VAR)
    • 向量自回归移动平均 (VARMA)

    下面我们对上面的方法一一进行介绍,并给出python的代码示例
    在这里插入图片描述

    1、指数平滑Exponential Smoothing

    指数平滑法是过去观测值的加权平均值,随着观测值变老,权重呈指数会衰减。换句话说,观察时间越近相关权重就越高。它可以快速生成可靠的预测,并且适用于广泛的时间序列。
    简单指数平滑:此方法适用于预测没有明确趋势或季节性模式的单变量时间序列数据。简单指数平滑法将下一个时间步建模为先前时间步的观测值的指数加权线性函数。
    它需要一个称为 alpha (a) 的参数,也称为平滑因子或平滑系数,它控制先前时间步长的观测值的影响呈指数衰减的速率,即控制权重减小的速率。a 通常设置为 0 和 1 之间的值。较大的值意味着模型主要关注最近的过去观察,而较小的值意味着在进行预测时会考虑更多的历史。简单指数平滑时间序列的简单数学解释如下所示:
    在这里插入图片描述

    # SES
    from statsmodels.tsa.holtwinters import SimpleExpSmoothing
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = SimpleExpSmoothing(data)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    2、Holt-Winters 法

    在 1957 年初,Holt扩展了简单的指数平滑法,使它可以预测具有趋势的数据。这种被称为 Holt 线性趋势的方法包括一个预测方程和两个平滑方程(一个用于水平,一个用于趋势)以及相应的平滑参数 α 和 β。后来为了避免趋势模式无限重复,引入了阻尼趋势法,当需要预测许多序列时,它被证明是非常成功和最受欢迎的单个方法。除了两个平滑参数之外,它还包括一个称为阻尼参数 φ 的附加参数。
    一旦能够捕捉到趋势,Holt-Winters 法扩展了传统的Holt法来捕捉季节性。Holt-Winters 的季节性方法包括预测方程和三个平滑方程——一个用于水平,一个用于趋势,一个用于季节性分量,并具有相应的平滑参数 α、β 和 γ。
    此方法有两种变体,它们在季节性成分的性质上有所不同。当季节变化在整个系列中大致恒定时,首选加法方法,而当季节变化与系列水平成比例变化时,首选乘法方法。

    # HWES
    from statsmodels.tsa.holtwinters import ExponentialSmoothing
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ExponentialSmoothing(data)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    3、自回归 (AR)

    在 AR 模型中,我们使用变量过去值的线性组合来预测感兴趣的变量。术语自回归表明它是变量对自身的回归。AR模型的简单数学表示如下:
    在这里插入图片描述

    这里,εt 是白噪声。这类似于多元回归,但是使用 yt 的滞后值作为预测变量。我们将其称为 AR§ 模型,即 p 阶的自回归模型。

    #AR
    from statsmodels.tsa.ar_model import AutoReg
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = AutoReg(data, lags=1)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    4、移动平均模型(MA)

    与在回归中使用预测变量的过去值的 AR 模型不同,MA 模型在类似回归的模型中关注过去的预测误差或残差。MA模型的简单数学表示如下:
    在这里插入图片描述

    这里,εt 是白噪声。我们将其称为 MA(q) 模型,即 q 阶移动平均模型。

    # MA
    from statsmodels.tsa.arima.model import ARIMA
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ARIMA(data, order=(0, 0, 1))
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    需要说明的是不应将这里说的移动平均线方法与计算时间序列的移动平均线混淆,因为两者是不同的概念。

    5、自回归滑动平均模型 (ARMA)

    在 AR 模型中,我们使用变量过去值与过去预测误差或残差的线性组合来预测感兴趣的变量。它结合了自回归 (AR) 和移动平均 (MA) 模型。
    AR 部分涉及对变量自身的滞后(即过去)值进行回归。MA部分涉及将误差项建模为在过去不同时间同时发生的误差项的线性组合。模型的符号涉及将 AR§ 和 MA(q) 模型的顺序指定为 ARMA 函数的参数,例如 ARMA(p,q)。ARMA 模型的简单数学表示如下所示:
    在这里插入图片描述

    # ARMA 
    from statsmodels.tsa.arima.model import ARIMA
    from random import random
    # contrived dataset
    data = [random() for x in range(1, 100)]
    # fit model
    model = ARIMA(data, order=(2, 0, 1))
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    6、差分整合移动平均自回归模型 (ARIMA)

    如果我们将差分与自回归和移动平均模型相结合,我们将获得 ARIMA 模型。ARIMA 是差分整合移动平均自回归模型Autoregressive Integrated Moving Average model 的首字母缩写。它结合了自回归 (AR) 和移动平均模型 (MA) 以及为了使序列平稳而对序列的差分预处理过程,这个过程称为积分(I)。ARIMA 模型的简单数学表示如下:
    在这里插入图片描述

    其中 y′t 是差分级数。右侧的“预测变量”包括滞后值和滞后误差。我们称之为 ARIMA(p,d,q) 模型。

    这里,p 是自回归部分的阶数,d 是所涉及的一阶差分程度,q 是移动平均部分的阶数。
    ACF 和 PACF 图在求 p 和 q 阶中的意义:

    • 为了找到 AR§ 模型的阶 p:我们预计 ACF 图会逐渐减小,同时 PACF 在 p 显著滞后后会急剧下降或切断。
    • 为了找到 MA(q) 模型的阶 p:我们预计 PACF 图将逐渐减小,同时 ACF 应该在某些 q 显著滞后后急剧下降或切断。
    # ARIMA 
    from statsmodels.tsa.arima.model import ARIMA
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = ARIMA(data, order=(1, 1, 1))
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.predict(len(data), len(data), typ='levels')
    print(yhat)
    

    7、季节性 ARIMA (SARIMA)

    ARIMA 模型还能够对广泛的季节性数据进行建模。季节性 ARIMA 模型是通过在 ARIMA 模型中包含额外的季节性项来形成的。
    在这里插入图片描述

    这里,m = 每个时间季节的步数。我们对模型的季节性部分使用大写符号,对模型的非季节性部分使用小写符号。

    它将 ARIMA 模型与在季节性数据级别执行相同的自回归、差分和移动平均建模的能力相结合。

    # SARIMA 
    from statsmodels.tsa.statespace.sarimax import SARIMAX
    from random import random
    # contrived dataset
    data = [x + random() for x in range(1, 100)]
    # fit model
    model = SARIMAX(data, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.predict(len(data), len(data))
    print(yhat)
    

    8、包含外生变量的SARIMA (SARIMAX)

    SARIMAX 模型是传统 SARIMA 模型的扩展,包括外生变量的建模,是Seasonal Autoregressive Integrated Moving-Average with Exogenous Regressors 的缩写
    外生变量是其值在模型之外确定并施加在模型上的变量。它们也被称为协变量。外生变量的观测值在每个时间步直接包含在模型中,并且与主要内生序列的使用不同的建模方式。
    SARIMAX 方法也可用于通过包含外生变量来模拟具有外生变量的其他变化,例如 ARX、MAX、ARMAX 和 ARIMAX。

    # SARIMAX 
    from statsmodels.tsa.statespace.sarimax import SARIMAX
    from random import random
    # contrived dataset
    data1 = [x + random() for x in range(1, 100)]
    data2 = [x + random() for x in range(101, 200)]
    # fit model
    model = SARIMAX(data1, exog=data2, order=(1, 1, 1), seasonal_order=(0, 0, 0, 0))
    model_fit = model.fit(disp=False)
    # make prediction
    exog2 = [200 + random()]
    yhat = model_fit.predict(len(data1), len(data1), exog=[exog2])
    print(yhat)
    

    9、向量自回归 (VAR)

    VAR 模型是单变量自回归模型的推广,用于预测时间序列向量或多个并行时间序列,例如 多元时间序列。它是关于系统中每个变量的一个方程。
    如果序列是平稳的,可以通过将 VAR 直接拟合到数据来预测它们(称为“VAR in levels”)。如果序列是非平稳的,我们会取数据的差异以使其平稳,然后拟合 VAR 模型(称为“VAR in differences”)。
    我们将其称为 VAR§ 模型,即 p 阶向量自回归模型。

    # VAR 
    from statsmodels.tsa.vector_ar.var_model import VAR
    from random import random
    # contrived dataset with dependency
    data = list()
    for i in range(100):
      v1 = i + random()
      v2 = v1 + random()
      row = [v1, v2]
      data.append(row)
    # fit model
    model = VAR(data)
    model_fit = model.fit()
    # make prediction
    yhat = model_fit.forecast(model_fit.y, steps=1)
    print(yhat)
    

    10、向量自回归滑动平均模型 (VARMA)

    VARMA 方法是 ARMA 对多个并行时间序列的推广,例如 多元时间序列。具有有限阶 MA 误差项的有限阶 VAR 过程称为 VARMA。
    模型的公式将 AR§ 和 MA(q) 模型的阶数指定为 VARMA 函数的参数,例如 VARMA(p,q)。VARMA 模型也可用于VAR 或 VMA 模型。

    # VARMA 
    from statsmodels.tsa.statespace.varmax import VARMAX
    from random import random
    # contrived dataset with dependency
    data = list()
    for i in range(100):
      v1 = random()
      v2 = v1 + random()
      row = [v1, v2]
      data.append(row)
    # fit model
    model = VARMAX(data, order=(1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    yhat = model_fit.forecast()
    print(yhat)
    

    11、包含外生变量的向量自回归滑动平均模型 (VARMAX)

    Vector Autoregression Moving-Average with Exogenous Regressors (VARMAX) 是 VARMA 模型的扩展,模型中还包含使用外生变量的建模。它是 ARMAX 方法对多个并行时间序列的推广,即 ARMAX 方法的多变量版本。
    VARMAX 方法也可用于对包含外生变量的包含模型进行建模,例如 VARX 和 VMAX。

    # VARMAX 
    from statsmodels.tsa.statespace.varmax import VARMAX
    from random import random
    # contrived dataset with dependency
    data = list()
    for i in range(100):
      v1 = random()
      v2 = v1 + random()
      row = [v1, v2]
      data.append(row)
    data_exog = [x + random() for x in range(100)]
    # fit model
    model = VARMAX(data, exog=data_exog, order=(1, 1))
    model_fit = model.fit(disp=False)
    # make prediction
    data_exog2 = [[100]]
    yhat = model_fit.forecast(exog=data_exog2)
    print(yhat)
    

    总结

    在这篇文章中,基本上覆盖了所有主要时间序列预测的问题。我们可以把上面提到的方法整理成以下几个重要的方向:

    • AR:自回归
    • MA:平均移动
    • I:差分整合
    • S:季节性
    • V:向量(多维输入)
    • X:外生变量

    本文中提到的每种算法基本上都是这几种方法的组合,本文中已将每种的算法都进行了重点的描述和代码的演示,如果你想深入了解其中的知识请查看相关的论文。

    展开全文
  • 时间序列时间序列数据的缺失填补方法总结

    万次阅读 多人点赞 2021-05-21 00:16:01
    线性插补的方法包括一元线性回归,多元线性回归,岭回归等,有关方法可以参考之前的文章:《TS技术课堂 | 时间序列回归》 季节性+线性插值 经济数据或者季节波动数据,常常不符合简单的线性变化强假设。对这样的数据...

    在前几次分享中我们知道,很多时序算法都依赖完整的时序数据进行建模,许多业务也需要数据保持完整性,以更好地进行可视化与分析。然而在真实场景中,由于采集能力或网络传输的原因,时序数据常常会有缺失、断点的情况。如何处理这些有缺失的时间序列呢?

    图 | 两种不同类型的时序数据缺失

    有关时间序列的补缺工作大体上分为:删除填充这两类。删除所考虑的不是进行填补,而是将缺失值作为特征之一输入到时序模型,例如异常检测,行为分析等;而填充是找到时序变化的规律,将值补充进去,分为统计方式填充机器学习填充两种方式。

    本文就上面时序补缺的两大类方向整理相关工作,供大家阅读。

    01

    缺失数据删除

    最直接的缺失数据处理的方式,就是直接忽略这些缺失值,简称为直接删除法,该方法常用在离散型的时间序列处理中,比如用户购物行为序列,事件序列等,这类序列数据没有固定的采集间隔,一般会把数据点之间的间隔时间作为特征进行分析。

    图 | 融入时间间隔信息的LSTM: TLSTM[1] (KDD 2017)

    比如上图所展示了TLSTM模型,来自KDD 2017年的工作,其将数据之间的间隔作为特征进行输入。TLSTM中专门设计了一种新的门结构对这种间隔信息进行加权聚合。

    当然,该类方法可能会舍弃数据中的一些重要信息,在监控/IoT/风控等这种稳定性要求高的业务中,不能适用,因为每个数据点所代表的信息都很重要。

    02

    缺失数据填补

    将缺失的数据删除一般只适用于少部分对数据完整度要求不高的场景,大部分场景(例如监控、安全等)需要我们尽可能将缺失的数据填充。数据填充需要我们找到时间序列一定的变化规律,从而将值补充进去。这里与时间序列的预测有一点相似,不同的是,时间序列预测中我们看不到所要预测点后面的数据,而时序补缺中,我们可以分析缺失点前后的数据,从而更精准的对缺失数据进行填充。

    数据填充基本分为统计方式填充机器学习填充两种方式。

    统计方式填充

    a

    基于统计学的填充方法是时间序列补缺中常用的方法,其计算复杂度低,易操作,在许多精度要求不高的业务场景中比较适用。

    就近填充

    就近填充包括:前推法LOCF,用缺失之前的最后一次观测值填补;与后推法NOCB, 使用缺失值后面的观测值进行填补。这个方法是时序当中最基本的方法。

    特征值填充

    特征值填充包括:均值、中值、常用值等。这类方法计算快,进行简单的统计即可实现数据的填补。其一般直接忽略数据的时序信息假定时序数据里面基本没有很强趋势性。

    线性插值

    这个方法历史悠久。其假定时序之间变动有很强的趋势,通过拟合数据的趋势变化,进而进行填补。早期天文学缺失数据都用这个方法。线性插补的方法包括一元线性回归,多元线性回归,岭回归等,有关方法可以参考之前的文章:《TS技术课堂 | 时间序列回归》

    季节性+线性插值

    经济数据或者季节波动数据,常常不符合简单的线性变化强假设。对这样的数据进行补缺,一般的线性插值法效果比较差。这里需要模型同时捕捉时序数据的季节性和总体趋势性,进而对数据的演变模式更好的拟合,实现缺失值数据的补充。

    除了这些统计方法, 一般来说每个领域里面缺失值的填补还要借鉴专业知识来判断。比如以国家军费缺失数据为例,如果你知道因为战乱带来的缺失。那么战时数据比和平年代数据就更合适,很简单就近填补。

    机器学习填充

    b

    随着计算能力的大幅提升,现今许多的场景下的时间序列补缺都采用了机器学习的方式,常见的方法包括基于最近邻方法(KNN),循环神经网络(RNN),随机森林和矩阵分解的缺失值填充算法。

    有监督数据填充

    这类的方法的本质是以缺失点附近的数据作为特征,预测缺失点的数据,通过海量的历史数据中挖掘相似的变化模型,从而进行更精准的数据填充。包括:

    • KNN:找到缺失点附近数据最相似的若干个历史数据点,对缺失值进行填补

    • RNN:通过循环神经网络拟合时序数据的变化趋势,对缺失数据进行填补。这里一般多使用双向RNN

    • 随机森林:这里以缺失点附近的数据作为特征,缺失数据作为要预测的值,在海量数据中训练一个高拟合随机树,对缺失点进行预测。

    • 时序生成:近些年随着生成对抗网络(GAN)的兴起,许多方法开始尝试做时间序列的生成,通过生成模型捕捉时间序列的分布特征,对时序数据进行再生成,进而填补数据。

    多值插补

    多值插补是近些年兴起的时序数据补缺方法,其主要应用于包括时空数据在内的多维时间序列问题。其补全数据不仅只关注自身的时序演变,同时关注相邻时序,特别是有影响关系的时序指标之间的影响。例如在交通中,某一路段的交通量与其上游、下游路段的交通量直接相关。这类方法依赖于缺失数据不同属性间关系,寻找最类似样本,对于突发情况下的数据丢失,异常数据点(离群点)的补全有更好的适应性。

    • 矩阵分解:不同的时间序列之间往往相互关联,通过矩阵分解等方法学习时序矩阵的整体特征,对时间特性矩阵进行低秩逼近,从而修补缺失数据。该类方法计算复杂度低 , 可以处理较大规模的数据。

    图 | 时序正则化矩阵分解: TRMF[2](NeurIPS 2016)

    • 组合分析:不同学科的数据补缺可能都有默认或者建议的方法,比如社会学或者人口学对于无应答的问卷数据,就是假定用类似用户数据进行填补。很多的场景下的数据填补需要给出填补数据的合理性。面对这样的情况,矩阵分解这类方法难以给出直观的解释。因此,近年来一些方法考虑分析多源时序数据实体之间的外在属性,构建可解释的关联关系,组合多源时序及其关系进行数据的填补。

    图 | 基于社群关系的电力系统时间序列补缺[3](WWW 2019)

    上图所示的WWW 2019的工作,其基于用户的邻里关系,关联不同用户的用电数据,对缺失的数据进行填补。

    03

    开源工具

    开源社区有许多优秀的项目可以帮助我们对缺失数据进行补全。这里简单为大家列举若干热门的项目:

    • https://sklearn.org/modules/generated/sklearn.preprocessing.Imputer.html

    Sklearn实现了多种基于统计方法的缺失数据补全算法

    • https://github.com/amices/mice

    该仓库实现了基于链式方程法的多维时序补缺算法

    • https://github.com/stekhoven/missForest

    该仓库实现了基于随机森林的一种非参数混合类型补缺算法

    • https://github.com/cran/softImpute

    该仓库实现了通过迭代软阈值SVD的完成矩阵进行补缺的算法

    • https://github.com/zjunet/STI

    该仓库实现了基于社群关系进行多源时间序列补缺的算法

    • https://github.com/xinychen/transdim

    该仓库实现了当前主流的基于矩阵分解的时间序列缺失值填充算法和预测算法

    • ...

    04

    总结

    时间序列数据的补缺有很多不同的方法。在进行补缺之前,第一步需要我们对缺失的性质做出判断:如果是Missing at Random还是Missing Not at Random,一般前者删除,后者填充。但是填充不一定能带来更好结果,要先自己根据缺失比例和原因进行判断。

    再者,如果你对数据生成机制很熟悉的情况下,可能一些简单方法就可以实现很好的数据补缺。对于本身纯粹依赖算法,不能给出解释机制的时间序列补缺是不能完全信服的,因为缺失本身表明这些样本信息不足。这里常常需要增加专业知识的判断,因为专业知识判断就相当于额外增补信息。

    参考

    [1] Inci M. Baytas, Cao Xiao, Xi Zhang, Fei Wang, Anil K. Jain, and Jiayu Zhou. Patient Subtyping via Time-Aware LSTM Networks. KDD 2017.

    [2] Yu, H. F., Rao, N., & Dhillon, I. S.Temporal regularized matrix factorization for high-dimensional time series prediction. NeurIPS 2016.

    [3] Zongtao, L; Yang, Y; Wei, H; Zhongyi, T; Ning, L and Fei, W. How Do Your Neighbors Disclose Your Information: Social-Aware Time Series Imputation. WWW 2019

    END

    公众号:AI蜗牛车

    保持谦逊、保持自律、保持进步

    个人微信

    备注:昵称+学校/公司+方向

    如果没有备注不拉群!

    拉你进AI蜗牛车交流群

    展开全文
  • 时间序列时间序列分析基本方法和实例

    万次阅读 多人点赞 2020-04-28 18:00:36
    目录1 数据相关2 时间序列中的模型(Patterns)3 如何分解时间序列中的各个成分4 平稳与不平稳时间序列4.1 这些数据有什么明显的特点?4.2 为什么要在预测前把序列变成平稳的?4.3 如何对平稳性进行测试4.4 白噪音和...
  • 时间序列预测分析方法(一):相关分析

    万次阅读 多人点赞 2019-06-18 14:35:11
    针对特定的预测问题,只是拥有数据还不够,想要从纷繁复杂的数据关系中挖掘出可用于预测的规律或模式,还得运用恰当的分析方法。比如聚类分析,恰当地选择聚类算法,可以按维度将数据适当地分群,根据各类的特征制订...
  • 异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于现实世界的很多领域,例如量化...
  • 时间序列分析之相关性

    万次阅读 多人点赞 2019-02-20 17:27:27
    两种时间序列的相关性 方差 (Variance) 设随机变量X的均值 E(X) = m,则描述 X 的取值和它的均值 m 之间的偏差程度大小的数字特征就是方差。 但是不能直接用 E(X - m) 来表示方差,因为 E...
  • 时间序列分析

    千次阅读 2018-10-29 21:15:51
    时间序列 时间序列(简称为时序)是指...时间序列分析是一种动态数据处理的统计方法。该方法基于随机过程理论和数理统计学方法,研究随机数据序列所遵从的统计变化规律,以用于解决实际问题。通常影响时间序列变化的...
  • 机器学习——时间序列预测方法

    千次阅读 2022-05-05 10:50:52
    目录 传统时序建模 自回归模型(Autoregressive model,简称AR) 移动平均模型(Moving Average model,简称MA ) ...机器学习模型方法 深度学习模型方法 传统时序建模 自回归模型(Autoregressi...
  • 时间序列预测的8种常用方法简介

    万次阅读 2020-12-08 22:01:17
    时间序列预测8种常用方法简介,包括朴素预测法、简单平均法、移动平均法、简单指数平滑法、霍尔特(Holt)线性趋势法、Holt-Winter方法、AMRIA。
  • 时序预测 | MATLAB实现时间序列回归之评估模型残差及相关分析
  • 时间序列预测方法总结

    千次阅读 2020-10-18 15:14:52
    这本来是我回答的一个问题:有什么好的模型可以做高精度的时间序列预测呢? - BINGO Hong的回答 - 知乎 https://www.zhihu.com/question/21229371/answer/533770345 但觉得在那个答案下一直更新好麻烦,干脆就移到...
  • 随着时间推移,制造设备比如贴片机的位置由于各种原因会产生小的偏差。这些偏差可能是阶跃,也有可能是渐变的形式。由于偏差值很小,产线的自动光学检测设备并不会报警;然而小的偏差如果不经处理,经过一定时间累积...
  • 时间序列异常检测

    千次阅读 2021-01-07 09:37:14
    异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于现实世界的很多领域,例如量化交易,网络安全检测、自动驾驶...
  • 【数据分析】基于时间序列的预测方法

    千次阅读 多人点赞 2021-01-13 14:59:40
    时间序列预测 1.时间序列介绍 时间序列(Time Series,TS)是数据科学中比较有意思的一个领域。顾名思义,TS是按固定时间间隔收集的数据点的集合。对这些数据进行分析以确定长期趋势,以便预测未来或执行其他形式的...
  • 背景任何事物在两个不同时刻都不可能保持完全相同的状态,但很多变化往往存在着一定的规律,例如 24 小时日出日落,潮起潮落,这些现象通常称为「周期」。周期性,指时间序列中呈现出来的围绕长期趋...
  • 时间序列 插值代码实现

    千次阅读 2021-06-17 16:09:53
    文章目录先来看一下需求直接上代码,需要的自行修改首先需要获取断开的...有一个时间序列数据,例如如下: x = ['2021-05-10', '2021-05-11', '2021-05-12', '2021-05-13', '2021-05-16'] y = [3.4783, 1.25, 1.1111, 1
  • Python时间序列分析指南!

    千次阅读 2021-08-01 00:17:54
    Datawhale干货译者:陈超,北京大学,数据派THU 本文约7500字,建议阅读20+分钟本文介绍了时间序列的定义、特征并结合实例给出了时间序列在Python中评价指标和方法。...
  • 严平稳序列虽然名称上平稳,但并不是平稳序列的子集,它描述了另一种平稳性——平移不变性。当宽平稳序列加上正态约束后,就成为严平稳序列;严平稳序列加上二阶矩约束后吗,就成为宽平稳序列
  • Triple exponential smoothing3、平稳性以及时间序列建模SARIMA模型4、时间序列的(非)线性模型时间序列的滞后值使用线性回归XGBoost5、一些疑惑以及技术选型6、文章参考7、代码附录传统模型法机器学习的方法线性...
  • 时间序列分析实验报告

    千次阅读 2020-12-19 05:31:34
    时间序列分析实验报告 基于matlab的时间序列分析在实际问题中的应用 时间序列分析(Time series analysis)是一种动态数据处理的统计方法。该方法基于随机过程理论和数理统计学方法,研究随机数据序列所遵从的统计规律...
  • 时间序列分析预测

    千次阅读 2020-04-09 22:52:15
    时间序列中常用预测技术,一个时间序列是一组对于某一变量连续时间点或连续时段上的观测值。参考:https://blog.csdn.net/u010414589/article/details/49622625 1. 移动平均法 (MA) 1.1. 简单移动平均法 设有一...
  • 这篇博客主要记录人大出版《应用时间序列分析》第一章的笔记。 时间序列数据 数据类型 数据分析中的数据大致分为三类:时间序列数据、横截面数据、面板数据。下面分别介绍这三类数据。 时间序列数据:在不同时间...
  • 干货 :时间序列特征工程

    千次阅读 2020-12-16 08:37:45
    前几次的分享,我们了解了时间序列分析的基础方法以及预测方法。在使用这些方法之前,一般需要我们对原始时序做一定的处理,抽取若干特征;再者,为了更充分了解时间序列,我们也需要挖掘时间序列的特...
  • 干货 :时间序列异常检测

    千次阅读 2021-02-03 03:52:47
    原标题:干货 :时间序列异常检测异常检测(Anomaly detection)是目前时序数据分析最成熟的应用之一,定义是从正常的时间序列中识别不正常的事件或行为的过程。有效的异常检测被广泛用于现实世界的很多领域,例如量化...
  • 时间序列

    千次阅读 2018-09-02 00:33:43
    时间序列进行观察、研究、找寻他发展变化的规律,预测他将来的走势就是时间序列分析,时间序列分析方法只适用于近期与短期的预测。 相关特征统计量: 均值函数序列:反映的是时间序列每时每刻的平均水平 方差...
  • 时间序列建模流程

    千次阅读 2020-07-18 17:31:08
    时间序列建模流程时间序列的建模分析流程时间序列可视化序列平稳严平稳、平稳的区别差分法处理非平稳数据模型自回归模型(AR)移动平均模型(MA)自回归平均模型(ARMA)差分自回归移动平均模型(ARIMA)通过ACF/...
  • 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小...
  • 时间序列分析笔记(待整理)

    万次阅读 多人点赞 2018-04-25 17:29:19
    时间序列有三种基本模式:平稳性 / 随机性(Stationarity):当数据没有明显的模式特征的话,我们认为它是平稳的,Y值在一个范围内随着时间上下浮动。趋势性(Trend):当Y值在一段时间内随着时间有明显的向上或者向下的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 34,873
精华内容 13,949
关键字:

判断时间序列线性相关的方法

友情链接: moni-PID-kongzhi.rar