利用时间序列预测方法,我们可以基于历史的情况来预测未来的情况。比如共享单车每日租车数,食堂每日就餐人数等等,都是基于各自历史的情况来预测的。

什么是时间序列?

  • 时间序列,是指同一个变量在连续且固定的时间间隔上的各个数据点的集合,比如每5分钟记录的收费口车流量,或者每年记录的药物销量都是时间序列。

时间序列的类型

  • 根据时间间隔的不同,时间序列可以是按年度(Annual)、季度、月度、周、小时、分钟、秒等频率采集的序列。

时间序列的成分

  • 趋势(Trend),比如长期上涨或长期下跌。
  • 季节性(Seasonal),比如羽绒服的销量一般会在冬季更高,或者某家烧烤店的生意一般会在每周五和周六晚上更好。
  • 周期性(Cyclic),比如你时不时搞个大促,那么销量在那段时间就会比较好。
  • 误差。

什么是时间序列预测?

  • 就是用同一个变量的历史值预测未来值,或者除了历史值以外,还加入一些预测因子(又称外生变量)来预测未来值。前者称为单变量时间序列预测,后者称为多变量时间序列预测。
  • 比如,我们要预测某海滩下个月的的游客数量,除了用历史游客数量做预测外,还可以加入温度这个因子。那么只用历史游客数量做预测就是单变量时间预测,加入温度这个因子就是多变量时间预测,当然还可以加入其它合理的预测因子,比如该海滩的每月广告支出等。

一些简单的预测方法

均值法

所有未来的预测值等于历史数据的平均值。

朴素法

简单的将最后一次观测值作为未来的预测值。

季节性朴素法

相比朴素法,就是考虑了季节性,也就是说将同期的最后一次观测值作为本期的预测值,比如预测本周的数值,那么就将上周的周一观测值作为本周的周一预测值,上周的周二观测值作为本周的周二预测值,以此类推。

漂移法(drift )

在起始观测值和最后一次观测值之间画一条连接线,延伸到预测时间点,作为预测值,公式如下:



下面的2副图展示了上面四种方法的预测效果:



常用的时间序列预测法

  • Exponential smoothing 指数平滑

    简单说就是用过去的观测值的加权平均值来作为预测值,权重随着与当前时刻的距离变远而呈指数衰减。
  • ARIMA

    简单说就是用变量的自回归(AR)与历史预测误差的自回归(MA)构成的时间序列预测模型。
  • 基于深度学习的方法

    简单说就是利用神经网络强大的学习能力,从时间序列历史数据中提取各种可能的特征,从而对未来进行预测。这部分的模型比较多,比如LSTM,Seq2seq等。

注意,上述的方法并不能说谁一定比谁好,不同的预测场景下每个方法都有可能做出更好的预测,所以通常需要相互比较,以便做出更合理的预测。

本篇介绍了时间序列的相关概念,下一篇将介绍时间序列的一般数据格式和基于python的可视化方法。

ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O。

用python做时间序列预测一:初识概念的更多相关文章

  1. 用python做时间序列预测九:ARIMA模型简介

    本篇介绍时间序列预测常用的ARIMA模型,通过了解本篇内容,将可以使用ARIMA预测一个时间序列. 什么是ARIMA? ARIMA是'Auto Regressive Integrated Moving ...

  2. 基于 Keras 用 LSTM 网络做时间序列预测

    目录 基于 Keras 用 LSTM 网络做时间序列预测 问题描述 长短记忆网络 LSTM 网络回归 LSTM 网络回归结合窗口法 基于时间步的 LSTM 网络回归 在批量训练之间保持 LSTM 的记 ...

  3. 用 LSTM 做时间序列预测的一个小例子(转自简书)

    问题:航班乘客预测 数据:1949 到 1960 一共 12 年,每年 12 个月的数据,一共 144 个数据,单位是 1000 下载地址 目标:预测国际航班未来 1 个月的乘客数 import nu ...

  4. Python中利用LSTM模型进行时间序列预测分析

    时间序列模型 时间序列预测分析就是利用过去一段时间内某事件时间的特征来预测未来一段时间内该事件的特征.这是一类相对比较复杂的预测建模问题,和回归分析模型的预测不同,时间序列模型是依赖于事件发生的先后顺 ...

  5. python做量化交易干货分享

    http://www.newsmth.NET/nForum/#!article/Python/128763 最近程序化交易很热,量化也是我很感兴趣的一块. 国内量化交易的平台有几家,我个人比较喜欢用的 ...

  6. 如何用python将一个时间序列转化成有监督学习

    机器学习可以被用于时间序列预测. 在机器学习能使用之前,时间序列预测需要被重新转化成有监督学习.将一个序列组合成成对的输入输出序列. 在这篇教程中,你会发现如何通过使用机器学习算法将单变量和多变量的时 ...

  7. Kesci: Keras 实现 LSTM——时间序列预测

    博主之前参与的一个科研项目是用 LSTM 结合 Attention 机制依据作物生长期内气象环境因素预测作物产量.本篇博客将介绍如何用 keras 深度学习的框架搭建 LSTM 模型对时间序列做预测. ...

  8. facebook开源的prophet时间序列预测工具---识别多种周期性、趋势性(线性,logistic)、节假日效应,以及部分异常值

    简单使用 代码如下 这是官网的quickstart的内容,csv文件也可以下到,这个入门以后后面调试加入其它参数就很简单了. import pandas as pd import numpy as n ...

  9. python做语音信号处理

    音频信号的读写.播放及录音 标准的python已经支持WAV格式的书写,而实时的声音输入输出需要安装pyAudio(http://people.csail.mit.edu/hubert/pyaudio ...

随机推荐

  1. Re模块的方法补充

    id_str = input("输入一个身份证号:") import re obj = re.compile(r"^([1-9]\d{16}[0-9x]|[1-9]\d{ ...

  2. SpringBoot:整合Druid、MyBatis

    目录 简介 JDBC 导入依赖 连接数据库 CRUD操作 自定义数据源 DruidDataSource Druid 简介 配置数据源 配置 Druid 数据源监控 配置 Druid web 监控 fi ...

  3. openshift 4.3 Istio的搭建(istio 系列一)

    openshift 4.3 Istio的搭建 本文档覆盖了官方文档的Setup的所有章节 目录 openshift 4.3 Istio的搭建 安装Istio openshift安装Istio 更新is ...

  4. Coursera课程笔记----计算导论与C语言基础----Week 10

    C程序中的数组(Week 10) 一维数组 数组的定义 类型 数组名[常量表达式] int sheep[10] 定义数组时,[]内必须为常量表达式 可以用const int 可以在main函数前,#d ...

  5. masonry中的make,remake,update

    - (void)viewDidLoad { [super viewDidLoad]; self.navigationController.navigationBar.translucent = NO; ...

  6. Jmeter简单性能测试练习

    项目描述: 被测网站:xqtesting.blog.51cto.com 指标:响应时间以及错误率 场景:线程数20   测试步骤: 测试计划 线程组 http请求 监听器 运行脚本 查看报告 1.添加 ...

  7. ql的python学习之路-day15

    前言:本节主要讲解的是文件路径 在实际的软件开发中会设计一个项目的文件目录,按照执行包bin.配置包config.核心包core等来设计,在执行包里面要运行核心包里的主程序mian,由于不在同一级的目 ...

  8. python中minepy包的下载

    minepy包的下载 今天在做机器学习的时候,需要使用到互信息的有关内容,而python包下正好有处理互信息的包,想直接下一个,没想到遇到了不少问题: 基本指令很简单了: pip install mi ...

  9. Java 集合排序策略接口 Comparator

    1. 前言 最近用到了集合排序(基于 Java 8).现在我能用 Stream 的就用 Stream ,真香!排序可以这么写: List<People> peoples = new Arr ...

  10. Failed to start mongod.service: Unit not found

    其实自己用惯的是MYSQL,然后项目最后一步完善数据读写的部分,本来打算用mysql的,然而在centOS系统上发现安装总是出问题,后来查找一下资料,发现centOS系统上一般用的是Mariadb,这 ...