写点什么

周期性时间序列的预测

  • 2019-11-21
  • 本文字数:1137 字

    阅读完需:约 4 分钟

周期性时间序列的预测

AIOps 从立项到现在已经半年有余,从最开始的 LVS 异常检测,到如今的实时关联分析,智能运维已经渗透到我们日常运维中的许多场景,之后我们会将积累的经验分享出来,供大家学习参考,本文最先发布于 OpsDev,转载已获取作者授权。


最近在研究时间序列的时候,发现很多序列具有很强的周期性,那如何对此类序列进行预测呢?

1 数据处理

挑选一个如下图的具有周期性的时间序列。该序列是取得是过去 7 天的数据,每小时一个点,一共 7*24 个点。


2 划分数据集

我们取前六天的数据做训练,第七天做测试集。

3 平滑处理

时间序列经常会出现毛刺的点,需要做平滑处理才能分析,类似上图中的数据。消除数据的毛刺,可以用移动平均法,但是移动平均有时候处理完后并不能使数据平滑,我这里采用的方法很简单,但效果还不错:把每个点与上一点的变化值作为一个新的序列,对这里边的异常值,也就是变化比较离谱的值剃掉,用前后数据的均值填充:



经过处理以后,上图的时间序列得到了平滑处理,效果如下图。


4 周期性分解

具有周期性特征的序列需要将周期性特征提取出来。python 里面的 statsmodels 工具包里面有针对周期性分解的函数 seasonal_decompose,我们可以将序列进行分解。seasonal_decompose 这个函数里面有个 two_sided 的参数,默认是 True。Trend 处理的时候用到移动平均的方法,熟悉此方法的读者就会发现,经过该方法处理以后,序列收尾两段有一部分数据缺失了,但是如果该参数为 FALSE,则只有开始的时候有一段缺失值。




图 3 中的第一张图是 observed,体现的原始数据;第二张是 trend,体现的是分解出来的趋势部分;第三张是 seasonal,体现的是周期部分;最后是 residual,体现的是残差部分。


本文采用的是 seasonal_decompose 的加法模型进行的分解,即 observed = trend + seasonal + residual,另还有乘法模型。在建模的时候,只针对 trend 部分学习和预测,如何将 trend 的预测结果加工成合理的最终结果?后面会有介绍。

5 预测

我们对 trend 部分进行预测,最后再加上 seasonal 部分。对 trend 的预测,我们采用 ARIMA 模型。熟悉该模型的都知道,需要确定三个参数 p,q 和 d,可以使用 aic 和 bic 的方法进行定阶,可以查阅相关的文献。



得到模型以后,就可以进行预测。



下面是预测的结果,从图中可以看到预测的结果将周期性的特征完美地体现出来了。


6 评估

对第七天作出预测,评估的指标为均方根误差 rmse,本序列的 rmse 小于 5,效果还是不错的。

7 总结

本文介绍了周期性序列的预测方法,你可能会问并不是所有的序列都具有周期性,事实确实如此,接下来几篇博客,我会重点介绍周期性检测的一些方法。希望此博客对您研究时间序列有所帮助。


本文转载自公众号 360 云计算(ID:hulktalk)。


原文链接:


https://mp.weixin.qq.com/s/yJEmY2ZFF0mVlRHmizO2Zg


2019-11-21 15:442794

评论

发布
暂无评论
发现更多内容

适配PyTorch FX,OneFlow让量化感知训练更简单

OneFlow

人工智能 深度学习

前端开发框架React技术如何与小程序结合,进行页面构建

兴科Sinco

小程序 taro 前端开发 前端框架 React Native

模块八作业

张贺

架构训练营

CleanMyMac X4.20免费版Mac系统垃圾清理工具

茶色酒

CleanMyMac X

金融交易行为监测方法——利用 CNN 模型实现行为识别

亚马逊云科技 (Amazon Web Services)

数字图像处理Matlab函数全汇总

timerring

图像处理

微服务为什么要用到 API 网关?

API7.ai 技术团队

实践,制作一个高扩展、可视化低代码前端,详实、完整

悠闲的水

前端 低代码 前端框架 低代码开发 低代码平台

原因码与ACK--MQTT 5.0新特性

EMQ映云科技

物联网 IoT mqtt 企业号 3 月 PK 榜 原因码

链上双币拆分理财dapp系统开发功能逻辑分析(智能合约编写)

开发v-hkkf5566

openEuler加入RISC-V Landscape

openEuler

Linux 操作系统 openEuler risc-v

【3.3-3.10】写作社区优秀技术博文一览

InfoQ写作社区官方

热门活动 优质创作周报

浦发银行与易观千帆签约合作

易观分析

金融 银行 经济

ListView Item多布局的实现

芯动大师

ListView item QQ界面

周六直播|StarRocks 参与数据湖架构峰会,揭秘最新湖仓分析新范式!

StarRocks

数据库 大数据

【深度挖掘RocketMQ底层源码】「底层问题分析系列」深度挖掘RocketMQ底层那些导致消息丢失的汇总盘点透析([REJECTREQUEST]system busy, start flow control for a while)

洛神灬殇

RocketMQ OOM 消息队列 3月日更

API 网关日志的价值,你了解多少?

API7.ai 技术团队

OpenAI竞争对手Anthropic融资:1融资易估值难2背后谷歌云3侧重安全

B Impact

直播回顾|聚焦科技自立自强,Bonree ONE 助力国产办公自动化平稳替代

博睿数据

可观测性 智能运维 博睿数据 信创生态 直播回顾

两会聚焦|智能制造的“加速时刻”来了

硬科技星球

高效基于scrum的项目管理工具分享

顿顿顿

Scrum 敏捷开发 项目管理工具 项目管理软件、 leangoo

AI for Good | 从女性力量,到AI公平

澳鹏Appen

人工智能

从 1 秒到 10 毫秒!在 APISIX 中减少 Prometheus 请求阻塞

API7.ai 技术团队

彻底搞懂贝叶斯的本质

侠之大者

机器学习 贝叶斯公式 概率论

PyTorch深度学习实战 | 计算机视觉

TiAmo

深度学习 计算机视觉

电商平台的商品价格管理的产品设计

产品海豚湾

产品设计 SaaS 商品管理 电商 产品分析

Swift 里 的 Struct 和 Class

刿刀

研发提效利器:聊聊mock服务化

老张

Mockito 服务化 Mock

工厂模式进阶用法,如何动态选择对象?

JAVA旭阳

Java 设计模式

周期性时间序列的预测_文化 & 方法_OpsDev - 籍鑫璞_InfoQ精选文章