Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
kanan
May 10, 2020
Programming
460
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
予測モデルがポンコツになった日_PyLadiesTokyo10May2020-LT
kanan
May 10, 2020
More Decks by kanan
See All by kanan
Pythonデータ分析コトハジメinFukuoka
kanan
0
130
Pythonデータ分析コトハジメin静岡
kanan
0
130
Python超入門データ分析編-PyLadiesCaravan広島2nd-
kanan
0
140
PyLadiesCaravan_in_苫小牧
kanan
0
150
Python超入門_データ分析編in青森
kanan
0
220
Pythonデータ分析コトハジメin愛知3rd
kanan
1
170
PyLadiesCaravan in 大阪
kanan
0
320
PyLadiesCaravan in 名古屋Returns
kanan
0
210
PyLadiesCaravan in 愛媛(Python入門データ分析編)
kanan
0
370
Other Decks in Programming
See All in Programming
代数的データ型って何が嬉しいの? #frontend_phpcon_do
kajitack
8
3.3k
エージェンティックRAGにAWSで入門しよう!
har1101
8
1.3k
Javaの型とAI時代に型が大事な理由 / java types and type in AI era
kishida
2
110
[2026年度第1回ORセミナー] 計画最適化ベンチャーと競技プログラミング人材
terryu16
0
250
LLM Plugin for Node-REDの利用方法と開発について
404background
0
160
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
4.5k
The Arts and Crafts of Work in the AI Era — Toward Mastery in Software Development
kuranuki
1
730
Claspは野良GASの夢をみるか
takter00
0
170
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
220
jQueryをバージョンアップする前に使いたいjQuery Migrate
matsuo_atsushi
0
190
脅威をエンジニアリングの糧にして――現場編 / Turning Threats into Engineering Fuel — Field Edition
nrslib
0
260
JJUG CCC 2026 Spring: JSpecify で実現する Kotlin フレンドリーな Java API 設計
ternbusty
1
150
Featured
See All Featured
The World Runs on Bad Software
bkeepers
PRO
72
12k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
The untapped power of vector embeddings
frankvandijk
2
1.7k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
16k
GraphQLとの向き合い方2022年版
quramy
50
15k
Redefining SEO in the New Era of Traffic Generation
szymonslowik
1
330
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
380
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.8k
A Soul's Torment
seathinner
6
2.9k
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