zoukankan      html  css  js  c++  java
  • 用python做时间序列预测1:初识概念

    什么是时间序列?

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

    时间序列的类型

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

    时间序列的成分

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

    什么是时间序列预测?

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

    一些简单的预测方法

    均值法

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

    朴素法

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

    季节性朴素法

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

    漂移法(drift )

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

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

    常用的时间序列预测法

    • Exponential smoothing 指数平滑 简单说就是用过去的观测值的加权平均值来作为预测值,权重随着与当前时刻的距离变远而呈指数衰减。
    • ARIMA 简单说就是用变量的自回归(AR)与历史预测误差的自回归(MA)构成的时间序列预测模型。
    • 基于深度学习的方法 简单说就是利用神经网络强大的学习能力,从时间序列历史数据中提取各种可能的特征,从而对未来进行预测。这部分的模型比较多,比如LSTM,GRU,TCN等。

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

    原文作者:

    程序员一一涤生(云+社区)

  • 相关阅读:
    将01字符串转换成数字的办法
    Codeforces Round #180 (Div. 2) AB
    CPU制作过程『转』
    向VECTOR的头部添加元素
    母版页中js操作问题
    操作粘贴板
    XML和关系数据使用XML和数据集类
    XML和关系数据用XML加载数据集
    XPath和XSL转换向XML应用XSL转换
    XML和关系数据从XSD架构创建数据集映射
  • 原文地址:https://www.cnblogs.com/zhukaijian/p/13220475.html
Copyright © 2011-2022 走看看