Upgrade to Pro — share decks privately, control downloads, hide ads and more …

予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT

 予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT

1ab7961f262b03658529a69af612187f?s=128

kanan

May 10, 2020
Tweet

Transcript

  1. 予測モデルがポンコツになった日
 PyLadies Tokyo MeetUp 10MAY2020 KANAN

  2. Who am I ? • データ分析屋 研修講師 あたりやってます
 • PyLadies

    Caravan STAFF
 • 意外だと思うけど、お酒が大好き
 • 趣味は宴、きゃんぷ、島旅
 • 剣舞はじめて1年経ちました
 Name : KANAN(かなん)
 @Addition_quince https://www.facebook.com/kanae.ymst @_kanan_0518
  3. はなすこと
 ✅ 1年前時系列分析の勉強で状態空間モデルやってみた ✅ 今、同じモデルで予測してみた

  4. PyLadies Tokyo Advent Calendar 2019
 当時、状態空間モデルの勉強をしてたので、 自分のビールの飲酒量を時系列データとして見てみた的なブログ。 自己相関や時系列の成分分解をやった ✅ 時系列データで自分の生活と向き合う(05DEC2019)

    ✅ https://asunasa.hatenablog.com/entry/2019/12/05/121918
  5. 時系列分析の大別
 • 古典的手法(統計モデル以前):指数平滑か、Holt-Winters法 等 
 ◦ 時系列データの特徴の一部のみに焦点を当てた計算手法
 ◦ 「過去と未来が似ている」「トレンドと周期性とホワイトノイズに分割できる」等
 


    • 統計モデル:ARIMA, SARIMA, Box-Jenkins法, VAR, GARCH 等 
 ◦ 古典的手法を統計によって拡張、単純な構造で線形定常性データは精度が向上
 ◦ 得られたデータの解釈や「予測の外れ具合」への言及など様々な活用が可能に
 
 • 状態空間モデル 
 ◦ 古典的手法や統計手法のさらなる拡張
 ◦ 目に見えない「状態」を用いることで、時系列データをより柔軟にモデル化が可能
 
 • 曲線フィッティング:prophet, 機械学習手法 等
 ◦ 膨大な計算量を短時間に行えることにより、古典的手法を拡張
 ◦ 例えば曲線による表現により特徴量設計が自動推定可能になるなど
 
 • ニューラルネットワーク:LSTM 等
 ◦ 長期的な依存関係を学習することができるようになる

  6. 使ったライブラリ
 StatsModelsは、
 統計モデルの推定や統計的検定などを実施するライブラリ。
 時系列系の手法もはいってる。


  7. KANANの日々のビール飲酒量
 期間は01FEB2019 - 30APR2019。 あくまでビールだけ。他のお酒は含まない。 多い日は3.0㍑飲む日も。

  8. MEAN
 1,149.438202 ㎖ STANDARD DEVIETION
 818.448310 ㎖ KANANのビール飲酒量は
 正規分布に従うとすると
 1.1㍑を平均として±0.8㍑(0.3㍑〜1.9㍑)の間に


    期間中60%が含まれるということになる。

  9. 実際は正規分布なわけない。 あ。でもわりといい感じ。

  10. ※飲酒は用法・用量を守って正しくお使いください。
 ビール最高!


  11. 自己相関と
 偏自己相関
 ▪自己相関  statsmodels.tsa.stattools. acf ▪偏自己相関  statsmodels.tsa.stattools. pacf 若干7の周期性がありそう

  12. 時系列データの
 成分分解
 ▪成分分解  statsmodels.tsa.seasonal. seasonal_decompose • オリジナルデータ • トレンド成分 •

    季節成分 • 残差 やはり7の周期性を検出 季節成分 < 残差 なのでやはり季節性は若干
  13. ブログの内容はここまで。


  14. 状態空間モデルで予測してみた
 ▪状態空間モデル   satsmodels.tsa.UnobservedComponents • 状態空間モデル
 ◦ 時系列データの中に隠れた因果関係を発見し、それをモデル化


  15. 状態空間モデルで予測してみた


  16. 状態空間モデル
 ローカルレベル
 ▪上のグラフ  黒い線⇨実測値  青い線⇨1観測点先の推定値  水色の帯⇨推定値の 95%信頼区間 ▪下のグラフ  青い線⇨推定した状態 (平滑化済)

     水色の帯⇨推定値の 95%信頼区間
  17. 予測結果
 完全新規の予測


  18. 予測結果


  19. 前の状態が更新されないから、動かない予測に ファッ!? (゜Д゜;) “ あかん”

  20. ローカルレベルモデル


  21. 状態空間モデル
 ローカルレベル
 季節性=7


  22. 予測結果
 完全新規の予測


  23. 状態空間モデルは外生変数も扱える
 ✅ スケジュール表からその日がどんな日だったか抽出 ✅ 効きそうなものをフラグにしてみた

  24. プラス(+)に働きそうな要素
 ✅ TechEVENT と ぱーりー(大人数の飲み会)

  25. マイナス(−)に働きそうな要素
 ✅ 日本酒&WINE と 剣舞稽古 と 会社の勉強会(KanaLab.)

  26. 状態空間モデル
 ローカルレベル
 季節性=7
 多変量


  27. None
  28. 予測結果
 完全新規の予測
 (説明変数だけ投入) 


  29. それっぽい動きをちゃんとしている ここで時系列ではなく線形回帰でいけそうなことに気づく “ 良い感じ”

  30. 時は流れ、2020年。
 ✅ 当時作ったモデルのまま予測し続けてみた ✅ 1FEB2020 - 9MAY2020 あたりをみてみる

  31. 予測が・・・


  32. 理由を考えてみる
 大人数の宴会自粛
 TechイベントがONLINE移行 
 剣舞の稽古一時中止
 会社の勉強会自粛
 テレワーク開始(自宅飲酒開始) 
 日本酒・ワインの飲酒増加 


    ハイボールのコスパに気づく 
 COVID-19影響で
 失われたあたり前だった日常

  33. まとめ
 • 状態空間モデルでのビール飲酒量予測
 ◦ 状態空間モデルはやはり柔軟な推定ができそう 
 ◦ 時系列特有の成分(季節性など)調整や外生変数投入で精度もあがる 
 ◦

    でもやはり短期的予測には良いが、長期的予測は難しい 
 ◦ 実際は常々直近の過去データを入れながら状態推定するのが正解 
 
 • データ構造が変わるとモデルがぽんこつになる
 ◦ 時系列分析のみでなく、どんな手法のモデルも過去のデータに依存 
 ◦ 生活習慣が変わる=データ構造が変わる 
 ◦ データ構造が変わるとモデルが正しく予測できなくなる(モデルの劣化) 
 ◦ COVID-19で経済構造が変化 ⇨ モデルの再構築が必要かもしれない 
 

  34. ※飲酒は用法・用量を守って正しくお使いください。
 でもやっぱりビール最高!


  35. Thank you