写点什么

周期性时间序列的预测

  • 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:442870

评论

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

支持低代码开发和远程真机,DevEco Studio 2.2 Beta1来啦

科技汇

拥抱开放的英特尔 让PC行业再次越过创新鸿沟

E科讯

从零开始学习3D可视化之事件绑定

ThingJS数字孪生引擎

大前端 物联网 3D 3D可视化

Pandas高级教程之:category数据类型

程序那些事

Python 数据分析 pandas 程序那些事

华为云GaussDB持续技术创新,论文入选SIGMOD2021顶会

华为云数据库小助手

数据库 分布式 GaussDB 华为云数据库

maven安装与核心概念全面

IT视界

maven

提高项目管理效率,技术管理者该怎么做?

万事ONES

项目管理 技术管理 ONES

持续交付时代,Scrum中还有必要进行 Sprint Review 么?

万事ONES

项目管理 敏捷开发 持续交付 ONES

什么是ReadWriteMany?

焱融科技

Docker 容器 云原生 高性能 Kubernetes从入门到精通

腾讯云EMR基于YARN针对云原生容器化的优化与实践

腾讯云大数据

mapreduce

以贝叶斯之名寻找规则模型 Falling Rule Lists

索信达控股

金融科技 模型 贝叶斯公式 用户模型 模型开发

🏆「作者推荐」【JVM原理探索】深入理解G1垃圾收集器的原理和运行机制

码界西柚

G1 JVM 6月日更 垃圾回收器

Gopher China 2021,未来可期

非晓为骁

个人提升 架构师 Go 语言 GopherChina gopher

深入解读 Flink SQL 1.13

Apache Flink

flink

Ipfs矿机收益Ipfs矿机一天收益

比特币 区块链 IPFS

【技术】MediumKube- 快速部署容器云的开发环境

星环科技

云计算 容器 开发工具 开发环境

Redis——NoSQL数据模型及分类

Java 程序员

神经网络吴恩达, 解析极限编程--Kent Beck, Cynthia Andres John 易筋 ARTS 打卡 Week 53

John(易筋)

ARTS 打卡计划

爆赞:这份Github神仙面试笔记,不愧是上了标星120k+的Java面试手册

Java 编程 程序员 架构 面试

干货!!学习CSRF跨站请求伪造,看这一篇就够了

网络安全学海

网络安全 安全 CSRF 渗透测试 漏洞修复

JAVA 面向对象 (十四)-- 关键字abstract、final

加百利

6月日更

CentOS7 Linux服务器无法远程ssh登陆故障处理

Liyuanjie

Centos 7 linux运维 Linux内核

网络攻防学习笔记 Day58

穿过生命散发芬芳

网络攻防 6月日更

《面试补习》- 多线程知识梳理

九灵

Java 面试

379页满满的精华!2021版“深入骨髓层”JDK源码小册已封神

Java架构追梦

Java 阿里巴巴 架构 面试 jdk源码

不为人知的网络编程(十三):深入操作系统,彻底搞懂127.0.0.1本机网络通信

JackJiang

TCP 网络编程 即时通讯 IM

flutter_bloc使用解析---骚年,你还在手搭bloc吗!

小呆呆666

flutter ios android 大前端

20位大佬,勾勒出一个中国网络安全江湖

学神来啦

网络安全 信息安全 云技术

新思科技按需提供渗透测试服务 帮助MATESO识别业务重大漏洞,降低信息泄露风险

InfoQ_434670063458

渗透测试 新思科技 MATESO

图解Git工作原理

Java 程序员 面试

推荐5个免费YouTube视频下载方法

资源君

分享 工具软件 教程 youtube视频下载 下载youtube视频

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