2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

周期性时间序列的预测

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

评论

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

流程的作用是服务于业务,所有不能被用来帮业务部门好好打粮食的流程,都不是好流程!

CTO技术共享

DAPP/去中心化系统开发流程解析方案(成熟理念)分析结果

I8O28578624

栉风沐雨 韧性前行 | 2022年九科大事件

九科Ninetech

RPA 超自动化 流程挖掘

华为云发布冷启动加速解决方案:助力Serverless计算速度提升90%+

华为云开发者联盟

Serverless 华为云 冷启动 Cold Start 进程级快照

流程的价值一,固化业务的最佳实践!

CTO技术共享

人人都在聊的云原生数据库Serverless到底是什么?

华为云开发者联盟

数据库 Serverless 云原生 华为云 GaussDB

如何让Java编译器帮你写代码

京东科技开发者

后端 编译器 java; 编译器原理 企业号 1 月 PK 榜

从人工分析到智能分析,流量分析如何快速上手?

智维数据

智能运维 应用交付 可视化数据 流量分析系统

深入理解跨域和最佳实践分享

Crazy Urus

面试 前端 HTTP 跨域

30+亮眼指标,看看2022年嘉为蓝鲸的逆势创新之路!

嘉为蓝鲸

自动化运维 嘉为蓝鲸 2022大事件

软件测试/测试开发 | 接口自动化测试中,文件上传该如何测试?

测试人

软件测试 自动化测试 接口测试 测试开发 文件上传

中国国际电子商务中心与易观分析联合发布:2022年3季度全国网络零售发展指数同比增长1.5%

易观分析

零售 电商

在Spring异步线程池中自动传递上下文,这样写轻松又方便

程序员拾山

Spring Boot #java

Databend 内幕大揭秘第二弹 - Data Source

Databend

深度学习快速上手——基于 MegEngine 的 LeNet 快速训练与部署

MegEngineBot

深度学习 开源 MegEngine

比Postman更懂中国程序员,Apipost真香!

不想敲代码

接口测试 API 研发管理工具

谈谈enabled_shared_from_this

SkyFire

c++ 智能指针

树与二叉树深度剖析(二)

C++后台开发

数据结构 算法 二叉树 红黑树 Linux服务器开发

nCompass为医疗行业信息安全穿上“铠甲”

智维数据

大数据 数据可视化 智能运维 应用交付 流量分析系统

启科 QuTrunk+Runtime+QuSaaS+亚马逊云科技量子计算编程实战

亚马逊云科技 (Amazon Web Services)

Python 量子计算 Amazon EC2 Hero 专栏 Amazon Braket

Golang如何优雅接入多个远程配置中心?

王中阳Go

golang 高效工作 学习方法 后端 viper

Lattice - 模式级复用的能力定义

原力在线

架构 lattice 高可扩展

“零信任”下的防火墙策略管理

智维数据

大数据 防火墙 数据可视化 智能运维 运维安全

安全事件溯源分析场景

智维数据

大数据 数据可视化 智能运维 应用交付 流量分析系统

嘉为蓝鲸IT服务管理解决方案入选2022广东省政务服务创新解决方案

嘉为蓝鲸

自动化运维 嘉为蓝鲸 IT服务管理中心

MySQL:如何给字符串加一个高效索引?

程序员拾山

MySQL

架构训练营第10期模块5作业

Geek_4db2d5

设计模式之装饰者模式

程序员大彬

Java 设计模式

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