快手、孩子王、华为等专家分享大模型在电商运营、母婴消费、翻译等行业场景的实际应用 了解详情
写点什么

周期性时间序列的预测

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

评论

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

Forsage智能合约系统APP开发|Forsage智能合约软件开发(现成)

系统开发 现成系统

数据结构与算法系列之跳表(GO)

书旅

数据结构 算法 Go 语言

高速公路二维码定位报警系统搭建解决方案

t13823115967

高速公路二维码定位报警 智慧公安

接口测试之post常见数据提交方式

测试人生路

post 接口测试

Linux常用命令速查

jiangling500

linux命令

整天都在讨论使用SpringBoot,可你居然连缓存都不清楚

小Q

Java 缓存 学习 面试 springboot

双非本硕四面百度竟意外成功?看完我的面试经历 网友都称:过于优秀

比伯

Java 编程 架构 面试 计算机

解锁高速 IT 团队利器:Jira Service Management

Atlassian

DevOps Atlassian Jira ITSM ITIL

开发技巧 | mPaaS 小程序自定义事件,如何取消注册?

蚂蚁集团移动开发平台 mPaaS

小程序 API mPaaS

记一次GC频繁且间隔较长解决实战总结

AI乔治

Java 架构 JVM GC

了不起的 Deno:带你极速获取各大平台今日热榜

华为云开发者联盟

Java 安全 deno

华为云&跟谁学|华为云API入门学习赛·AI人脸识别 未来工程师梦想的起点

DT极客

深度剖析github star数15.1k的开源项目redux-thunk

徐小夕

Java GitHub 大前端 React

Gradle doesn't run because it can't find tools.jar in JRE

mengxn

kotlin Gradle

淦!终于有人把Java 8和Spring 5完美合体了,业界堪称“神迹”

Java架构追梦

Java spring 架构 面试 springboot

深入解读:KubeVela 与 PaaS 有何不同?

阿里巴巴云原生

阿里云 开源 容器 云原生 CloudNative

专访阿里云 Serverless 负责人:无服务器不会让后端失业

阿里巴巴云原生

Serverless 微服务 云原生 CloudNative 无服务器

AWS IoT Core设计解析

soolaugust

边缘计算 AWS 工业4.0 工业物联网 iiot

360OS张焰:AI视觉在教育中的应用

ZEGO即构

语音识别端到端模型解读:FSMN及其变体模型

华为云开发者联盟

大数据 模型 语音识别

为什么short、byte会被提升为int?及基本类型的真实大小

烫烫烫个喵啊

Java JVM

「linux」Socket缓存是如何影响TCP性能的?

linux大本营

Linux 后台开发 socket 架构师 TCP/IP

漫画:什么是 “智能供应链” ?

京东科技开发者

云计算 供应链 智能供应链

有奖讨论|作为程序员,女朋友是怎么吐槽你的?

Simon郎

女朋友 话题讨论

🤳你要悄悄变优秀,然后惊艳所有人

蚂蚁集团移动开发平台 mPaaS

mPaaS 智能投放 界面改版 产品资讯

小心踩雷,一次Java内存泄漏排查实战

AI乔治

Java 架构 JVM 内存

高并发的核心 - AQS【哪些琐是基于AQS来实现的】

Java架构师迁哥

区块链落地开发,区块链版权应用搭建

t13823115967

区块链+ 区块链落地开发 区块链版权应用搭建

从零开始搭建Kafka+SpringBoot分布式消息系统

小Q

kafka zookeeper 学习 面试 springboot

LiteOS基于Sensorhub的超声波模组移植

华为云开发者联盟

物联网 LiteOS 超声波

年轻人,快来看看分布式与集群的区别是什么?

程序员小灰

redis 分布式 后台开发 集群 Linux服务器开发

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