关于时间序列预测的一份介绍

时间序列预测是一种基于过去数据点的分析方法,用于预测未来值。它广泛应用于经济学、金融、气象学、销售预测、库存管理等领域。在这篇文章中,我就将介绍有关时间序列预测有关的东西,具体将包含其有关的概念、预测过程以及相关模型简介。

一、概念

1.1 预测模型

所谓预测模型就是用基于历史数据预测未来值的各种数学和统计模型,它是时间序列预测的核心,选择合适的预测模型直接影响到预测结果的准确性。

一般我们考虑根据频率与趋势等方面来选择预测模型,此外,外生变量的有无也会是考虑的决定性因素。然后,对于模型的复杂度,计算成本以及预测精度的需求也会影响对于预测模型的选择。

1.2 时间序列数据

所谓时间序列数据就是指按照时间顺序排列的一系列数据点,每个数据点通常对应一个特定的时间戳。这类数据反映了某个变量或多个变量随时间变化的情况,能够捕捉到时间维度上的趋势、季节性、周期性和随机波动等特征。如下就是一组时间序列数据截取的极小一部分:

"Timestamp" "velocity1" "velocity2" "velocity3" "velocity4" "velocity5" "velocity6" "velocity7" "velocity8" "velocity9" "velocity10" "velocity11" "velocity12"
1248994800 7.58 4.31 7.95 7.92 8.25 8.45 NA 9.71 7.63 7.57 5.02 7.02
1248994801 7.49 4.5 7.65 7.74 8.35 7.43 5.71 9.34 7.31 7.2 5.24 6.85
1248994802 7.23 3.94 7.94 7.33 8.74 NA 5.53 9.11 7.01 7.95 5.73 7.14
1248994803 7.46 3.96 8.08 7.81 9.1 6.35 5.79 8.61 7 7.61 5.98 6.92
1248994804 7.75 3.67 8.1 8.24 8.84 7.35 6.16 8.78 6.99 8.05 6.25 5.88
1248994805 7.98 3.71 8.05 8.52 8.15 NA 6.73 8.34 6.71 7.75 5.88 5.4
1248994806 7.83 3.66 8.14 7.73 7.82 8.38 6.4 8.23 6.49 7.66 5.62 4.99
1248994807 8.01 3.64 7.83 7.09 8.05 8.04 6.18 7.99 6.47 7.78 5.35 5.89
1248994808 8.2 3.75 7.9 7.08 7.85 8.02 6.2 7.92 6.97 8.2 5.07 6.12

其中," Timestamp "表示时间戳,之后的" velocityi "表示i个风速测量值。

观察这组数据发现其中存在缺失值,比如在在 velocity6 和 velocity12 中存在 NA 值,表明某些时间点上特定传感器未能成功记录风速数据。这可能是由于设备故障、通信问题或其他因素引起的。所以需要一些方法进行处理。

通常在机器学习中对于缺失值可以直接将 NA 值所在行删去,在数据量完全充足的情况下,但如果在时间序列预测中也如此的话,将导致时间序列数据的不完整性,从而影响最后预测结果。所以,我们可以考虑插补法,比如利用均值、众数、中位数等数值或样条插值、线性插值等方法。

此外,我们如果考虑将该有关风速的时间序列数据可视化,则可得到折线图(只对 velocity1 可视化)如下:

关于时间序列预测的一份介绍_第1张图片

1.3 季节性

季节性就是指数据中重复出现的短期周期模式,通常与固定的时间间隔有关(如每日、每周、每年)。 有效捕捉季节性有助于更准确地建模和预测具有周期性变化的数据,具体对于季节性可以使用季节性分解、SARIMA模型等方法来处理季节性成分。

1.4 趋势

趋势是指时间序列中长期前进或后退的方向,可以是上升、下降或水平(平稳)。它反映了数据的基本走向,而忽略了短期波动和随机噪声。趋势通常表现为一种持续性的变化,不是短暂的现象,并且一旦识别出趋势,它可以帮助我们对未来做出预测,因为趋势往往会在一段时间内保持相对稳定。

1.5 时间序列预测与时间序列分析

对于这二者,首先我们知道时间序列分析就是指对按时间顺序排列的数据点进行统计分析的过程,旨在理解数据的结构、模式和特征。所以可以知道时间序列分析最后得到的输出为关于数据特性的结论、图表或模型参数,而时间序列预测则是具体的数值预测及其对应的置信区间。

所以整体来说,时间序列分析提供了对数据深入理解的方法,而时间序列预测则是利用这种理解去推测未来的发展。

1.6 时间序列预测与回归任务

在机器学习等方法解决的回归任务与时间序列预测解决的问题整体有些相像,但在顺序的有无以及特征的有无上有所区别,具体如下:

顺序 特征
时间序列预测 有序 动态特征
回归任务 无序 静态特征

其中关于静态特征与动态特征在这里详细说明下:

静态特征:通常使用一组固定的特征来描述每个样本,这些特征不随时间变化。例如,预测风力发电中关于地理位置这一特征。

 动态特征:除了可能存在的外生变量(如天气条件),时间序列预测还涉及从历史数据中提取特征,如滞后值(Lag Features)、移动平均(Rolling Mean)、差分(Differencing)等。此外,趋势、季节性和周期性成分也是重要的特征来源。

二、过程

在时间序列预测中,整体的过程可以参考这个流程图,图如下:

关于时间序列预测的一份介绍_第2张图片

接下来,具体来看每一步:

2.1 设定目标

在这一步中,我们要知道自己所做的是为了什么,比如在一个风力发电场有关的预测中,我们是为了能合理配置发电厂所生产的资源,所以需要进行相关的预测。

2.2 确定预测目标

然后我们要知道具体去预测什么的数值,在风力发电厂中,风速就是一个重要的参考值,所以我们确定它就是我们要进行预测的一个目标。

2.3 设置预测范围

接着,我们要确定预测的范围。因为我们是为了下一年中让发电厂的效益提高,可以合理配置资源,所以,我们明确预测的时间范围为一年。

2.4 收集数据

然后,便要收集数据。在具体收集时,我们要明确收集的间隔是什么,一分钟收集一次?一小时收集一次?还是一天收集一次?而在一般类似于发电厂的风速收集中,主要依靠具体目的来确定收集频率,即如果需要高精度的短期预测,那么较高的采样率(例如每10分钟)是必要的。但高频率的数据会产生大量的存储需求,并且处理这些大数据集可能会增加计算成本。所以根据具体的业务需求确定所需的数据粒度,比如电网调度、机组维护计划等。

2.5 开发预测模型

现在就到了期待已久的建立模型发阶段了,我们可以根据很多的一些条件信息来确定具体的选择,比如:如果我们发现这个风速的变化存在季节性,则SARIMA模型将是需要的,但如果还存在一些外在的变量等,则需要考虑SARIMAX模型。如果我们收集了大量的数据,比如在过去20年中的风速其实都有进行收集记录,那么我们可以使用神经网络模型来利用这些数据去训练预测模型,因为深度学习比起其他的一些方法更适用于大量数据的训练。

此外还要考虑对于模型性能的度量,以评估预测值与实际值之间的差距,比如均方误差(MSE)就是一项很好的度量指标,其中,MSE越小说明模型的性能越好。

2.6 部署到生产中

在得到需要的模型后,就需要将之部署到生产环境中,在部署后,我们进行相应的输入,然后即可得到预期的预测值。具体的部署方式可以是一个API或是在Web环境中运行。

2.7 监控与收集新数据

我们已经部署好了模型,接着在之前设定好的时间间隔中,仍然需要收集数据,将新的数据输入,然后将得到的预测值与当前的实际值做比较,以此看到模型的质量。同时也可以查找意外事件,比如冷(暖)峰过境等。

三、模型 

ARIMA (AutoRegressive Integrated Moving Average):ARIMA模型是时间序列分析中非常流行的一种方法。它结合了自回归(AR)和平滑移动平均(MA),以及差分整合(I)来处理非平稳数据。模型参数通常表示为ARIMA(p, d, q),其中p是自回归项的数量,d是数据被差分的次数以达到平稳性,q是移动平均项的数量。

SARIMA (Seasonal ARIMA):当时间序列展示出季节性模式时,SARIMA模型可以用来捕捉这种周期性的变化。它是在ARIMA基础上加入了季节性成分。模型参数扩展为SARIMA(p, d, q)(P, D, Q)m,其中m是季节周期长度,大写字母表示季节性部分的参数。

Exponential Smoothing (指数平滑):包括简单指数平滑、双重指数平滑(Holt’s linear trend method)、三重指数平滑(Holt-Winters’ seasonal method)。这些方法通过赋予最近观测值更大的权重来进行预测。

Prophet:Facebook开发的一款易于使用的开源工具,特别适合具有强烈季节效应的时间序列数据,并且能够很好地处理缺失值和异常点。

State Space Models (状态空间模型):这类模型允许对时间序列进行更复杂的建模,比如引入隐含的状态变量。Kalman滤波是一种用于估计这类模型的方法。

Machine Learning Models (机器学习模型):决策树、随机森林、梯度提升机(如XGBoost、LightGBM)等传统机器学习算法也可以应用于时间序列预测。它们可以处理非线性和复杂的关系,但需要适当特征工程。

Deep Learning Models (深度学习模型):LSTM(长短期记忆网络)、GRU(门控循环单元)和其他类型的递归神经网络(RNNs)特别适用于捕捉长时间依赖关系的时间序列问题。CNN(卷积神经网络)也被用在某些情况下,例如当时间序列有局部相关性时。

VAR (Vector Autoregression):VAR模型用于多变量时间序列,即当有两个或更多相互关联的时间序列时。它可以同时预测多个时间序列之间的动态交互。

Bayesian Structural Time Series (贝叶斯结构化时间序列):该模型采用贝叶斯推断框架,可以包含外部因素作为解释变量,并提供概率分布形式的预测结果。

(具体关于这些模型的原理与实际应用我将在之后的文章中逐个介绍)

此上

你可能感兴趣的:(人工智能,算法,大数据)