写点什么

周期性时间序列的预测

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

评论

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

原生开发能不能动态化?如何选择动态能力建设流派

没有用户名丶

LED显示屏室内改为户外为何不可取?

Dylan

LED显示屏 户外LED显示屏 户内led显示屏

防治“虚假种草”,小红书技术团队干了这几件大事

小红书技术REDtech

架构 AI 小红书

高兼容低成本,开箱即用的首页性能优化方式被我们找到了

小红书技术REDtech

前端 Andriod

轻松比较文件和文件夹:Beyond Compare 4 Mac中文

真大的脸盆

Mac Mac 软件 对比工具 比较文件 对比软件

ONES × 中国信通院《中国企业软件研发管理白皮书》即将发布

万事ONES

【Linux】之【内存】相关的命令&&解析以及内存相关的问题[free、meminfo、内存泄漏、内存溢出、Overcommit]

A-刘晨阳

Linux cpu 三周年连更

Fabarta 图增强数据血缘治理解决方案

Fabarta

数据治理 图数据库 图智能 血缘治理

详解GaussDB(DWS)的query_band负载识别与应用

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 4 月 PK 榜

三分钟完成静态网站托管

华为云开发者联盟

开发 华为云 华为云开发者联盟 企业号 4 月 PK 榜 静态网站托管

字节跳动的开源历程与价值思考

字节跳动开源

开源 云原生 演讲 字节

2023 BAT最强Java岗面试题 !底气来源"java面试手册2023"轻松上岸

Java你猿哥

Java JVM 多线程 面经 java基础

【堡垒机小知识】堡垒机有主机监控功能吗?

行云管家

网络安全 堡垒机 主机监控

java性能优化实战:高并发系统的法宝之缓存设计

Java你猿哥

高并发 缓存并发 缓存设计 Java高并发 Java性能优化

技术文章的写作思维

老张

技术干货 技术文章

Github最新开源!Alibaba 亿级并发系统架构(2023全彩版小册)

Java你猿哥

Java 数据库 缓存 分布式 高并发

【等保小知识】等保一级需要备案吗?

行云管家

等级保护 等保备案 等保一级 一级等保

PaddleSeg 2.8版本正式发布啦!

飞桨PaddlePaddle

飞桨

惠普聚焦资源再利用、森林保护和碳排放,理念贯穿电脑全生命周期

叶落便知秋

面对向多模态发展的趋势,为什么这些业界和学界专家说“不必追热点”

小红书技术REDtech

深度学习 专家 活动回顾

AI与打工人:相互补充,共同进步 | 社区征文

海拥(haiyong.site)

三周年征文

为什么众多大型国企都在升级企业数智化底座?

用友BIP

技术大会 用友iuap 用友技术大会 升级企业数智化底座 央国企数智化转型

数据库原理及MySQL应用 | 日志管理

TiAmo

数据库 MySQL数据库 日志管理 三周年连更

golang-GMP模型

Android技术分享 | 一行代码实现屏幕、声音采集

anyRTC开发者

音视频 移动开发 Andriod 屏幕采集 声音采集

DevData Talks | 微众银行有哪些研发效能实践与思考?一起来拓展认知边界!

思码逸研发效能

研发效能 金融 微众银行

Redis源码之SDS简单动态字符串

Java你猿哥

Java redis ssm Java工程师

人工智能基础数据服务,第一!

百度开发者中心

人工智能 数据标注 元宇宙

电商流量分析怎么做?试试这款数据工具DataLeap!

字节跳动数据平台

大数据 用户增长 数据产品 电商 企业号 4 月 PK 榜

如何在 Postman 中进行 HTTPS 请求

Liam

Java 程序员 后端 Postman API 调试

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