写点什么

周期性时间序列的预测

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

评论

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

数据库知识点总结

乌龟哥哥

8月月更

【ZK简明教程】(1)零知识证明的背景和系统结构

比特之心

区块链 零知识证明 密码学 签约计划第三季

C++学习------cfenv头文件的作用与源码分析

桑榆

签约计划第三季

RocketMQ高性能设计之数据存储设计

急需上岸的小谢

8月月更

Linux部署hadoop2.7.7集群

程序员欣宸

hadoop 8月月更

IPv6报文头深度解析

穿过生命散发芬芳

ipv6 8月月更

Kafka基础知识

阿泽🧸

kafka 8月月更

在线文字图标logo文章封面图生成工具

入门小站

工具

在线XML转Excel工具

入门小站

工具

开源一夏 | 见微知著,带你认认数据分析的大门,站在门口感受一下预测的魅力

迷彩

开源 数据分析 预测模型 签约计划第三季 8月月更

网络编程(三)数据链路相关知识

Albert Edison

Linux 网络编程 计算机网络 8月月更 数据链路

头脑风暴:组合总和 Ⅳ

HelloWorld杰少

8月月更

记一次 ClickHouse 性能测试

劼哥stone

企业架构是当代的屠龙之术吗?

涛哥 数字产品和业务架构

企业架构

什么是研发效能?研发效能定义及核心价值

laofo

DevOps cicd 研发效能 持续交付 工程效率

对 Service Mesh 望而却步?可能都没理解这一点

baiyutang

架构 微服务 签约计划第三季 servicemes

前端食堂技术周刊第 48 期:ESLint 新配置系统、Vue3 中文文档正式上线、Astro 1.0、小程序新渲染引擎

童欧巴

[极致用户体验] 你的 Link Button 能让用户选择新页面打开吗?

HullQin

CSS JavaScript html 前端 8月月更

KubeSphere 新版本3.3.0解读

CTO技术共享

开源 签约计划第三季 8月月更

面试突击74:properties和yml有什么区别?

王磊

Java 常见面试题

极狐 GitLab 冷知识:如何美化 issue 内容

郭旭东

极狐GitLab JIHULAB 101

《Effective Java》第54条:返回零长度的数组或者集合,而不是null

okokabcd

Java

深入浅出sychronized与Lock的实现原理

清风

后端 原理 并发 lock sychronized

阿里云解决方案架构师张平:云原生数字化安全生产的体系建设

阿里巴巴云原生

阿里云 云原生 安全 数字化

Kubernetes LIST请求服务调优

CTO技术共享

开源 签约计划第三季 8月月更

急如闪电快如风,彩虹女神跃长空,Go语言高性能Web框架Iris项目实战-初始化项目ep00

刘悦的技术博客

Go golang 框架 go语言 Go 语言

11 个需要避免的 React 错误用法

Geek_z9ygea

JavaScript typescript React

三种插件开发模式,带你玩废tinymce

Five

tinymce 签约计划第三季 8月月更

开源一夏|OpenHarmony跳转拨号界面

坚果

开源 OpenHarmony 8月月更

SpringBoot 实战:国际化组件 MessageSource 与 Nacos 组合实现动态配置能力

看山

源码 nacos springboot MessageSources

云原生(十七) | Kubernetes篇之深入了解Deployment

Lansonli

云原生 8月月更

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