女主宣言

AIOps 从立项到现在已经半年有余,从最开始的 LVS 异常检测,到如今的实时关联分析,智能运维已经渗透到我们日常运维中的许多场景,之后我们会将积累的经验分享出来,供大家学习参考,本文最先发布于 OpsDev,转载已获取作者授权。

PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

At Tranquility Base, 1969

by NASA IOTD

最近在研究时间序列的时候,发现很多序列具有很强的周期性,那如何对此类序列进行预测呢?

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

总结

本文介绍了周期性序列的预测方法,你可能会问并不是所有的序列都具有周期性,事实确实如此,接下来几篇博客,我会重点介绍周期性检测的一些方法。希望此博客对您研究时间序列有所帮助。

HULK一线技术杂谈

由360云平台团队打造的技术分享公众号,内容涉及云计算、数据库、大数据、监控、泛前端、自动化测试等众多技术领域,通过夯实的技术积累和丰富的一线实战经验,为你带来最有料的技术分享

周期性时间序列的预测相关推荐

  1. python时间序列预测不连续怎么办_Python建模:预测周期性时间序列的正确姿势

    公司平台上有不同的api,供内部或外部调用,这些api承担着不同的功能,如查询账号.发版.抢红包等等. 日志会记录下每分钟某api被访问了多少次,即一个api每天会有1440条记录(1440分钟),将 ...

  2. 时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)——三次指数平滑算法可以很好的保存时间序列数据的趋势和季节性信息...

    from:http://www.cnblogs.com/kemaswill/archive/2013/04/01/2993583.html 在时间序列中,我们需要基于该时间序列当前已有的数据来预测其在 ...

  3. java三次指数平滑_时间序列挖掘-预测算法-三次指数平滑法(Holt-Winters)

    所有移动平均法都存在很多问题. 它们都太难计算了.每个点的计算都让你绞尽脑汁.而且也不能通过之前的计算结果推算出加权移动平均值. 移动平均值永远不可能应用于现有的数据集边缘的数据,因为它们的窗口宽度是 ...

  4. Python时间序列LSTM预测系列教程(6)-单变量

    单变量LSTM预测模型(6) 教程原文连接 前置教程: Python时间序列LSTM预测系列教程(1)-单变量 Python时间序列LSTM预测系列教程(2)-单变量 Python时间序列LSTM预测 ...

  5. python时间序列数据预测教程之 arima

    最近接触时间序列较多,在借鉴很多人的知识之后,特此总结一下.目前关于时间序列数据分析预测大致有三种主流方法: 1.ARIMA系列方法 2.facebook开源的Prophet模型 3.LSTM时间序列 ...

  6. 深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战

    深度学习时间序列预测:卷积神经网络(CNN)算法构建单变量时间序列预测模型预测空气质量(PM2.5)+代码实战 神经网络(neual networks)是人工智能研究领域的一部分,当前最流行的神经网络 ...

  7. Keras之MLPR:利用MLPR算法(3to1【窗口法】+【Input(3)→(12+8)(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题

    Keras之MLPR:利用MLPR算法(3to1[窗口法]+[Input(3)→(12+8)(relu)→O(mse)])实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题 目录 输出 ...

  8. Keras之MLPR:利用MLPR算法(1to1+【Input(1)→8(relu)→O(mse)】)实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题

    Keras之MLPR:利用MLPR算法(1to1+[Input(1)→8(relu)→O(mse)])实现根据历史航空旅客数量数据集(时间序列数据)预测下月乘客数量问题 目录 输出结果 设计思路 实现 ...

  9. keras时间序列数据预测_使用Keras的时间序列数据中的异常检测

    keras时间序列数据预测 Anomaly Detection in time series data provides e-commerce companies, finances the insi ...

最新文章

  1. mac 安装 RabbitMQ
  2. HDU2227(非降子序列的个数)
  3. go 中使用socket范例
  4. 执行sqoop 用shell_Mysql和Hive之间通过Sqoop进行数据同步
  5. spring配置文件各个属性详解
  6. matlab画圆(及其他常用图形)
  7. 新西兰留学再移民,哪些专业好就业?
  8. 《山水情》------中国水墨山水动画的颠峰与极至
  9. 每日三省吾身:2014-1-16
  10. 北京历正科技 招聘FPGA工程师
  11. 高德地图,坐标转换,自定义导航路线
  12. Word中表的自动断开、且断开处有空白页面的问题之解决
  13. IMSI 和 IMEI
  14. 实现动态输入关键字时关键字高亮
  15. Qt程序打包发布方法(使用官方提供的windeployqt工具) 转自:http://tieba.baidu.com/p/3730103947?qq-pf-to=pcqq.group Qt 官方
  16. 读《无心恰恰用》笔记
  17. 非参数统计方法---摘自MIT课件
  18. Typescript从入门到精通(上)
  19. 软件产品测试之压力测试
  20. SSIS中刷新Power BI数据集

热门文章

  1. 从购买阿里云服务器到搭建Java开发环境 jdk1.8+tomcat8.5+mysql(CentOS7.3)
  2. Coding and Paper Letter(六十二)
  3. 【千锋】网络安全学习笔记(五)
  4. python-django学习足迹(二)
  5. edusoho兑换码功能二次开发
  6. (最新+详细+Pycharm远程调试GUI程序)解决qt.qpa.xcb: could not connect to display问题
  7. 社区观点 | 理解比原链MOV链上交换协议
  8. 判断点P是否在三角形ABC内部
  9. 必做作业2——视频剪辑软件调研
  10. 数据库——SQL 下