Zeitreihen - Exponentielle Glättung

In diesem Kapitel werden wir über die Techniken sprechen, die bei der exponentiellen Glättung von Zeitreihen eine Rolle spielen.

Einfache exponentielle Glättung

Die exponentielle Glättung ist eine Technik zum Glätten univariater Zeitreihen durch Zuweisen exponentiell abnehmender Gewichte zu Daten über einen bestimmten Zeitraum.

Mathematisch ist der Wert der Variablen zum Zeitpunkt 't + 1', der zum Zeitpunkt t, y_ (t + 1 | t) gegeben ist, definiert als -

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

Dabei ist $ 0 \ leq \ alpha \ leq1 $ der Glättungsparameter und

$ y_ {1}, ...., y_ {t} $ sind vorherige Werte des Netzwerkverkehrs zu den Zeitpunkten 1, 2, 3,…, t.

Dies ist eine einfache Methode, um eine Zeitreihe ohne klaren Trend oder Saisonalität zu modellieren. Die exponentielle Glättung kann aber auch für Zeitreihen mit Trend und Saisonalität verwendet werden.

Dreifache exponentielle Glättung

Die dreifache exponentielle Glättung (TES) oder Holts Winter-Methode wendet die exponentielle Glättung dreimal an - die Ebenenglättung $ l_ {t} $, die Trendglättung $ b_ {t} $ und die saisonale Glättung $ S_ {t} $ mit $ \ alpha $ , $ \ beta ^ {*} $ und $ \ gamma $ als Glättungsparameter mit 'm' als Häufigkeit der Saisonalität, dh der Anzahl der Jahreszeiten pro Jahr.

Je nach Art der saisonalen Komponente hat TES zwei Kategorien:

  • Holt-Winter's Additive Method - Wenn die Saisonalität von Natur aus additiv ist.

  • Holt-Winter’s Multiplicative Method - Wenn die Saisonalität multiplikativer Natur ist.

Für nicht saisonale Zeitreihen haben wir nur Trendglättung und Pegelglättung, die als Holts lineare Trendmethode bezeichnet wird.

Versuchen wir, unsere Daten dreifach exponentiell zu glätten.

In [316]:

from statsmodels.tsa.holtwinters import ExponentialSmoothing

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

In [322]:

predictions_ = model_fit.predict(len(test))

In [325]:

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

Out [325]:

[<matplotlib.lines.Line2D at 0x1eab00f1cf8>]

Hier haben wir das Modell einmal mit einem Trainingssatz trainiert und machen dann weiterhin Vorhersagen. Ein realistischerer Ansatz besteht darin, das Modell nach einem oder mehreren Zeitschritten neu zu trainieren. Wenn wir die Vorhersage für die Zeit 't + 1' aus den Trainingsdaten 'bis zur Zeit' t 'erhalten, kann die nächste Vorhersage für die Zeit' t + 2 'unter Verwendung der Trainingsdaten' bis zur Zeit 't + 1' als die tatsächliche gemacht werden Der Wert bei 't + 1' ist dann bekannt. Diese Methode, Vorhersagen für einen oder mehrere zukünftige Schritte zu treffen und das Modell anschließend neu zu trainieren, wird als fortlaufende Vorhersage oder Vorwärtsvalidierung bezeichnet.