RRDtoolのPrediction

RRDtoolでも異常検知機能が備わっているので、とりあえず勉強のために翻訳しておく。 Aberrant Behavior Detection with Holt-Winters Forecasting

RRDtoolでは、Holt-Wintersの指数平滑化法を使ってるぽい。 そういえば、@kzk_moverも

とかいって、こんなのを作ってる (paperはこちら )。

翻訳は以下

Holt-Winters 予測での異常振舞検知

アグリゲート関数に加えて、RRDtoolでも、データの平滑化(Holt-Winters 予測アルゴリズム)、信頼区間、時系列データソース中の異常振舞にフラグを立てるなどの機能を提供する関数があります。

  • RRA:HWPREDICT:rows:alpha:beta:seasonal period[:rra-num]
  • RRA:MHWPREDICT:rows:alpha:beta:seasonal period[:rra-num]
  • RRA:SEASONAL:seasonal period:gamma:rra-num[:smoothing-window=fraction]
  • RRA:DEVSEASONAL:seasonal period:gamma:rra-num[:smoothing-window=fraction]
  • RRA:DEVPREDICT:rows:rra-num
  • RRA:FAILURES:rows:threshold:window length:rra-num

これらのRRAは真のconsolidation functionとはいくつかの点で異なっています。 まず、RRAはすべてのプライマリデータごとに更新される点。2つ目は、これらのRRAは相互依存している点です。 リアルタイムで信頼限界を生成するためには、SEASONAL, DEVSEASONAL, DEVPREDICTのセットと、HWPPREDICTまたはMHWPREDICTが存在していなければなりません。 プライマリデータの平滑化値を得るためには、SEASONAL RRAとHWPREDICTまたはMHWPREDICT RRAのどちらかが必要になります。 異常振舞検知はFAILURES, DEVSEASONAL, SEASONALそれとHWPREDICTまたはMHWPREDICTがなければなりません。

予測された、または平滑化された値は、HWPREDICTまたはMHWPREDICT RRAに保持されます。 HWPREDICTとMHWPREDICTは実際には、Holt-Wintersメソッドの2つの変動です。*1 これらは相互交換可能です。どちらもデータをbaseline, trend, seasonal coefficientの3つの要素に分解するためのものです。HWPREDICTがbaselineにseasonal coefficientを加えて予測を生成するのに対して、MHWPREDICTはbaselineにseasonal coefficientを掛けあわせて生成します。seasonの間でbaselineの変化が有意である場合に、この違いは大きな意味を持ちます。HWPREDICTはbaselineの変化に対してseasonalityが安定であると予測しますが、MHWPREDICTはbaselineに比例してseasonalityが成長または縮小すると予測します。モデル化される事象自体に応じて適切なメソッドの選択が必要です。単純化のために、これ以降はHWPREDICTとして議論しますが、適宜、MHWPREDICTに置き換えてください。

予測された偏差はDEVPREDICT (信頼区間のためにスケールされた標準偏差だと考えてください) に保持されます。また、FAILURES RRA にはbinary indicatorが保持されています。1は失敗と観測されたindexを示します。これは観測のpreceding windowにおいて信頼限界を違反した数または特定の閾値を超えた数を示します。これらのRRAを用いて信頼限界と失敗をグラフ化した例はrrdgraphで見ることができます。

SEASONALとDEVSEASONAL RRAはHolt-Winters 予測アルゴリズムのseasonal coefficientとseasonal deviationをそれぞれ保持しています。seasonal cycleの観測時刻ごとに一つ記録されます。例えば、5分おきにプライマリデータが生成され、seasonal cycleが1日だとすると、SEASONALおよびDEVSEASONALは288の列になります。

初学者の理解をシンプルにするために、HWPREDICT, SEASONAL, DEVPREDICT, DEVSEASONALおよびFAILURES RRAの明示的なサポートに加え、HWPREDICTだけが指定され、最終引数のrra-numが省略された場合には、非明示的に残りの4つをRRDtoolが生成するコマンドもサポートしています。

(※ 以下、変数の説明と使い方、など。使い方については割愛)

  • rows RRAの近傍の長さを指定します。
  • seasonal period seasonal cycleにおけるプライマリデータの数を指定します。
  • alpha Holt-Winters 予測アルゴリズムの切片(またはbaseline) 係数の変更パラメタを指定します。範囲は [0, 1]になります。1に近づくほど予測のbaseline要素において、最近の観測結果が大きな影響を与え、0に近づくほど過去の記録が影響をあたえることを意味します。
  • base Holt-Winters 予測アルゴリズムのslope (または線形トレンド) 係数の変更パラメタを指定します。 beta の範囲は[0, 1]です。alphaと同じように線形トレンドの挙動を変化させます。
  • gamma Holt-Winters 予測アルゴリズム (HWPREDICT)の seasonal coefficient または指数平滑化法の季節変動を更新する変更パラメタを指定します。範囲は[0, 1]の間です。1回のseasonal cycle に対して、1つの seasonal coefficient が存在するため baseline と比較して変化の割合は緩やかになります。
  • smoothing-window 各点で平均化されるべき season の割合を指定します。*2
  • rra-num 関係するRRAの間の結びつきを指定します。各RRAで指定するrra-numの意味は次のようになります。

    • HWPREDICT rra-num is the index of the SEASONAL RRA.
    • SEASONAL rra-num is the index of the HWPREDICT RRA.
    • DEVPREDICT rra-num is the index of the DEVSEASONAL RRA.
    • DEVSEASONAL rra-num is the index of the HWPREDICT RRA.
    • FAILURES rra-num is the index of the DEVSEASONAL RRA.
  • threshold 失敗と判定するための窓に含まれる違反(信頼限界を超える観測値)の最小値を指定します。

  • window length 窓に含まれる数を指定します。threshold以上28以下にセットします。

*1:読み切れてないので後で直せたら直す

*2:要調査