Time-series-exponential-smoothing

提供:Dev Guides
移動先:案内検索

時系列-指数平滑法

この章では、時系列の指数平滑化に関連する手法について説明します。

単純な指数平滑法

指数平滑法は、指数関数的に減少する重みを一定期間にわたってデータに割り当てることにより、単変量時系列を平滑化する手法です。

数学的には、時刻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におけるネットワークトラフィックの以前の値です。

これは、明確な傾向や季節性のない時系列をモデル化する簡単な方法です。 ただし、指数平滑法は、傾向と季節性のある時系列にも使用できます。

トリプル指数平滑化

Triple Exponential Smoothing(TES)またはHoltのWinterメソッドは、指数平滑化を3回適用します-レベル平滑化$ l _ \ {t} $、トレンド平滑化$ b _ \ {t} $、季節平滑化$ S _ \ {t} $、$ \ alpha $、$ \ beta ^ \ {*} $および$ \ gamma $は、季節性の頻度が「m」の平滑化パラメーターです。つまり、 1年の季節の数。

季節的要素の性質によると、TESには2つのカテゴリーがあります-

  • * Holt-Winterの加法*-季節性が本質的に加法である場合。
  • * Holt-Winterの乗法*-季節性が本質的に乗法である場合。

非季節時系列の場合、トレンド平滑化とレベル平滑化のみがあり、これはホルトの線形トレンド法と呼ばれます。

データに三重指数平滑法を適用してみましょう。

[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]:

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

コードスニペット17

ここでは、トレーニングセットを使用してモデルを一度トレーニングし、その後予測を続けています。 より現実的なアプローチは、1つ以上のタイムステップの後にモデルを再トレーニングすることです。 時間「t + 1」のトレーニングデータから時間「t + 1」の予測を取得すると、時間「t + 2」の次の予測は、トレーニングデータ「til時間「t + 1」」を実際に使用して行うことができます’t + 1’の値はそのとき知られます。 1つ以上の将来のステップの予測を行い、モデルを再トレーニングするこの方法は、ローリングフォーキャストまたはウォークフォワード検証と呼ばれます。