29
Multiple Seasonal Holt Winters の紹介と 時系列予測を実務に 適用するときの課題の共有 @muddydixon

Jubatus casulatalks2

Embed Size (px)

DESCRIPTION

Jubatus Casual Talks #2 (異常検知)の資料です

Citation preview

Page 1: Jubatus casulatalks2

Multiple Seasonal Holt Winters の紹介と

時系列予測を実務に 適用するときの課題の共有

@muddydixon

Page 2: Jubatus casulatalks2

自己紹介ニフティクラウドの中のヒト 使ってください

CROSSの中のヒト お越しください

落ち着きなく色々やっています mongo-hadoop Node.js HTML5 fluent-plugin-(datacalculator|filter|anomalydetect)

Page 3: Jubatus casulatalks2

メニューfluent-plugin-anomalydetect Holt Winters概要 Simple / Weighted Moving Average Exponential Smoothing Holt Winters seasonal method Multiple Seasonal Holt Winters extends Dual Seasonal (Gould, 2008) Multiple Seasonal Holt Winters 実装とデモ

Page 4: Jubatus casulatalks2

fluent-plugin- anomalydetect

(主に)時系列データを入力し、時系列データにおける入力データの生起確率を計算し、出力するfluentのplugin 注:パラメタがセッティングが難しいです

Page 5: Jubatus casulatalks2

Change Finder

予測モデルを作成し、実際の入力が発生する確率∝損失・スコアにし、異常値の度合いを求める

http://www.slideshare.net/yokkuns/tokyo-r15

Page 6: Jubatus casulatalks2

「月に何回くらい」って調整はできるかも

「異常は異常なので」以上なら何度でも・・・

Page 7: Jubatus casulatalks2

参考図書

Page 8: Jubatus casulatalks2
Page 9: Jubatus casulatalks2

Holt Winters概要移動平均法のひとつの指数平滑化法(exponential smoothing)に対して季節性・周期性の概念を導入した手法 triple exponential smoothingともいう !

結局異常検知は予測モデルに対しての外れ度合いを計算するので、より精度の高い予測モデルが必要になる そのモデルに制約があったとしても、制約下の条件で適用すればよい(例:周期性など)

Holt Wintersは予測に利用できるひとつのアルゴリズム RRDToolでも利用されている

Page 10: Jubatus casulatalks2
Page 11: Jubatus casulatalks2

使いどころサーバリソースの推定 近傍の傾向だけではなく過去の周期性を元に推定する(例えば先月、例えば昨年) 異常値がそのまま膨れていかないかを知る 売り上げの在庫管理 売れる周期の予測モデルを元に仕入れ

Page 12: Jubatus casulatalks2

ざっくり系列の要因を3つに分ける 1. ベースライン 2. トレンド 3. 季節性 上記3つを使ってm時刻先の予測ができる! (ちなみに→のstlはETSかARIMAを使ってる ETSはいわゆる平滑化)

plot(stl(UKgas, s.window=“per”))

Page 13: Jubatus casulatalks2

Simple / Weighted Moving Average

移動平均:ARIMA=AR / I / MAの「MA」 「将来の値は過去のk個の値で表現できるよ!」というモデル Simple MA !

Weighted MA

Page 14: Jubatus casulatalks2

Exponential Smoothing入力と前時間の平滑化をパラメタαでならしていく αが大きければ入力に感度が高く、小さければより平滑化される

m時刻後の予測値は

Page 15: Jubatus casulatalks2

Double Exponential Smoothing

予測値をベースラインとトレンドに分解して両者を指数平滑化 s_t: ベースライン、b_t: トレンド 時刻m後の予測は

Page 16: Jubatus casulatalks2

Triple Exponential Smoothing

季節性(間隔L)を加味した指数平滑化 モードは2つ: multiplicative additive 季節性が「比率」の時はmultiplicative、「絶対量」の時はadditive Triple Exponential SmoothingをHolt-Winters methodと呼ぶ

Page 17: Jubatus casulatalks2

Triple Exponential Smoothing

季節性(間隔L)を加味した指数平滑化 更新式

Page 18: Jubatus casulatalks2

概念ベースライン:移動平均 トレンド:近傍で上りか下りか 季節性:周期的な移動平均 先々月はこうだった、先月はこうだった、今月は・・・ 参考:Seasonal ARIMA

Page 19: Jubatus casulatalks2

Double Seasonal Holt Winters (Taylor, 2003)2つの季節性を加味したモデル 従来のHWやARIMAよりも良い予測成績 といいつつそうでもないのでAR(1)で誤差の影響を加味したら良くなったよ!

Page 20: Jubatus casulatalks2

1日後 の予測

Page 21: Jubatus casulatalks2

Multiple Seasonal Holt Winters (Gould, 2008)Multipleといいつつ、Taylor(2007)のDSの抽象化を行ったモデル (結局2つの周期性のみ) かつ魔術的なパラメタ(月~木、金、土、日をまとめよう!とか)が入ってる ただ、予測に必要な変数自体の削減はできる

Page 22: Jubatus casulatalks2

(真の)Multiple Seasonal Holt Winters

l個の季節性を加味したモデル 自己相関関数から求まるピークを周期性として利用 推定に必要なパラメタは多い・・・ 季節性毎の平滑化パラメタのフィッティングも必要

Page 23: Jubatus casulatalks2

demo

Page 24: Jubatus casulatalks2

実適用上の課題24 x 7 x X という形式ばかりではない 周期性をどのように抽出するか

Seasonalityを破壊する要因 月という困った概念(28, 30, 31日)→例:給料日 第X月曜という困った概念→例:成人の日 四半期という困った概念 うるう年という困った概念

解決方法 季節性パラメタを吸収するラッパメソッド c_{i,t+m-L_i}に対して「毎月25日」を求めるとか

Page 25: Jubatus casulatalks2

実装したいと思っていること パラメタの分割

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

0 1 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23

1日

1週間

仮に周期性が24(時間:15時), 168(週:金曜), 720(月:第一集)で見られた場合、これを全部組み込もうと思うと720の(履歴)パラメタを持たなければならない これを月・七曜・時間毎に持ち、それらをc_iとして計算する

ここを 推定したい

Page 26: Jubatus casulatalks2

参考文献Forecasting Time Series with Multiple Seasonal Patterns, European Journal of Operational Research (2008), 191(1), 207‒220, Phillip G. Gould, Anne B. Koehler, Keith Ord, Ralph D. Snyder, Rob J. Hyndman1 and Farshid Vahid-Araghi Short-term electricity demand forecasting using double sea- sonal exponential smoothing, Journal of Operational Research Society, 54, 799‒805 (2003), James W. Taylor Texts, 7 Exponential smoothing, https://www.otexts.org/fpp/7

Page 27: Jubatus casulatalks2

宣伝1採用募集中です クラウドのデータあります 現在、仮想・物理の障害予測や異常箇所特定の迅速化、アラート、自動対応の準備中 パートナー企業のデータあります 某社のデータを匿名化して解析・予測、結果の可視化を行い、売り上げ向上のためのシステム アルファ提供

Page 28: Jubatus casulatalks2

宣伝2@slaさんによるセッションもあります CROSS2014 お越しください 例年並みにチケットが売れていません

Page 29: Jubatus casulatalks2

イベント概要