时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征。这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。首先需要明确一点的是,时间序列可以分为平稳序列,即存在某种周期,季节性及趋势的方差和均值不随时间变化的序列,及非平稳序列。

1.传统时序建模方法

传统预测方法可以分为两种,一种是更加传统的,如移动平均法,指数平均法等;一种是用的还算较多的,即AR,MA,ARMA等,下面主要介绍一下这三种方法,这类方法比较适用于小规模,单变量的预测,比如某门店的销量预测等:

(1)AR模型

具有如下结构的模型称为p阶自回归模型,简记为AR(p):

随机变量Xt的取值Xt是前p期xt−1,xt−2,...,xt−pxt−1,xt−2,...,xt−p的多元线性回归,认为xt主 要受过去p期的序列值影响。误差项是当前的随机干扰εt,为零均值白噪声序列。

(2)MA模型

具有如下结构的模型称为q阶自回归模型,简记为MA(q):

即在t时刻的随机变量Xt的取值Xt是前q期的随机扰动εt-1,εt−2,...,εt−qεt−1,εt−2,...,εt−q的多元线性函数。误差项是当期的随机干扰εt,为零均值白噪声序列,μ是序列{Xt}的均值。认为xt主要受过去q期的误差项影响。

(3)ARMA模型

ARMA模型是最常用的平稳序列拟合模型,随机变量Xt的取值xt不仅与以前p期的序列值有 关还与前q期的随机扰动有关。

这三种模型适用的情景也不同,具体的可以查阅一下。总的来说,基于此类方法的建模步骤是,首先需要对观测值序列进行平稳性检测,如果不平稳,则对其进行差分运算直到差分后的数据平稳;在数据平稳后则对其进行白噪声检验,白噪声是指零均值常方差的随机平稳序列;如果是平稳非白噪声序列就计算ACF(自相关系数)、PACF(偏自相关系数),进行ARMA等模型识别,对已识别好的模型,确定模型参数,最后应用预测并进行误差分析。

这类方法本人也几乎没用过,一般是统计或者金融出身的人用的比较多,如果要深入研究这块的话,对统计学或者随机过程知识的要求还是很高的。而在数据挖掘的场景中还是很少用的,比如有一个连锁门店的销售数据,要预测每个门店的未来销量,用这类方法的话就需要对每个门店都建立模型, 这样就很难操作了。

2.现代预测方法

这就指的是机器学习方法以及深度学习方法。

对于机器学习方法,xgboost,随机森林及SVM这些都是可以用的,也没有说哪个模型好用,需要看具体的场景及实验,总之就是看效果说话。那么,用数据挖掘的方法关键在于特征工程,跟其他挖掘任务不同的是,时间序列的特征工程会使用滑动窗口,即计算滑动窗口内的数据指标,如最小值,最大值,均值,方差等来作为新的特征。

对于深度学习方法,循环神经网络RNN用的最多也适合解决这类问题,但是,卷积神经网络CNN,及新出的空间卷积网络TCN都是可以尝试的。

3.一些需要注意的

实际场景中我们需要处理的时间序列往往会是没有趋势,非平稳的,但并不是说非平稳就一点都预测不了了。

(1) 概念漂移

所谓概念漂移,表示目标变量的统计特性随着时间的推移以不可预见的方式变化的现象,也就是每过一段时间序列的规律是会变化的。所以,在这种情况下,拿全部时间内的数据去训练,就相当于是增加了各种噪声,预测精度是会下降的。所以,一种解决办法是不断的取最新的一阶段内的数据来训练模型做预测。之前做过一个变压器油温预测的数据,实验了用全量数据,一年内的数据,半年,3个月,一个月的数据做训练,其后几天的数据做预测,发现一个月的效果是最好的。那么如果你要问我,怎么判断一个序列是否存在概念漂移,我会告诉你,我也不知道,做实验吧!(有相关论文可以查阅一下)

(2)序列的自相关性

做过时间序列的朋友可能常常会有这样的感受,用了某种算法做出来的测试集的平均绝对误差率或者r2系数都很好,但是把测试集的真实值及预测值画出来对比一下,就会发现t时刻的预测值往往是t-1时刻的真实值,也就是模型倾向于把上一时刻的真实值作为下一时刻的预测值,导致两条曲线存在滞后性,也就是真实值曲线滞后于预测值曲线,就像下图右边所显示的那样。之所以会这样,是因为序列存在自相关性,如一阶自相关指的是当前时刻的值与其自身前一时刻值之间的相关性。因此,如果一个序列存在一阶自相关,模型学到的就是一阶相关性。而消除自相关性的办法就是进行差分运算,也就是我们可以将当前时刻与前一时刻的差值作为我们的回归目标。但是,在其他任务进行特征选择的时候,我们是会把目标变量相关性低的特征去掉,留下相关性强的特征。

还有一点需要注意的是,单纯使用平均绝对误差率或者r2系数容易误导,因为即使指标效果很好,但是很有可能这个模型也是没有用的。一种做法是可以计算一个基准值,即如果全部预测值都采用上一时刻的真实值,这时候的平均绝对误差率或者r2系数是多少,如果你以后加了其他特征,依然没办法超过这个基准值或者提升不大,那就放弃吧,这个时间序列可能已经没办法预测了。

(3)训练集和测试集的划分

在时间序列任务上,如果还跟其他任务一样随机划分训练集和测试集那就是甩流氓。随机划分的测试集,跟训练集的分布会是很接近的,效果肯定比一刀切的方法更好。因此,一般是选取某个时间节点之前作为训练集,节点之后作为测试集。比如有2012-2015年预测很多家店的未来的销量,那训练集可以是每家店2012-2014的数据,测试集是每家店2015年的数据。

(4)时间序列分解

这段内容参考自这里。对于无明显周期和非平稳时序数据,直接预测难以达到满意效果,可以利用经验模式分解(empirical mode decomposition,EMD)和长短期记忆(long short-term memory, LSTM)的组合算法应用于时序预测。将时序数据通过EMD算法进行分解,然后将分解后的分量数据分别转化为三维数据样本。对归一化的分量数据和原始数据分别进行预测建模及其 重构。实验结果表明EMD-LSTM更能有效的表达出家庭短期负荷的时序关系,具有更高的预测精度。所谓经验模式分解,能使复杂信号分解为有限个本征模函数(Intrinsic Mode Function,简称IMF),所分解出来的各IMF分量包含了原信号的不同时间尺度的局部特征信号,可以达到降噪的目的。另外看到类似的做法还有小波变换,这一块比较涉及数字信号的知识了。

欢迎各位指出错误或提出建议!orz。

CNN做时间序列预测_关于时间序列预测的一些总结相关推荐

  1. 深度学习决策支持 时空预测_重工业的预测性维护和决策支持系统

    深度学习决策支持 时空预测 Digital transformation is one of the top priorities for industrial companies. The larg ...

  2. python时间序列指数平滑预测_时间序列分析预测实战之指数平滑法

    一.什么是时间序列分析? 在工作中,常常要对数据进行预测,确定业务未来的发展趋势,进而配置相关的营销策略.制定业务目标,由此引申出了一个重要的用数据预测未来的方法--时间序列分析,今天和大家分享就是实 ...

  3. 的garch预测_随机森林预测

    当涉及到预测数据(时间序列或其他类型的序列)时,人们会关注基本回归.ARIMA.ARMA.GARCH,甚至Prophet,但不排除使用随机森林来预测数据. 随机森林通常被认为是一种分类技术,但回归问题 ...

  4. 风电功率预测_人工智能在预测单机风电功率上的应用进展

    单机风电功率预测依据风机轮毂风速的历史数据预测风电功率.风速与功率的高比例关系使得电力调度系统对风电功率预测精度的要求较高,此外,风速具有间隙波动性和随机性,使得风速和风电功率序列呈现出很强的非线性. ...

  5. python灰色预测_灰色系统预测GM(1,1)模型

    预备知识 (1)灰色系统 白色系统是指系统内部特征是完全已知的:黑色系统是指系统内部信息完全未知的:而灰色系统是介于白色系统和黑色系统之间的一种系统,灰色系统其内部一部分信息已知,另一部分信息未知或不 ...

  6. 客户流失预测_如何不预测和防止客户流失

    客户流失预测 Customers are any business' bread and butter. Whether it is a B2B business model or B2C, ever ...

  7. 回归分析预测_使用回归分析预测心脏病。

    回归分析预测 As per the Centers for Disease Control and Prevention report, heart disease is the prime kill ...

  8. 基于python对天气的预测_使用机器学习预测天气(第一部分)

    概述 本章是使用机器学习预测天气系列教程的第一部分,使用Python和机器学习来构建模型,根据从Weather Underground收集的数据来预测天气温度.该教程将由三个不同的部分组成,涵盖的主题 ...

  9. python 比赛成绩预测_利用 Python 预测英雄联盟胜负,分析了 5 万多场比赛才得出的数据!值得,涨知识了!...

    Mika 来源 | 头图 |CSDN自东方IC今天教大家用Python预测英雄联盟比赛胜负. Show me data,用数据说话 今天我们聊一聊 Python预测LOL胜负 目前,英雄联盟S10全球 ...

最新文章

  1. VC6解决托盘菜单不消失
  2. KMP--字符串匹配
  3. NOIP2018提高组模拟题(六)
  4. 如何做好一个开源项目(一)
  5. oracle 经纬度算距离,根据经纬度诀别用java和Oracle存储过程计算两点距离
  6. poj 3331 关于阶乘运算
  7. Tomcat5.5中配置虚拟路径
  8. 无法打开包括文件: “type_traits”
  9. 0x0F转换成二进制
  10. mysql报错1194_MYSQL ERROR 1194 (HY000)
  11. QT 多线程异步获取htpp信息 网络通信
  12. 笔记本的网络出现红叉,网络连接不上,网络不可用
  13. 打印机管理系统解决方案
  14. 光学字符识别 OCR (Optical Character Recognition)是什么?
  15. 智能化推送服务MobPush产品简介
  16. [转]信息安全相关理论题(三)
  17. bootice添加linux引导,bootice怎么添加win10引导_网站服务器运行维护
  18. 02-Node.js基础(一)
  19. 少数者博弈 matlab,少数者博弈
  20. Vue3+Element-Plus 项目概述一

热门文章

  1. #456 不叁不肆:当婚姻只剩苟且,我选择带少年奔赴原野
  2. 第二十八讲:神州路由器地址转换的配置
  3. 有感~半导体技术之晶圆尺寸,450mm是否会来到
  4. html原生触发事件,jQ点击事件用原生写的方法.html
  5. 全景图如何拍摄制作?在室内场景应用有什么优势?
  6. 协会简介 - 中关村互联网金融行业协会
  7. android 讯飞语音 提示组件未安装,讯飞语音听写API 未安装组件 错误码21001
  8. Postmortem @ beta
  9. java验证网址正常打开_JSP 页面访问用户验证
  10. 厦门房地产网签备案的图片识别之一