Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

Who am I ? ● データ分析屋 研修講師 あたりやってます
 ● PyLadies Caravan STAFF
 ● 意外だと思うけど、お酒が大好き
 ● 趣味は宴、きゃんぷ、島旅
 ● 剣舞はじめて1年経ちました
 Name : KANAN(かなん)
 @Addition_quince https://www.facebook.com/kanae.ymst @_kanan_0518

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

時系列分析の大別
 ● 古典的手法(統計モデル以前):指数平滑か、Holt-Winters法 等 
 ○ 時系列データの特徴の一部のみに焦点を当てた計算手法
 ○ 「過去と未来が似ている」「トレンドと周期性とホワイトノイズに分割できる」等
 
 ● 統計モデル:ARIMA, SARIMA, Box-Jenkins法, VAR, GARCH 等 
 ○ 古典的手法を統計によって拡張、単純な構造で線形定常性データは精度が向上
 ○ 得られたデータの解釈や「予測の外れ具合」への言及など様々な活用が可能に
 
 ● 状態空間モデル 
 ○ 古典的手法や統計手法のさらなる拡張
 ○ 目に見えない「状態」を用いることで、時系列データをより柔軟にモデル化が可能
 
 ● 曲線フィッティング:prophet, 機械学習手法 等
 ○ 膨大な計算量を短時間に行えることにより、古典的手法を拡張
 ○ 例えば曲線による表現により特徴量設計が自動推定可能になるなど
 
 ● ニューラルネットワーク:LSTM 等
 ○ 長期的な依存関係を学習することができるようになる


Slide 6

Slide 6 text

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


Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

MEAN
 1,149.438202 ㎖ STANDARD DEVIETION
 818.448310 ㎖ KANANのビール飲酒量は
 正規分布に従うとすると
 1.1㍑を平均として±0.8㍑(0.3㍑〜1.9㍑)の間に
 期間中60%が含まれるということになる。


Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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


Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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


Slide 14

Slide 14 text

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


Slide 15

Slide 15 text

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


Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

予測結果
 完全新規の予測


Slide 18

Slide 18 text

予測結果


Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

ローカルレベルモデル


Slide 21

Slide 21 text

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


Slide 22

Slide 22 text

予測結果
 完全新規の予測


Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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


Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

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


Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

予測が・・・


Slide 32

Slide 32 text

理由を考えてみる
 大人数の宴会自粛
 TechイベントがONLINE移行 
 剣舞の稽古一時中止
 会社の勉強会自粛
 テレワーク開始(自宅飲酒開始) 
 日本酒・ワインの飲酒増加 
 ハイボールのコスパに気づく 
 COVID-19影響で
 失われたあたり前だった日常


Slide 33

Slide 33 text

まとめ
 ● 状態空間モデルでのビール飲酒量予測
 ○ 状態空間モデルはやはり柔軟な推定ができそう 
 ○ 時系列特有の成分(季節性など)調整や外生変数投入で精度もあがる 
 ○ でもやはり短期的予測には良いが、長期的予測は難しい 
 ○ 実際は常々直近の過去データを入れながら状態推定するのが正解 
 
 ● データ構造が変わるとモデルがぽんこつになる
 ○ 時系列分析のみでなく、どんな手法のモデルも過去のデータに依存 
 ○ 生活習慣が変わる=データ構造が変わる 
 ○ データ構造が変わるとモデルが正しく予測できなくなる(モデルの劣化) 
 ○ COVID-19で経済構造が変化 ⇨ モデルの再構築が必要かもしれない 
 


Slide 34

Slide 34 text

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


Slide 35

Slide 35 text

Thank you