📜  时间序列-指数平滑

📅  最后修改于: 2020-12-10 06:26:43             🧑  作者: Mango


在本章中,我们将讨论时间序列的指数平滑所涉及的技术。

简单指数平滑

指数平滑是一种通过在一段时间内为数据分配指数递减的权重来平滑单变量时间序列的技术。

数学上,在时间t处给定时间t y_(t + 1 | t)的值在时间“ t + 1”处的变量的值定义为-

$$ y_ {t + 1 | t} \:= \:\ alpha y_ {t} \:+ \:\ alpha \ lgroup1-\ alpha \ rgroup y_ {t-1} \:+ \ alpha \ lgroup1- \ alpha \ rgroup ^ {2} \:y_ {t-2} \:+ \:… + y_ {1} $$

其中, $ 0 \ leq \ alpha \ leq1 $是平滑参数,并且

$ y_ {1},….,y_ {t} $是时间1、2、3,…,t的网络流量的先前值。

这是对没有明确趋势或季节性的时间序列建模的简单方法。但是,指数平滑也可以用于具有趋势和季节性的时间序列。

三重指数平滑

三重指数平滑(TES)或Holt的Winter方法,应用了三次指数平滑-水平平滑$ l_ {t} $,趋势平滑$ b_ {t} $和季节性平滑$ S_ {t} $,其中$ \ alpha $ ,$ \ beta ^ {** $和$ \ gamma $作为平滑参数,其中’m’为季节性频率,即一年中的季节数。

根据季节性因素的性质,TES有两类:

  • Holt-Winter的加法-当季节性本质上是加法时。

  • Holt-Winter的乘法法-当季节性本质上是乘法时。

对于非季节时间序列,我们只有趋势平滑和水平平滑,这称为Holt线性趋势方法。

让我们尝试对数据应用三重指数平滑。

在[316]中:

from statsmodels.tsa.holtwinters import ExponentialSmoothing

model = ExponentialSmoothing(train.values, trend= )
model_fit = model.fit()

在[322]中:

predictions_ = model_fit.predict(len(test))

在[325]中:

plt.plot(test.values)
plt.plot(predictions_[1:1871])

出[325]:

[]

代码段17

在这里,我们使用训练集对模型进行了一次训练,然后继续进行预测。一种更现实的方法是在一个或多个时间步长之后重新训练模型。当我们从训练数据’til time’t’得到时间’t + 1’的预测时,可以使用训练数据’til time’t + 1’作为实际的时间来进行时间’t + 2’的下一个预测这样就知道了“ t + 1”的值。这种对一个或多个未来步骤进行预测,然后重新训练模型的方法称为滚动预测或前瞻性验证。