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

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

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

kanan

May 10, 2020
Tweet

More Decks by kanan

Other Decks in Programming

Transcript

  1. 予測モデルがポンコツになった日

    PyLadies Tokyo MeetUp 10MAY2020
    KANAN

    View full-size slide

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

    ● PyLadies Caravan STAFF

    ● 意外だと思うけど、お酒が大好き

    ● 趣味は宴、きゃんぷ、島旅

    ● 剣舞はじめて1年経ちました

    Name :
    KANAN(かなん)

    @Addition_quince
    https://www.facebook.com/kanae.ymst
    @_kanan_0518

    View full-size slide

  3. はなすこと

    ✅ 1年前時系列分析の勉強で状態空間モデルやってみた
    ✅ 今、同じモデルで予測してみた

    View full-size slide

  4. PyLadies Tokyo Advent Calendar 2019

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

    View full-size slide

  5. 時系列分析の大別

    ● 古典的手法(統計モデル以前):指数平滑か、Holt-Winters法 等

    ○ 時系列データの特徴の一部のみに焦点を当てた計算手法

    ○ 「過去と未来が似ている」「トレンドと周期性とホワイトノイズに分割できる」等


    ● 統計モデル:ARIMA, SARIMA, Box-Jenkins法, VAR, GARCH 等

    ○ 古典的手法を統計によって拡張、単純な構造で線形定常性データは精度が向上

    ○ 得られたデータの解釈や「予測の外れ具合」への言及など様々な活用が可能に


    ● 状態空間モデル 

    ○ 古典的手法や統計手法のさらなる拡張

    ○ 目に見えない「状態」を用いることで、時系列データをより柔軟にモデル化が可能


    ● 曲線フィッティング:prophet, 機械学習手法 等

    ○ 膨大な計算量を短時間に行えることにより、古典的手法を拡張

    ○ 例えば曲線による表現により特徴量設計が自動推定可能になるなど


    ● ニューラルネットワーク:LSTM 等

    ○ 長期的な依存関係を学習することができるようになる


    View full-size slide

  6. 使ったライブラリ

    StatsModelsは、

    統計モデルの推定や統計的検定などを実施するライブラリ。

    時系列系の手法もはいってる。


    View full-size slide

  7. KANANの日々のビール飲酒量

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

    View full-size slide

  8. MEAN

    1,149.438202 ㎖
    STANDARD DEVIETION

    818.448310 ㎖
    KANANのビール飲酒量は

    正規分布に従うとすると

    1.1㍑を平均として±0.8㍑(0.3㍑〜1.9㍑)の間に

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


    View full-size slide

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

    View full-size slide

  10. ※飲酒は用法・用量を守って正しくお使いください。

    ビール最高!


    View full-size slide

  11. 自己相関と

    偏自己相関

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

    View full-size slide

  12. 時系列データの

    成分分解

    ■成分分解
     statsmodels.tsa.seasonal.
    seasonal_decompose
    ● オリジナルデータ
    ● トレンド成分
    ● 季節成分
    ● 残差
    やはり7の周期性を検出
    季節成分 < 残差
    なのでやはり季節性は若干

    View full-size slide

  13. ブログの内容はここまで。


    View full-size slide

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

    ■状態空間モデル
      satsmodels.tsa.UnobservedComponents
    ● 状態空間モデル

    ○ 時系列データの中に隠れた因果関係を発見し、それをモデル化


    View full-size slide

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


    View full-size slide

  16. 状態空間モデル

    ローカルレベル

    ■上のグラフ
     黒い線⇨実測値
     青い線⇨1観測点先の推定値
     水色の帯⇨推定値の 95%信頼区間
    ■下のグラフ
     青い線⇨推定した状態 (平滑化済)
     水色の帯⇨推定値の 95%信頼区間

    View full-size slide

  17. 予測結果

    完全新規の予測


    View full-size slide

  18. 予測結果


    View full-size slide

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

    View full-size slide

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


    View full-size slide

  21. 状態空間モデル

    ローカルレベル

    季節性=7


    View full-size slide

  22. 予測結果

    完全新規の予測


    View full-size slide

  23. 状態空間モデルは外生変数も扱える

    ✅ スケジュール表からその日がどんな日だったか抽出
    ✅ 効きそうなものをフラグにしてみた

    View full-size slide

  24. プラス(+)に働きそうな要素

    ✅ TechEVENT と ぱーりー(大人数の飲み会)

    View full-size slide

  25. マイナス(−)に働きそうな要素

    ✅ 日本酒&WINE と 剣舞稽古 と 会社の勉強会(KanaLab.)

    View full-size slide

  26. 状態空間モデル

    ローカルレベル

    季節性=7

    多変量


    View full-size slide

  27. 予測結果

    完全新規の予測

    (説明変数だけ投入) 


    View full-size slide

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

    View full-size slide

  29. 時は流れ、2020年。

    ✅ 当時作ったモデルのまま予測し続けてみた
    ✅ 1FEB2020 - 9MAY2020 あたりをみてみる

    View full-size slide

  30. 予測が・・・


    View full-size slide

  31. 理由を考えてみる

    大人数の宴会自粛

    TechイベントがONLINE移行

    剣舞の稽古一時中止

    会社の勉強会自粛

    テレワーク開始(自宅飲酒開始)

    日本酒・ワインの飲酒増加

    ハイボールのコスパに気づく

    COVID-19影響で

    失われたあたり前だった日常


    View full-size slide

  32. まとめ

    ● 状態空間モデルでのビール飲酒量予測

    ○ 状態空間モデルはやはり柔軟な推定ができそう 

    ○ 時系列特有の成分(季節性など)調整や外生変数投入で精度もあがる 

    ○ でもやはり短期的予測には良いが、長期的予測は難しい 

    ○ 実際は常々直近の過去データを入れながら状態推定するのが正解 


    ● データ構造が変わるとモデルがぽんこつになる

    ○ 時系列分析のみでなく、どんな手法のモデルも過去のデータに依存 

    ○ 生活習慣が変わる=データ構造が変わる 

    ○ データ構造が変わるとモデルが正しく予測できなくなる(モデルの劣化) 

    ○ COVID-19で経済構造が変化 ⇨ モデルの再構築が必要かもしれない 


    View full-size slide

  33. ※飲酒は用法・用量を守って正しくお使いください。

    でもやっぱりビール最高!


    View full-size slide

  34. Thank you


    View full-size slide