AI 年度盘点与2025发展趋势展望,50+案例解析亮相AICon 了解详情
写点什么

周期性时间序列的预测

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

评论

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

Laravel-文件上传下载

格斗家不爱在外太空沉思

php laravel 11月月更

【C语言】auto 关键字

謓泽

11月月更

vue实战中的一些小技巧

yyds2026

Vue

vue实战-深入响应式数据原理

yyds2026

Vue

Vue-组件详解

格斗家不爱在外太空沉思

vue.js 组件化 11月月更

数据中台的终点是DataOps还是DaaS?

雨果

数据中台 DataOps DaaS

深聊Nodejs模块化

coder2028

node.js

SAP UI5 BarcodeScannerButton 的初始化逻辑 - feature 检测,Cordova API 检测等逻辑

汪子熙

前端开发 Fiori SAP UI5 ui5 11月月更

快出数量级的性能是怎样炼成的 审核中

jiangxl

赛迪网|专注财务全流程数字化,元年科技PaaS平台再上新台阶

元年技术洞察

方舟

OKR之剑·实战篇01:我们的OKR制定落地

vivo互联网技术

团队管理 OKR 目标管理

体验一把 Flowable 三种常见网关

江南一点雨

Java spring springboot flowable JavaEE

前端懒加载和预加载

hellocoder2029

JavaScript

令人头疼的Javascript隐式&强制转换

hellocoder2029

JavaScript

你需要知道的webpack高频面试题

Geek_02d948

webpack

webpack高级配置

Geek_02d948

webpack

理解NodeJS多进程

coder2028

node.js

在数据增强、蒸馏剪枝下ERNIE3.0分类模型性能提升

汀丶人工智能

nlp 文本分类 11月月更 ernie

从历史讲起,JavaScript 基因里写着函数式编程

掘金安东尼

前端 11月月更

文盘Rust -- 把程序作为守护进程启动

京东科技开发者

rust 后端 进程 守护进程 rust语言

计算机网络:数据报与虚电路

timerring

计算机网络 11月月更 数据报 虚电路

敏捷开发模式下如何快速提升产品质量

敏捷开发

敏捷 敏捷开发 软件测试

数据标准化红宝书权威发布!一文速读核心内容~~

博文视点Broadview

超级App们有一个共同的技术特点

Onegun

小程序容器 超级app 小程序化

“企业级零代码黑客马拉松”决赛圆满落幕

明道云

黑客 零代码 无代码 黑客马拉松 黑客松

深度阐述Nodejs模块机制

coder2028

node.js

程序员的浪漫(代码猜诗词)

叶秋学长

程序员 11月月更 诗词 专属浪漫

这是你没见过的MindSpore 2.0.0 for Windows GPU版

华为云开发者联盟

人工智能 华为云 企业号十月 PK 榜

一文彻底读懂webpack常用配置

Geek_02d948

webpack

【LeetCode】被围绕的区域Java题解

Albert

算法 LeetCode 11月月更

腾讯WeTest七年路,中国“质”造向未来

Geek_2d6073

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