写点什么

周期性时间序列的预测

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

评论

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

智慧社区管理平台建设,智慧平安小区整体解决方案

t13823115967

智慧社区安防系统平台开发

测开之函数进阶· 第7篇《装饰器装饰类,通用装饰器,有啥区别呢?》

清菡软件测试

测试

区块链app开发要多少钱?如何根据项目需求了解价格?

数字货币交易所开发的功能与特点

国外低代码平台趟过那些坑,对国内低代码企业有哪些启示?

DT极客

深度解析!滴滴内部开源Spring IoC和AOP源码小册

Java架构追梦

Java spring 架构 aop ioc

对冲基金的子基金模式vs集中管理

9527

7 天开发后台系统技术小结

老魚

程序员 全栈 建站

这道面试题,出错率90%

田维常

面试

纵观 ActiveX 平台的兴衰史,看开发控件的技术演变

葡萄城技术团队

SpreadJS activex

软件测试--中间件介绍

测试人生路

软件测试 中间件

如何防止短信验证码接口被恶意调用攻击?

香芋味的猫丶

短信 短信防刷 接口安全 验证码

区块链数字货币交易所开发的简介

2020年11期券商App行情刷新及交易体验评测报告

博睿数据

APM 数据 AIOPS 证券

程序员修炼之路:你该知道的 7 个必经阶段

阿里巴巴云原生

阿里云 程序员 云原生 自我思考 成长笔记

四年三次获奖,PostgreSQL再度荣获“年度数据库”桂冠!

PostgreSQLChina

数据库 postgresql 开源

云原生2.0时代,华为云DevOps立体运维实践

华为云开发者联盟

DevOps 运维 云原生 华为云

架构师训练营 - 大作业二

Pudding

LINUX SHELL脚本攻略

田维常

有没有听说过通达快递?

escray

极客时间 极客大学 课程作业 大作业 架构师训练营第 1 期

电商平台如何激发内容生态

马踏飞机747

内容 内容分发网络 电商

OpenKruise 2021 规划曝光:More than workloads

阿里巴巴云原生

阿里云 开源 容器 云原生 调度器

Flink SQL 实战:双流 join 场景应用

Apache Flink

flink 流计算

Linux进程知识干货|收藏

赖猫

c++ Linux 后台开发 运维

敏捷团队的质量保障赋能

BY林子

质量保障 质量赋能 敏捷测试

智慧公安防控管理平台搭建,重点人员管控系统解决方案

t13823115967

智慧公安

Python的GIL

yunson

Python GIL

获奖名单|七日更挑战成功!

InfoQ写作社区官方

奖品 七日更 热门活动

千里公路建设尽收眼底,3D可视化监测管养运,领导都惊呆了

一只数据鲸鱼

物联网 数据可视化 3D可视化 公路建设 智慧交通

我参与阿里巴巴 ASoC-Seata 的一些感悟

阿里巴巴云原生

阿里云 开发者 云原生 感悟 seata

漫画 | 带你领略前端发展史的江湖恩怨情仇

苏南

程序员 大前端 漫画 时代发展

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