Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up for free
予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT
kanan
May 10, 2020
Programming
0
240
予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT
kanan
May 10, 2020
Tweet
Share
More Decks by kanan
See All by kanan
Python入門_PyLadiesTokyo2021/08/29
kanan
0
150
コトハジメ的Python入門_WiDS広島
kanan
0
59
Python入門(PyLadies Caravan in Hokkaido)
kanan
3
190
【PyLadies Caravan】大人のためのPython入門 in 愛媛
kanan
0
290
Python入門(PyLadies Caravan in Aichi)
kanan
0
230
PyCon2019体験記-case:KANAN-
kanan
1
560
大人のためのPython入門in京都.pdf
kanan
0
210
Pythonistaに憧れた分析屋の奮闘記
kanan
0
970
Other Decks in Programming
See All in Programming
ES2022の新機能
smt7174
0
250
Jetpack Composeでの画面遷移
iwata_n
0
170
[월간 데이터리안 세미나 6월] 스스로 성장하는 분석가 커리어 이야기
datarian
0
210
こそこそアジャイル導入しようぜ!
ichimichi
0
1.2k
Node.jsデザインパターンを読んで
mmmommm
0
2.6k
オブジェクト指向で挫折する初学者へ
deepoil
0
160
Android Compose Component - mapping.
taehwandev
0
140
Cybozu GoogleI/O 2022 LT会 - Input for all screens
jaewgwon
0
320
1時間半で克服するJavaScriptの非同期処理/async_javascript_kokufuku
marchin1989
2
620
Lancersをコンテナへ本番移行する取り組み
rvirus0817
1
330
Jetpack Compose, 어디까지 알고 있을까?
jisungbin
0
110
シェーダー氷山発掘記
logilabo
0
140
Featured
See All Featured
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Designing Dashboards & Data Visualisations in Web Apps
destraynor
224
49k
Documentation Writing (for coders)
carmenhchung
48
2.6k
Happy Clients
brianwarren
89
5.6k
Building Your Own Lightsaber
phodgson
94
4.6k
Side Projects
sachag
450
37k
A Philosophy of Restraint
colly
192
15k
From Idea to $5000 a Month in 5 Months
shpigford
373
44k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
351
21k
WebSockets: Embracing the real-time Web
robhawkes
57
5.2k
Building Applications with DynamoDB
mza
83
4.7k
How GitHub (no longer) Works
holman
296
140k
Transcript
予測モデルがポンコツになった日 PyLadies Tokyo MeetUp 10MAY2020 KANAN
Who am I ? • データ分析屋 研修講師 あたりやってます • PyLadies
Caravan STAFF • 意外だと思うけど、お酒が大好き • 趣味は宴、きゃんぷ、島旅 • 剣舞はじめて1年経ちました Name : KANAN(かなん) @Addition_quince https://www.facebook.com/kanae.ymst @_kanan_0518
はなすこと ✅ 1年前時系列分析の勉強で状態空間モデルやってみた ✅ 今、同じモデルで予測してみた
PyLadies Tokyo Advent Calendar 2019 当時、状態空間モデルの勉強をしてたので、 自分のビールの飲酒量を時系列データとして見てみた的なブログ。 自己相関や時系列の成分分解をやった ✅ 時系列データで自分の生活と向き合う(05DEC2019)
✅ https://asunasa.hatenablog.com/entry/2019/12/05/121918
時系列分析の大別 • 古典的手法(統計モデル以前):指数平滑か、Holt-Winters法 等 ◦ 時系列データの特徴の一部のみに焦点を当てた計算手法 ◦ 「過去と未来が似ている」「トレンドと周期性とホワイトノイズに分割できる」等
• 統計モデル:ARIMA, SARIMA, Box-Jenkins法, VAR, GARCH 等 ◦ 古典的手法を統計によって拡張、単純な構造で線形定常性データは精度が向上 ◦ 得られたデータの解釈や「予測の外れ具合」への言及など様々な活用が可能に • 状態空間モデル ◦ 古典的手法や統計手法のさらなる拡張 ◦ 目に見えない「状態」を用いることで、時系列データをより柔軟にモデル化が可能 • 曲線フィッティング:prophet, 機械学習手法 等 ◦ 膨大な計算量を短時間に行えることにより、古典的手法を拡張 ◦ 例えば曲線による表現により特徴量設計が自動推定可能になるなど • ニューラルネットワーク:LSTM 等 ◦ 長期的な依存関係を学習することができるようになる
使ったライブラリ StatsModelsは、 統計モデルの推定や統計的検定などを実施するライブラリ。 時系列系の手法もはいってる。
KANANの日々のビール飲酒量 期間は01FEB2019 - 30APR2019。 あくまでビールだけ。他のお酒は含まない。 多い日は3.0㍑飲む日も。
MEAN 1,149.438202 ㎖ STANDARD DEVIETION 818.448310 ㎖ KANANのビール飲酒量は 正規分布に従うとすると 1.1㍑を平均として±0.8㍑(0.3㍑〜1.9㍑)の間に
期間中60%が含まれるということになる。
実際は正規分布なわけない。 あ。でもわりといい感じ。
※飲酒は用法・用量を守って正しくお使いください。 ビール最高!
自己相関と 偏自己相関 ▪自己相関 statsmodels.tsa.stattools. acf ▪偏自己相関 statsmodels.tsa.stattools. pacf 若干7の周期性がありそう
時系列データの 成分分解 ▪成分分解 statsmodels.tsa.seasonal. seasonal_decompose • オリジナルデータ • トレンド成分 •
季節成分 • 残差 やはり7の周期性を検出 季節成分 < 残差 なのでやはり季節性は若干
ブログの内容はここまで。
状態空間モデルで予測してみた ▪状態空間モデル satsmodels.tsa.UnobservedComponents • 状態空間モデル ◦ 時系列データの中に隠れた因果関係を発見し、それをモデル化
状態空間モデルで予測してみた
状態空間モデル ローカルレベル ▪上のグラフ 黒い線⇨実測値 青い線⇨1観測点先の推定値 水色の帯⇨推定値の 95%信頼区間 ▪下のグラフ 青い線⇨推定した状態 (平滑化済)
水色の帯⇨推定値の 95%信頼区間
予測結果 完全新規の予測
予測結果
前の状態が更新されないから、動かない予測に ファッ!? (゜Д゜;) “ あかん”
ローカルレベルモデル
状態空間モデル ローカルレベル 季節性=7
予測結果 完全新規の予測
状態空間モデルは外生変数も扱える ✅ スケジュール表からその日がどんな日だったか抽出 ✅ 効きそうなものをフラグにしてみた
プラス(+)に働きそうな要素 ✅ TechEVENT と ぱーりー(大人数の飲み会)
マイナス(−)に働きそうな要素 ✅ 日本酒&WINE と 剣舞稽古 と 会社の勉強会(KanaLab.)
状態空間モデル ローカルレベル 季節性=7 多変量
None
予測結果 完全新規の予測 (説明変数だけ投入)
それっぽい動きをちゃんとしている ここで時系列ではなく線形回帰でいけそうなことに気づく “ 良い感じ”
時は流れ、2020年。 ✅ 当時作ったモデルのまま予測し続けてみた ✅ 1FEB2020 - 9MAY2020 あたりをみてみる
予測が・・・
理由を考えてみる 大人数の宴会自粛 TechイベントがONLINE移行 剣舞の稽古一時中止 会社の勉強会自粛 テレワーク開始(自宅飲酒開始) 日本酒・ワインの飲酒増加
ハイボールのコスパに気づく COVID-19影響で 失われたあたり前だった日常
まとめ • 状態空間モデルでのビール飲酒量予測 ◦ 状態空間モデルはやはり柔軟な推定ができそう ◦ 時系列特有の成分(季節性など)調整や外生変数投入で精度もあがる ◦
でもやはり短期的予測には良いが、長期的予測は難しい ◦ 実際は常々直近の過去データを入れながら状態推定するのが正解 • データ構造が変わるとモデルがぽんこつになる ◦ 時系列分析のみでなく、どんな手法のモデルも過去のデータに依存 ◦ 生活習慣が変わる=データ構造が変わる ◦ データ構造が変わるとモデルが正しく予測できなくなる(モデルの劣化) ◦ COVID-19で経済構造が変化 ⇨ モデルの再構築が必要かもしれない
※飲酒は用法・用量を守って正しくお使いください。 でもやっぱりビール最高!
Thank you