SlideShare a Scribd company logo
Submit Search
Upload
Login
Signup
Prophet入門【R編】Facebookの時系列予測ツール
Report
hoxo_m
Follow
Data Scientist, HOXO-M
Jul. 20, 2017
•
0 likes
•
38,199 views
1
of
62
Prophet入門【R編】Facebookの時系列予測ツール
Jul. 20, 2017
•
0 likes
•
38,199 views
Report
Data & Analytics
第63回R勉強会@東京(#TokyoR)発表資料 https://atnd.org/events/89482
hoxo_m
Follow
Data Scientist, HOXO-M
Recommended
Prophet入門【理論編】Facebookの時系列予測ツール
hoxo_m
44.3K views
•
24 slides
Prophet入門【Python編】Facebookの時系列予測ツール
hoxo_m
64.3K views
•
61 slides
状態空間モデルの考え方・使い方 - TokyoR #38
horihorio
37.7K views
•
37 slides
グラフィカルモデル入門
Kawamoto_Kazuhiko
116.6K views
•
67 slides
相関と因果について考える:統計的因果推論、その(不)可能性の中心
takehikoihayashi
55.1K views
•
54 slides
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
Deep Learning Lab(ディープラーニング・ラボ)
24.6K views
•
60 slides
More Related Content
What's hot
心理学におけるベイズ統計の流行を整理する
Hiroshi Shimizu
10.4K views
•
68 slides
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
12.4K views
•
216 slides
Stan超初心者入門
Hiroshi Shimizu
84K views
•
156 slides
15分でわかる(範囲の)ベイズ統計学
Ken'ichi Matsui
54.8K views
•
47 slides
Rによるベイジアンネットワーク入門
Okamoto Laboratory, The University of Electro-Communications
8.4K views
•
14 slides
ベイズモデリングと仲良くするために
Shushi Namba
6.6K views
•
80 slides
What's hot
(20)
心理学におけるベイズ統計の流行を整理する
Hiroshi Shimizu
•
10.4K views
機械学習による統計的実験計画(ベイズ最適化を中心に)
Kota Matsui
•
12.4K views
Stan超初心者入門
Hiroshi Shimizu
•
84K views
15分でわかる(範囲の)ベイズ統計学
Ken'ichi Matsui
•
54.8K views
Rによるベイジアンネットワーク入門
Okamoto Laboratory, The University of Electro-Communications
•
8.4K views
ベイズモデリングと仲良くするために
Shushi Namba
•
6.6K views
心理学のためのPsychパッケージ
考司 小杉
•
16.4K views
因果探索: 基本から最近の発展までを概説
Shiga University, RIKEN
•
15K views
変分推論法(変分ベイズ法)(PRML第10章)
Takao Yamanaka
•
30.1K views
pymcとpystanでベイズ推定してみた話
Classi.corp
•
1.6K views
Rで学ぶ回帰分析と単位根検定
Nagi Teramo
•
32.7K views
ベイズファクターとモデル選択
kazutantan
•
18.5K views
深層生成モデルと世界モデル(2020/11/20版)
Masahiro Suzuki
•
6.9K views
Granger因果による時系列データの因果推定(因果フェス2015)
Takashi J OZAKI
•
38.5K views
【読書会資料】『StanとRでベイズ統計モデリング』Chapter12:時間や空間を扱うモデル
Masashi Komori
•
7.3K views
分析のビジネス展開を考える―状態空間モデルを例に @TokyoWebMining #47
horihorio
•
12.7K views
社会心理学者のための時系列分析入門_小森
Masashi Komori
•
18.4K views
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
Yoshitake Takebayashi
•
49.7K views
ベイジアンモデリングによるマーケティングサイエンス〜状態空間モデルを用いたモデリング
宏喜 佐野
•
24.6K views
階層ベイズによるワンToワンマーケティング入門
shima o
•
20.2K views
Viewers also liked
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
Nagi Teramo
34.9K views
•
106 slides
機械学習のためのベイズ最適化入門
hoxo_m
184.7K views
•
67 slides
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
Yasuyuki Sugai
10.5K views
•
94 slides
xtsパッケージで時系列解析
Nagi Teramo
21.8K views
•
42 slides
Rで売上予測のデモ(回帰分析)
裕美 成田
8K views
•
18 slides
2017年3月版データマエショリスト入門(誤植修正版)
Yuya Matsumura
1.7K views
•
53 slides
Viewers also liked
(16)
東京R非公式おじさんが教える本当に気持ちいいパッケージ作成法
Nagi Teramo
•
34.9K views
機械学習のためのベイズ最適化入門
hoxo_m
•
184.7K views
第2回 R言語で始めよう、データサイエンス(ハンズオン勉強会) 〜相関分析による需要予測編〜
Yasuyuki Sugai
•
10.5K views
xtsパッケージで時系列解析
Nagi Teramo
•
21.8K views
Rで売上予測のデモ(回帰分析)
裕美 成田
•
8K views
2017年3月版データマエショリスト入門(誤植修正版)
Yuya Matsumura
•
1.7K views
Replica exchange MCMC
. .
•
12.9K views
Python におけるドメイン駆動設計(戦術面)の勘どころ
Junya Hayashi
•
17.3K views
Sappo ro#6資料2 ー完全版ー
Wakana_kudo
•
8.5K views
R6パッケージの紹介―機能と実装
__nakamichi__
•
27.3K views
遅延価値観数と階層ベイズを用いた男心をくすぐる女の戦略.R
MrUnadon
•
20.9K views
Pythonはどうやってlen関数で長さを手にいれているの?
Takayuki Shimizukawa
•
37.9K views
Osaka.stan#2 chap5-1
Makoto Hirakawa
•
5.9K views
SVM実践ガイド (A Practical Guide to Support Vector Classification)
sleepy_yoshi
•
132.5K views
多項式あてはめで眺めるベイズ推定~今日からきみもベイジアン~
tanutarou
•
11.8K views
基礎からのベイズ統計学 輪読会資料 第1章 確率に関するベイズの定理
Ken'ichi Matsui
•
146K views
Similar to Prophet入門【R編】Facebookの時系列予測ツール
Tori lab 輪読会 WWW 2014 - Modeling and predicting the growth and death
Kimitaka
865 views
•
26 slides
Chainerで学ぶdeep learning
Retrieva inc.
5.5K views
•
40 slides
Introduction to search_and_recommend_algolithm
Hiroki Iida
213 views
•
67 slides
Ai for marketing
Hiroki Iida
123 views
•
46 slides
Tokyo r50 beginner_2
Takashi Minoda
4.7K views
•
36 slides
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
9.6K views
•
99 slides
Similar to Prophet入門【R編】Facebookの時系列予測ツール
(20)
Tori lab 輪読会 WWW 2014 - Modeling and predicting the growth and death
Kimitaka
•
865 views
Chainerで学ぶdeep learning
Retrieva inc.
•
5.5K views
Introduction to search_and_recommend_algolithm
Hiroki Iida
•
213 views
Ai for marketing
Hiroki Iida
•
123 views
Tokyo r50 beginner_2
Takashi Minoda
•
4.7K views
10分で分かるr言語入門ver2 upload用
Nobuaki Oshiro
•
9.6K views
大規模日本語ブログコーパスにおける言語モデルの構築と評価
Yahoo!デベロッパーネットワーク
•
2.4K views
10分で分かるr言語入門ver2.15 15 1010
Nobuaki Oshiro
•
3.2K views
Retty recommendation project
Jiro Iwanaga
•
9.6K views
機械学習を使った時系列売上予測
DataRobotJP
•
15.3K views
時系列分析入門
Miki Katsuragi
•
384 views
Solrで多様なランキングモデルを活用するためのプラグイン開発 #SolrJP
Yahoo!デベロッパーネットワーク
•
9.9K views
ギズモード・ジャパンのつくり方
Six Apart KK
•
4.7K views
初心者のためのRとRStudio入門 vol.2
OWL.learn
•
21.1K views
Python による 「スクレイピング & 自然言語処理」入門
Tatsuya Tojima
•
8.4K views
Towards a robust modeling of temporal interest change patterns for behavioral...
shima o
•
1.1K views
REST API マスターへの道 - Office 365 パワーユーザー向け
Hirofumi Ota
•
7.6K views
レボリューションR(RRE)のご紹介
Satoshi Kitajima
•
5.5K views
AgileTourOsaka2011 関係者に理解してもらえるアジャイル開発にむけて
Shuji Morisaki
•
1.6K views
10分で分かるr言語入門ver2.14 15 0905
Nobuaki Oshiro
•
2.2K views
More from hoxo_m
Shinyユーザのための非同期プログラミング入門
hoxo_m
5.1K views
•
47 slides
学習係数
hoxo_m
3.7K views
•
39 slides
AJAXサイトの情報をWebスクレイピング
hoxo_m
2.3K views
•
9 slides
高速なガンマ分布の最尤推定法について
hoxo_m
6.9K views
•
30 slides
経験過程
hoxo_m
9.9K views
•
42 slides
確率論基礎
hoxo_m
13.1K views
•
32 slides
More from hoxo_m
(19)
Shinyユーザのための非同期プログラミング入門
hoxo_m
•
5.1K views
学習係数
hoxo_m
•
3.7K views
AJAXサイトの情報をWebスクレイピング
hoxo_m
•
2.3K views
高速なガンマ分布の最尤推定法について
hoxo_m
•
6.9K views
経験過程
hoxo_m
•
9.9K views
確率論基礎
hoxo_m
•
13.1K views
シンギュラリティを知らずに機械学習を語るな
hoxo_m
•
17.5K views
非制約最小二乗密度比推定法 uLSIF を用いた外れ値検出
hoxo_m
•
20.6K views
トピックモデルの評価指標 Perplexity とは何なのか?
hoxo_m
•
44K views
トピックモデルの評価指標 Coherence 研究まとめ #トピ本
hoxo_m
•
13.1K views
トピックモデルによる統計的潜在意味解析読書会 3.7 評価方法 - 3.9 モデル選択 #トピ本
hoxo_m
•
4.4K views
協調フィルタリング入門
hoxo_m
•
45.6K views
データの不備を統計的に見抜く (Gelman’s secret weapon)
hoxo_m
•
9.8K views
カップルが一緒にお風呂に入る割合をベイズ推定してみた
hoxo_m
•
76.2K views
Stan で欠測データの相関係数を推定してみた
hoxo_m
•
8.7K views
チェビシェフの不等式
hoxo_m
•
13.2K views
swirl パッケージでインタラクティブ学習
hoxo_m
•
5.9K views
RPubs とその Bot たち
hoxo_m
•
8.2K views
5分でわかるベイズ確率
hoxo_m
•
161.2K views
Prophet入門【R編】Facebookの時系列予測ツール
1.
Prophet ⼊⾨【R編】 Facebook の時系列予測ツール 2017/07/22 @hoxo_m 1
2.
About me HOXO-M Inc. 代表取締役
CEO 2
3.
【宣伝】Rによる⾃動データ収集 Webスクレイピングとテキストマイニングの実践 ガイド 共同翻訳 しました 3
4.
本⽇の内容 • Facebook が開発した時系列予測ツール Prophet を紹介 •
R と Python のライブラリがあります https://github.com/facebookincubator/prophet • 本資料では R 版の使い⽅を説明 4
5.
Prophet とは • Prophet
= 予⾔者 • 時系列予測ツール – 統計知識不要 – 業務知識で精度向上 – 精度評価で品質保証 • 誰でも予⾔者に! 5
6.
⽬次 1. モチベーション 2. デフォルト設定で使ってみる 3.
業務知識を⼊れてみる 4. 統⼀的な評価で品質保証 5. まとめ 6
7.
1. モチベーション • ビジネスにおいて様々な時系列データの 将来予測は重要 •
例: 売り上げ予測 7
8.
ビジネス時系列の予測 • 精度の良い予測をしたい • 必要なスキル –
統計モデル (ARIMA, 状態空間モデル, etc.) – ドメイン知識 (季節性, イベント, etc.) • 両⽅を兼ね備えた⼈材はほとんどいない ⇨ ⾼品質な予測は⾼コスト 8
9.
課題 • ⼤量のビジネス時系列データ • ⾼品質な予測が欲しい •
コストは抑えたい ⇨ 予測のスケール化 9
10.
分散型によるスケール化 10 集中型 分散型 統計専⾨家 Prophet 予測
予測 予測 予測 予測 予測
11.
分散型予測の問題点 • 予測を作る⼈たちに統計の知識がない • パラメータ調整による精度向上が難しい •
予測の品質が⼀定でなくバラバラになる 11
12.
Prophet の要件 • ドメイン知識を持つ⼈ が ①
統計の知識なしで予測を作成できる ② ドメイン知識を⼊れて精度向上できる ③ 品質を保つための統⼀的な評価⽅法 12
13.
1. まとめ • ビジネス時系列の予測は重要 •
専⾨家による集中型予測は⾼コスト • 分散型予測により予測を低コスト化 • Prophet は分散型予測に必要な3つの条件 を備えたツール 13
14.
⽬次 1. モチベーション 2. デフォルト設定で使ってみる 3.
業務知識を⼊れてみる 4. 統⼀的な評価で品質保証 5. まとめ 14
15.
2. デフォルト設定で使ってみる • Prophet
の要件①: 統計の知識なしで予測を作成できる ⇨ デフォルト設定でいい感じの予測 15
16.
インストール • CRAN からインストール可能 >
install.packages(”prophet”) • rstan パッケージに依存 • Windows の場合、rstan パッケージは 先に別途インストールした⽅が良い 16
17.
本発表のデータ • GitHub 上のデータを使⽤します •
https://github.com/facebookincubator/ prophet/tree/master/examples • Wikipedia • ペイトン・マニング • アメフト選⼿ • ⽇次ページビュー数 17
18.
データの読み込み ds y 1 2007-12-10
9.590761 2 2007-12-11 8.519590 3 2007-12-12 8.183677 4 2007-12-13 8.072467 18
19.
データの読み込み • 3000⽇分の時系列データ 19
20.
予測モデルの学習 • prophet() 関数にデータを⼊れるだけ 20
21.
予測期間の指定 • ⼀年(365⽇)の空のデータフレームを⽤意 ds 3266 2017-01-15 3267
2017-01-16 3268 2017-01-17 3269 2017-01-18 3270 2017-01-19 21
22.
予測の作成 ds yhat 3266 2017-01-15
8.213787 3267 2017-01-16 8.538876 3268 2017-01-17 8.326293 3269 2017-01-18 8.158930 3270 2017-01-19 8.170898 22
23.
予測のプロット • plot() 関数で簡単にプロットできる •
結果は ggplot オブジェクトなので簡単に 加⼯できる 23
24.
予測のプロット 24 予測
25.
2. まとめ • Prophet
はデフォルト設定でいい感じの予測を 作成でき、可視化までできる! 25
26.
⽬次 1. モチベーション 2. デフォルト設定で使ってみる 3.
業務知識を⼊れてみる 4. 統⼀的な評価で品質保証 5. まとめ 26
27.
3. 業務知識を⼊れてみる • Prophet
の要件②: ドメイン知識を⼊れて精度向上できる ⇨ 分かりやすい調整パラメータ 27
28.
予測モデル • 従来の予測モデル(⽣成モデル) – データがどのように発⽣するかを考える –
パラメータの意味が分かりにくい (例: ARIMA の移動平均や⾃⼰回帰の次数) • Prophet – 予測を曲線フィッティングの問題と考える – パラメータが直感的に理解できる 28
29.
予測モデル • 時系列 =
トレンド + 周期性 + イベント 29
30.
30 = + トレンド 周期性 時系列データ
31.
予測モデル • 時系列 =
トレンド + 周期性 + イベント • パラメータが直感的に理解できる • 調整可能なパラメータ ① 線形トレンド or ⾮線形トレンド ② 変化点、変化点の数 ③ 週周期と年周期 ④ イベント 31
32.
① トレンドの選択 • 線形トレンド ’linear’ •
⾮線形トレンド ʻlogistic’ 32
33.
トレンドの選択 • ⾮線形トレンド – ビジネス時系列は基本的に⾮線形トレンド –
成⻑上限(キャパシティ)が決まっている 例: ユーザ数の予測では Web⼈⼝が上限 • 線形トレンド – 成⻑の各段階は線形で近似できる – Prophet のデフォルトは線形 33
34.
⾮線形トレンドの指定 • growth=”logistic” を指定 •
df$cap に上限(キャパシティ)を指定 34
35.
⾮線形トレンド • 例: Wikipedia
の R のページビュー 35
36.
② 変化点の指定 • 新機能のリリースなどでトレンドが変化 •
変化点の指定が可能: changepoints=⽇付のベクトル 36
37.
37 = + トレンド(変化点あり) 周期性 時系列データ
38.
変化点の数を指定 • 等間隔に変化点を置いて推定 n.changepoints=変化点の数 • 変化点は指定した数だけ出⼒されるが、 変化量が微⼩なら変化点とみなさない ⇨︎
変化点の⾃動検出 38
39.
③ 週周期と年周期 • ビジネス時系列は⼈の⾏動に影響される •
週周期と年周期が重要 • 週周期: – ⼈の⾏動は曜⽇によって変わる (平⽇ or 休⽇) • 年周期: – ⼈の⾏動は季節によって変わる (年末年始など) 39
40.
週周期と年周期の指定 • それぞれの周期を考慮するか指定できる weekly.seasonality =
TRUE/FALSE yearly.seasonality = TRUE/FALSE • デフォルトは ”auto” 40
41.
④ イベント効果 • 不定期に発⽣するイベントの影響を考慮 して予測を作成したい •
イベントの例: – 祝⽇、キャンペーン、テレビCM 41
42.
イベント効果 • イベント⽇を列挙したデータフレームを ⽤意する 42 holiday ds
lower upper 24時間テレビ 2015-08-22 0 1 24時間テレビ 2016-08-27 0 1 24時間テレビ 2017-08-26 0 1 クリスマス 2015-12-25 -1 0 クリスマス 2016-12-25 -1 0 クリスマス 2017-12-25 -1 0
43.
イベント効果 • イベント⽇のデータフレームを渡す holidays =
event_dataframe 43
44.
例: イベント効果 • Wikipedia
ページビュー • ペイトン・マニング • アメフト選⼿ • イベント: 「アメフトリーグの決勝戦の⽇」 44
45.
イベント効果なし 45 決勝の⽇は モデルから ⼤きく外れる
46.
イベント効果を考慮 イベント効果 として処理 次の決勝戦
47.
3. まとめ • Prophet
の予測モデル: 時系列 = トレンド + 周期 + イベント • パラメータが直感的に理解できる – トレンド、変化点、周期、イベント – ドメイン知識により調整可能 • パラメータ調整により精度向上できる 47
48.
⽬次 1. モチベーション 2. デフォルト設定で使ってみる 3.
業務知識を⼊れてみる 4. 統⼀的な評価で品質保証 5. まとめ 48
49.
4. 統⼀的な評価で品質保証 • Prophet
の要件③: 統⼀的な予測精度の評価 ⇨ MAPE と SHF 49
50.
統⼀的な評価 • なぜ統⼀的な評価が重要か? • 分散型予測 •
各⼈がそれぞれで予測を作成する ⇨ 予測の品質がバラバラになる • これらの予測の品質を⼀定に保ちたい 50
51.
平均絶対パーセント誤差 • MAPE (Mean
Average Percent Error) • 予測値が実績値から何パーセント外れて いるかを表す ⇨ 異なる単位の予測を⽐較できる 51
52.
平均絶対パーセント誤差 • どうやって求めるか? ⇨ Simulated
Historical Forecast を提案 52
53.
Simulated Historical Forecast 53 訓練データ
テスト
54.
Simulated Historical Forecast 54 訓練データ
テスト 全期間 複数の期間における予測誤差を出す
55.
Simulated Historical Forecast •
n ⽇先の予測に対して m 個の誤差 (⿊点) • 平均誤差を局所多項式回帰で求める (⻘線) 55
56.
SHF の実⾏ • Prophet
には SHF は実装されていない • ただし、実装は難しくない • 今回は⾃分で実装 • ペイトン・マニングデータのデフォルト 予測とイベントを考慮した予測を⽐較 56
57.
• デフォルト設定(⾚線)よりもイベントを考慮した ⽅(⻘線)が予測精度が良い • 250⽇以降は予測精度が急激に悪くなる 57
58.
4. まとめ • 統⼀的な精度評価⼿法を説明 •
分散型予測の品質を保つため • 平均絶対パーセント誤差 (MAPE) • Simulated Historical Forecast を提案 58
59.
⽬次 1. モチベーション 2. デフォルト設定で使ってみる 3.
業務知識を⼊れてみる 4. 統⼀的な評価で品質保証 5. まとめ 59
60.
まとめ • Prophet は時系列予測ツール •
次の特徴を持つ – デフォルト設定でいい感じの予測を作成 – ドメイン知識によって精度改善 – SHF によって統⼀的な精度評価 • 分散型予測で利⽤可能 60
61.
Prophet の使い⽅ ① ⼤量のビジネス時系列に対してデフォル ト設定で予測を作成 ②
SHF による評価で順位を付け、悪い⽅か ら順番にドメイン知識で精度改善 ③ それでも悪ければ専⾨家が予測を⾏う ⇨ 限りあるリソースの有効活⽤ 61
62.
参考⽂献 • Sean J.
Taylor and Benjamin Letham, “Forecasting at Scale”, 2017 62