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
実践 時系列解析 輪読会#1
Search
Yoichi Tokita
October 28, 2021
Programming
0
350
実践 時系列解析 輪読会#1
https://reading-circle-beginners.connpass.com/event/227344/
オライリーから出版された「実践 時系列解析」の輪読会資料です。
Yoichi Tokita
October 28, 2021
Tweet
Share
More Decks by Yoichi Tokita
See All by Yoichi Tokita
深層学習による自然言語処理 輪読会#5 資料
tok41
0
380
深層学習による自然言語処理 輪読会#4 資料
tok41
0
2.2k
深層学習による自然言語処理 輪読会#3 資料
tok41
0
1.8k
深層学習による自然言語処理 輪読会#2 資料
tok41
0
2.1k
深層学習による自然言語処理 輪読会#1 資料
tok41
0
2.1k
実践 時系列解析 輪読会 Sec.11
tok41
0
120
実践 時系列解析 輪読会 Sec. 13-14
tok41
0
100
実践 時系列解析 輪読会 #6
tok41
0
380
実践 時系列解析 輪読会#5
tok41
0
330
Other Decks in Programming
See All in Programming
状態管理ライブラリZustandの導入から運用まで
k1tikurisu
3
440
LR で JSON パーサーを作る / Coding LR JSON Parser
junk0612
2
180
REXML改善のその後
naitoh
0
170
Web技術を駆使してユーザーの画面を「録画」する
yukukotani
13
6.5k
マルチモジュールにおけるテスト最適化
fxwx23
0
190
Rechartsで楽にゴリゴリにカスタマイズする!
10tera
1
160
Debugging: All you need to know (for simultaneous interpreting)
jmatsu
2
420
Go1.23で入った errorsパッケージの小さなアプデ
kuro_kurorrr
2
260
GraphQL あるいは React における自律的なデータ取得について
quramy
11
2.8k
『ドメイン駆動設計をはじめよう』中核の業務領域
masuda220
PRO
5
960
Scala アプリケーションのビルドを改善してデプロイ時間を 1/4 にした話 | How I improved the build of my Scala application and reduced deployment time by 4x
nomadblacky
1
140
Prompt Cachingは本当に効果的なのか検証してみた.pdf
ttnyt8701
0
520
Featured
See All Featured
Become a Pro
speakerdeck
PRO
22
4.9k
Building Applications with DynamoDB
mza
89
6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
36
1.9k
How STYLIGHT went responsive
nonsquared
93
5.1k
Reflections from 52 weeks, 52 projects
jeffersonlam
346
20k
Faster Mobile Websites
deanohume
304
30k
RailsConf 2023
tenderlove
27
800
Ruby is Unlike a Banana
tanoku
96
11k
Why Our Code Smells
bkeepers
PRO
334
56k
Documentation Writing (for coders)
carmenintech
65
4.3k
The Power of CSS Pseudo Elements
geoffreycrofte
71
5.2k
The Pragmatic Product Professional
lauravandoore
31
6.2k
Transcript
「実践 時系列解析」 輪読会#1 2021/10/28 @yoichi_t
⾃⼰紹介 • tokita(@yoichi_t) • 所属:株式会社Glia Computing (https://www.glia-computing.com/) • 2018年8⽉に設⽴(Co-Founder) •
機械学習/データ分析のPoC、導⼊⽀援、コンサル • 過去 • 広告会社で推薦システムの開発をやっていたり、警備会社で⼈物⾏動 の研究をしてたりしてました
⾃⼰紹介 • tokita(@yoichi_t) • チョコボールの秘密を解明するために、⽇々データを収集&解析 チョコボール 統計
本書の構成 • 歴史 • 1. 時系列の概論と簡単な歴史 • データに関する全て • 2.
時系列データの⾒つけ⽅と前処理 • 3. 時系列の実践的データ解析 • 4. 時系列データのシミュレーション • 5. 時間データの保管 • 様々なモデルについて • 6. 時系列に使える統計モデル • 7. 時系列に使える状態空間モデル • 8. 特徴量の⽣成と選択 • 9. 機械学習による時系列解析 • 10. ディープラーニングによる時系列 解析 • モデリング後に考慮すべきこと • 11. 誤差の測定 • 12. 時系列モデルの当てはめ • 現実世界における活⽤事例 • 13. ヘルスケア分野への適⽤ • 14. ⾦融分野への適⽤ • 15. 政府機関が公表する時系列 • 最近の動向について • 16. 時系列パッケージ • 17. 予測に関する予測
今⽇の範囲 • 1章 時系列の概論と簡単な歴史 • 1.1 時系列の多様な⽤途の歴史 • 1.2 時系列解析の⼈気に⽕がつく
• 1.3 統計的時系列解析の起源 • 1.4 機械学習を⽤いた時系列解析の起源 • 2章 時系列データの⾒つけ⽅と前処理 • 2.1 時系列データをどこで⾒つけるか • 2.2 表データの集合から時系列データの集合を作成する • 2.3 タイムスタンプ処理のトラブル • 2.4 データのクリーニング • 2.5 季節性データ • 2.6 タイムゾーン • 2.7 先読みの回避
1章 時系列の概論と簡単な歴史 • 1.1 時系列の多様な⽤途の歴史 • 1.2 時系列解析の⼈気に⽕がつく • 1.3
統計的時系列解析の起源 • 1.4 機械学習を⽤いた時系列解析の起源 「時系列データはどこにでもあり、間も無く何もかもが時系列 データ化するでしょう」(1.2)
時系列解析とは • 「時間経過順に並べた点から、意味のある要約や統計情報を抽 出する試み」 • 「時系列データはどこにでもあり、間も無く何もかもが時系列 データ化するでしょう」(1.2節) 順番に意味があり、情報がある。(独⽴同分布が仮定できない) ここが時系列解析(解析⾃体も評価も)が難しいポイントだと考え ている
本質的にはあらゆるデータには順番があるはず。 データが独⽴で背景が⼀定であるという仮定(統計解析、機械学習 で⼀般的に⽤いられる仮定)は常に疑うべき。
1.1 時系列の多様な⽤途 • 医学 • 治療の経過はもちろん、医療機器で時系列データが使われる(⼼電、 脳波など) • ウェアラブル機器の普及で健康な⼈も⾃然に時系列データを⽣成 •
ビジネス的にも⼤きいインパクトが期待されている • 経済成⻑の予測 • 「ビジネス周期」の予測から始まった • 結局、「周期性」ないということがわかったらしい • 市場予測、需要予測などの場で利⽤されている
1.4 機械学習を⽤いた時系列解析の起源 • 「時系列解析と予測はまだ⻩⾦期に到達していません」「将来 予測が⼤きく発展するのは、これからです」 独⽴同分布を仮定できないということが機械学習を適⽤するハードルになっているのかな と思っています。 TransformerなどのAttention機構がブレイクスルーになるのかな?と感じています。
2章 時系列データの⾒つけ⽅と前処理 • 2.1 時系列データをどこで⾒つけるか • 2.2 表データの集合から時系列データの集合を作成する • 2.3
タイムスタンプ処理のトラブル • 2.4 データのクリーニング • 2.5 季節性データ • 2.6 タイムゾーン • 2.7 先読みの回避 「データのクリーニングと適切な処理は、タイムスタンプパイプライ ンの最も重要なステップです」 「データ理解の最終的な責任はあなたにあります」(2.3)
2章 時系列データの⾒つけ⽅と前処理 • データのクリーニングと適切な前処理は最も重要なステップ • 本章では、以下のポイントを解説 • 時系列データの種類 • 系列データの作成(実例)
• ⽋損値の補間 • 平滑化 • 季節性データ
系列データの種類 • データの⼊⼿ • コンペ(Kaggleなど)などのデータセット • ⽐較的扱いやすい • タイムスタンプ付きデータを系列データに加⼯ •
政府統計など多数のデータソースがある • 「時系列への変換」、「クリーニング」が必要 ←本章ではこれを解説 • 時系列データと系列データ • 時系列データ解析は「時間」が要件なのではなく、順番に意味がある というデータ構造のデータに対して適⽤できる • ワインのスペクトルなど • 複数系列が利⽤できることも(多変量時系列データ)
2.2 表データの集合から時系列データの 集合を作成する • 複数の表形式データを「時系列データへ変換」するプロセスの 実例 • jupyter notebook •
本章を通して以下のポイントが重要と感じています • データ分析で何をしたいか、⽬的を持ってデータの処理を設計する • ⽬的によって処理の内容が変わる • データに対する仮説を持ってデータを眺め、仮説を確認する • データの解釈が間違っているとその後の解析で致命的 • タイムスタンプの解釈を⾒落としがち
2.3 タイムスタンプ処理のトラブル • 「データ理解の最終的な責任はあなたにあります」 • データの理解 • どのようなイベントで⽣成されるデータなのか?(アプリケーションの理解) • どのタイミングで⽣成されるデータなのか?(サーバに到達した時間?)
• 誰が⽣成するデータなのか?(ユーザの能動的な⾏動?) • データ処理の設計 • 意味のある時間間隔 • 短ければ良いというものではない • ノイズの懸念
2.4 データのクリーニング • ⽋損値処理の種類 • 補完:データセット全体の観測に基づいて⽋損値を補完 • 補間:近傍のデータを⽤いて⽋損値を推定 • ⽋損期間の削除:⽋損期間のデータを使わない
←あまり良くない • ⽋損データの補完⽅法として3種類を実践(notebook) • 前⽅埋め • 移動平均 • 補間
2.4 データのクリーニング • データの平滑化の⽬的 • 外れ値/ノイズ処理 • 特徴量の⽣成 ←??データ圧縮? •
予測:ノイズ成分と状態を分離して、状態の先を予測する • 可視化
2.4 データのクリーニング • 指数平滑化 • 現在の状態に対して、直近のデータほど影響⼒が⼤きい • 𝑆! = 𝑑𝑆!"#
+ 1 − 𝑑 𝑥! • 𝑆! : 時刻tの状態の予測値 • 𝑥! : 時刻tの観測値 • 𝑑: 過去状態の影響⼒(減衰率、0 ≤ 𝑑 ≤ 1) • 𝑆! = 1 − 𝑑 𝑥! + 𝑑𝑥!"# + 𝑑$𝑥!"$ + 𝑑%𝑥!"% ⋯ • 他の平滑化法 • カルマンフィルタ:線形ガウス状態空間モデルを仮定した状態の予測 • LOESS:局所的に推定された散布図平滑化(ノンパラメトリックな⼿法) • 実装(notebook) 過去の影響は指数的 に減少
2.5 季節性データ • 安定した頻度で繰り返される挙動 • 時系列解析の⽬的の⼀つは、季節変動とトレンドを分離すること • トレンドを理解することで、系の状態を把握できる • 統計的な⼿法で分離するためのAPIが提供されている
• R: `stl`(書籍) • Python: Prophetなどの時系列ライブラリ • 繰り返しの挙動だが周期が変動する→循環性データ • 株式市場の好不況の循環など
2.7 先読みの回避 • 系列データの特徴は「順番」に意味があること • 平滑化や⽋損値補間で時間的に先のデータを利⽤して良いかはよく検 討が必要 • 運⽤時の制約を意識する •
モデルの評価は単純な交差検証ができない • 時間的に混合してしまうと本来知り得ない情報を使った予測が⾏われてしまう • 詳しくは11章
Appendix
輪読会の進め⽅ • タイムテーブル(⽬安) • 振り返り、(初参加者いらっしゃる場合)⾃⼰紹介(5〜10min) • 解説(50〜60min) • ディスカッション(30〜40min) •
進⾏ • 毎回の進⾏は主催者が実施します • 輪読スケジュールに従って、担当者に解説をお願いします • 解説中の質問/意⾒は積極的にお願いします • 解説終了後に全体通して議論の時間を設けます • (ご意⾒お願いします)
輪読会の進め⽅ • 輪読会ルール • 数式を細かく解説することは求めません • 時間内に該当範囲の議論の流れを理解することを重視しています • 数式が追えなかったとしても議論の流れを解説してくれれば良いです •
発表途中の議論/質問は積極的にお願いします • 低レベルなんて気にしません。ただし、本質から外れた質問や議論が収まらない 場合は切り上げることがあります(時間は有限なのでごめんなさい) • 時間が余ったらLT歓迎します • 書籍の内容に沿っていると歓迎しますが、技術的な内容ならなんでも良いです • LTの時間は保証しません • 隔週開催の予定ですが、イベント等を考慮してずらすことはあります
• Slack • reading-circle-beginners(readingcircle-6hg9698.slack.com) • #実践時系列解析 • 輪読会グループ • 統計・機械学習の輪読会(初⼼者〜中級者向け)
• https://reading-circle-beginners.connpass.com/ • Github • https://github.com/tok41/note_oreilly_time_seriese_analysis • 主催者が個⼈的にまとめているリポジトリ。よかったらPRください。 Communication