阿里云飞天发布时刻,领先大模型限免,超7000万 tokens免费体验 了解详情
写点什么

周期性时间序列的预测

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

评论

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

在企业内容城池边,它建立起一支保卫军

ToB行业头条

Nautilus Chain :基于模块化架构的Layer3正在走向成熟

股市老人

Django笔记十六之aggregate聚合操作

Hunter熊

Python django 聚合 aggregate

TPU、TensorFlow—谷歌云“增强”AI 芯片团队,与微软云竞争AI云份额

B Impact

成立3年,云服务厂商火山引擎全景扫描

B Impact

Kafkaide让IDEA开发者不在游走

扬_帆_起_航

kafka kafka manager

测试需求平台10-DBUtils优化数据连接与SQL Limit实现分页

MegaQi

测试平台开发 三周年连更

关于时间管理的一点建议

光毅

时间管理 Tech Lead

2022-04-25:给定两个长度为N的数组,a[]和b[] 也就是对于每个位置i来说,有a[i]和b[i]两个属性 i a[i] b[i] j a[j] b[j] 现在想为了i,选一个最

福大大架构师每日一题

golang 算法 rust 福大大

用Python也能画图?用Python来画个“python”

Bob

Python

HarmonyOS Codelabs最新参考

坚果

OpenHarmony 三周年连更

深度分享 | API 测试经济学与 API First 践行

Apifox

程序员 前端 接口 后端 API

Go RWMutex:高并发读多写少场景下的性能优化利器

陈明勇

Go golang 读写锁 三周年连更 RWMutex

MobTech MobLink|引流统计一站式服务

MobTech袤博科技

Go语言并发编程核心-Channel的典型应用场景分析

Jack

灾备的级别和等级划分

穿过生命散发芬芳

灾备 三周年连更

美国To B软件公司受到ChatGPT“威胁”解析

B Impact

把“ai模型+低代码”应用在项目管理中,效率翻了好几倍

优秀

AI 低代码

向量嵌入:AutoGPT的幻觉解法?

OneFlow

如何利用 Go 创建一个 Web 应用

宇宙之一粟

Go Web 服务端 客户端 三周年连更

磁盘I/O性能监控的指标

阿泽🧸

三周年连更 磁盘IO

让 AI 更简单 人工智能平台 SEAL 携手龙蜥落地达摩院算法能力 | 龙蜥案例

OpenAnolis小助手

开源 操作系统 SEAL 达摩院 龙蜥案例

卷起来了!阿里最新出品“微服务全阶笔记”,涵盖微服务全部操作

收到请回复

架构 #编程 #微服务

陆奇:“模仿”微软Copilot,结构性代际因边际成本转为固定成本

B Impact

Sam Altman:巨型AI模型时代已结束, GPT-4是OpenAI最后成果

B Impact

一文带你了解 TypeScript 泛型

程序员海军

typescript 三周年连更

Oracle EBS学习篇:Oracle EBS启用诊断功能

back_wang

音视频八股文(5)--SDL音视频渲染实战。会使用就行,不需要深究。

福大大架构师每日一题

音视频 SDL 流媒体 福大大

异步编程|五分钟让你学会局部刷新Ajax技术

浅羽技术

Java ajax js jsp 三周年连更

我用ChatGPT的一些实践案例

石云升

AI ChatGPT 三周年连更

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