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
What's new in Android development tools まとめ
mkeeda
0
390
Gitlab CIでMRを自動生成する
forcia_dev_pr
0
120
LINE Messaging APIの概要 - LINE API総復習シリーズ
uezo
1
190
Oracle REST Data Service: APEX Office Hours
thatjeffsmith
0
800
Independently together: better developer experience & App performance
bcinarli
0
190
Licences open source : entre guerre de clochers et radicalité
pylapp
2
510
VisualProgramming_GoogleHome_LINE
nearmugi
1
230
クックパッドマートの失敗したデータ設計 Before / After 大放出
mokuzon
0
180
GoogleI/O2022 LT報告会資料
shinsukefujita1126
0
400
"What's new in Swift"の要約 / swift_5_7_summary
uhooi
1
340
BASE BANKチームの技術選定と歴史 / how to decide technology selection for startup
budougumi0617
0
1.4k
Angular‘s Future without NgModules: Architectures with Standalone Components @enterJS
manfredsteyer
PRO
0
250
Featured
See All Featured
Infographics Made Easy
chrislema
233
17k
YesSQL, Process and Tooling at Scale
rocio
157
12k
How New CSS Is Changing Everything About Graphic Design on the Web
jensimmons
213
11k
The Straight Up "How To Draw Better" Workshop
denniskardys
225
120k
Intergalactic Javascript Robots from Outer Space
tanoku
261
25k
Atom: Resistance is Futile
akmur
255
20k
Designing for humans not robots
tammielis
241
23k
Documentation Writing (for coders)
carmenhchung
48
2.6k
Build your cross-platform service in a week with App Engine
jlugia
219
17k
Building a Scalable Design System with Sketch
lauravandoore
448
30k
Why You Should Never Use an ORM
jnunemaker
PRO
47
7.6k
Imperfection Machines: The Place of Print at Facebook
scottboms
253
12k
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