1. 时序预测
时序预测是一种统计或机器学习方法,它尝试对历史的时序数据建模,以预测未来的时间点。比如股价、商超销售额、航空乘客量等。本文主要介绍时序预测的基本概念以及常用方法介绍,但不做展开介绍,后续会针对方法、模型做详细说明及数据分析。
时间序列
:即时间序列,是对主体进行观测并按照一定频率采集得到的一组随机变量数据
时序预测
:从诸多数据中挖掘出核心规律,并根据已知的因素对未知信息进行准确预估
研究方向
:分类聚类、异常检测、事件预测、时间序列预测
应用场景
:天气预报、语音识别、情感分析、知识图谱、视频分析等
预测分类
:单变量预测、多变量预测、单步预测,多步预测等
2. 模型分类
2.1 统计分析模型
传统时间序列预测中最常使用到的时间序列模型有以下五种,包括:
2.1.1 自回归(AR)模型
AR(Auto Regressive)
,就是使用一个变量的过去值来预测其未来值的模型
2.1.2 移动平均(MA)模型
MA(Moving Average)
,是基于过去的观测值的移动平均值来预测未来值。移动平均模型通常用于平滑时间序列数据,以消除短期波动,从而更好地理解数据的长期趋势。
2.1.3 自回归移动平均模型(ARMA)
ARMA(Autoregressive Moving Average Model)
,由自回归模型(简称AR模型)与移动平均模型(简称MA模型)为基础“混合”构成。
2.1.4 自回归整合移动平均模型(ARIMA)
ARIMA(Autoregressive Integrated Moving Average Model)
,差分整合移动平均自回归模型,ARIMA包含3个部分,即AR、I、MA。AR
——表示auto regression,即自回归模型;I——表示integration,即单整阶数。MA——表示moving average。
2.1.5 季节性整合自回归移动平均模型(SARIMA)
SARIMA(Seasonal Autoregressive Integrated Moving Average Model,SARIMA)
是 ARIMA 模型的一个扩展,专门用于分析和预测具有季节性模式的时间序列数据。SARIMA 模型通过增加季节性差分、季节性自回归和季节性移动平均项来捕捉时间序列的季节性特征。
2.2 机器学习模型
在有监督机器学习中,回归问题主要解决的是基于一系列Feature来预测某一Label的可能取值的问题,那么当以历史数据作为Feature时其实自然也就可以将时序预测问题抽象为回归问题,从这一角度讲,所有回归模型都可用于解决时序预测。关于用机器学习抽象时序预测,推荐查看这篇论文《Machine Learning Strategies for Time Series Forecasting》。相关模型如RandomForest,神经网络,SVM等。
2.3. 深度学习模型
深度学习主流的应用场景当属CV和NLP两大领域,其中后者就是专门用于解决序列问题建模的问题,而时间序列当然属于序列数据的一种特殊形式,所以自然可以运用循环神经网络来建模时序预测;例如RNN,LSTM,GRU,CNNs,TFT等。
2.2.1 循环神经网络(RNN)
RNN(Recurrent Neural Network)是一种专门设计用于处理序列数据的神经网络,包括文本、时间序列等数据类型。不同于传统的全连接神经网络,RNN具有记忆能力,能够将前一时刻的输出作为输入,有效地处理时序数据。
在RNN中,每个时间步长的输入都对应一个权重参数,通过不断地更新权重参数,使得RNN能够学习到数据的内在规律。当输入一个序列时,RNN会依次处理每个时间步长的数据,并将上一个时间步长的输出作为下一个时间步长的输入。这样,RNN能够捕捉到序列中的长期依赖关系,并在处理语音识别、自然语言处理、时间序列预测等领域取得了显著成果。
然而,传统的RNN存在一个显著的问题,即梯度消失问题
。当序列长度增加时,梯度在反向传播过程中会逐渐消失,导致训练困难。为了解决这个问题,研究者们提出了长短时记忆(LSTM)神经网络。
2.2.2 长短期记忆(LSTM)
LSTM(Long Short Term Memory)通过引入记忆单元、输入门、遗忘门和输出门等机制,有效地解决了梯度消失问题
。记忆单元负责存储长期依赖的信息,输入门决定新信息的加入量,遗忘门决定旧信息的保留程度,输出门则控制信息的输出。通过这些门机制的调控,LSTM能够学习到更加复杂的模式。
在实际应用中,RNN和LSTM已经被广泛应用于各种领域。在自然语言处理领域,RNN和LSTM被用于文本分类、机器翻译、情感分析等任务。在语音识别领域,RNN和LSTM被用于语音识别、语音合成等任务。在时间序列预测领域,RNN和LSTM被用于股票价格预测、气象预测等任务。
接下来会采用SARIMA和LSTM两个模型进行实例验证。
参考文档
https://timeseriesai.github.io/tsai/
https://www.heywhale.com/mw/project/65716284e7a6e7553cb2cdd1