SlideShare a Scribd company logo
1 of 30
Download to read offline
TensorFlowで統計モデリング
Kentaro Matsuura
2018.12.9
ある架空の電化製品の価格
複数店舗の週次の時系列データ
• ドメイン知識にサポートされているデータの特徴
• 経過時間とともに価格𝑌が指数関数的に減少する
• 値が高い時の方が, 低い時よりバラツキが大きい
• 複数の理由から途中で下げ止まる期間がありそう
3
目的
• 全体平均の価格推移を予測したい.
• バラツキがどれほどか知りたい.
※ここでは, 複数店舗をまとめて扱うとする.
4
とりあえずProphetで 5
予測区間がちょっと狭過ぎ??
予測が0を下回っている??
• 悪くない!けど…
Prophetの長所
• お手軽!
• 一般化加法モデルの表現力が高い.
• 周期成分の抽出に優れていると思う.
6
Prophetの短所
トレンド関連
• トレンドがペキペキ折れ線で検出しにくい場合がある.
• トレンドが滑らかにならずジグザグになる場合がある.
• トレンドがペキッと変わることを予測するのが難しい.
• 以上から, トレンドの予測が良くない場合がある.
その他の機能
• 出力が多次元の時系列に未対応.
• 任意の非線形関数や減衰するイベント効果に未対応.
その前に, Prophetのモデルを理解してますか?
7
統計モデルを理解しよう
理由
• 現実は, ツールの前提条件をいとも簡単に破る!
• そのとき, 自分で拡張できると楽しい.
• 拡張するには, 統計モデルの理解が必須.
8
アルゴリズム
統計モデル
前提条件・適用範囲
長所と短所ここまでの理解は
分析に必須
できればここまで
理解してほしい!
• 手法を実装したツールのレイヤー
本発表の方針
• 思考がツールに縛られるのは楽しくないので, なるべく
汎用的なツールを使いたい.
• ドメイン知識を反映して, 真の構造に近い構造をモデル
に組み込めば, 予測性能は向上するはず.
※ 予測の評価方法についてはここでは省略.
9
この例をTensorFlowでモデリングしてみよう!
速習TensorFlow
僕の中のTensorFlow
「GPUを簡単に使える勾配法による点推定ツール」
利点
• モデルをかなり自由に設定できる
• 推定アルゴリズムが豊富
• DNN用の関数が豊富
• 可視化ツール(TensorBoard)が良い
欠点
• sessionまわりが面倒くさい
• tf.XXXみたいな関数たちをまた覚えるのか…
11
TensorFlowの使い方①
モデル定義
• データを代入する変数を tf.placeholder で定義
• 推定したい変数を tf.Variable で定義
• これらの変数を組み合わせて, 最小化したいcost
(loss, 目的関数) を定義する.
最適化
• costを引数に推定のアルゴリズム(Optimizer)を
選択して, 変数(例: train)に格納する.
• sessionを立ち上げて各変数の初期化をする.
• run関数で, costが収束するまでtrainを評価.
12
TensorFlowの使い方②
• 線形回帰のデモ
tf_tutorial.html
13
TensorFlowで統計モデリング
~知識を数式に落としこむ練習~
Model 1
指数関数でフィッティング
15
数式への落とし込み①
“経過時間とともに指数関数的に減少する”
16
“指数関数でフィッティング”
𝜇 𝑖 = 𝑦0 exp −𝜆 𝑇 𝑖
数式への落とし込み②
“値が高い時の方が, 低い時よりバラツキが大きい”
17
“対数をとってから(二乗誤差で)フィッティング”
ノイズは𝜀 ~ 𝑁 0, 𝜎2
に従うとして,
(1)式ではなく, (2)式で考えていることに相当する.
𝑌 𝑖 = 𝜇 𝑖 + 𝜀 (1)
𝑌 𝑖 = 𝜇 𝑖 𝑒 𝜀
(2)
図解 18
𝑌 𝑖 = 𝜇 𝑖 𝑒 𝜀
𝑌 𝑖 = 𝜇 𝑖 + 𝜀
同じ幅
値が大きい時に
幅が大きい
TensorFlowによる実装&結果
• modeling.html のModel 1
19
Model 2
時の流れを止める
20
数式への落とし込み③
“途中で下げ止まる期間がありそう”
21
下げ止まる=時の流れが止まる と考えた.
実質的な時間経過𝑓 𝑇 の導入
𝜇 𝑖 = 𝑦0 exp −𝜆 𝑓 𝑇 𝑖
22
時刻 𝑇
𝑓 𝑇
実質的な時間経過
𝜇
𝑠𝑙𝑜𝑝𝑒は 0,1 の範囲を動く
𝑠𝑙𝑜𝑝𝑒 = 1なら
時の流れは普段通り
𝑠𝑙𝑜𝑝𝑒 = 0なら
時は完全に止まる
𝑠𝑙𝑜𝑝𝑒と𝑓の実装例
• 制約のない変数 slope_raw を定義する
• tf.sigmoidで 0,1 の範囲の変数slope を作る
• slope の累積和で f を作る
例
• slope = [0,1,1,1,0,0,0,1,1,1] とすると,
f = [0,1,2,3,3,3,3,4,5,6] となる.
23
TensorFlowによる実装&結果
• modeling.html のModel 2
24
Model 3
時の流れを滑らかにする
25
数式への落とし込み④
“時の流れは滑らか”
26
時刻の隣同士の𝑠𝑙𝑜𝑝𝑒は“似ている”
slope_rawに2次のトレンドモデルを設定
1次のトレンドモデル
𝑡𝑟𝑒𝑛𝑑 𝑡 ~ 𝑁 𝑡𝑟𝑒𝑛𝑑 𝑡−1, 𝜎𝑡𝑟𝑒𝑛𝑑
2
𝑡 = 2, . . , 𝑇
• 𝑡𝑟𝑒𝑛𝑑の値が滑らかであることの一表現
• 使用頻度が高い!
トレンドの予測
• 最後の時刻𝑇以降は, 𝑡𝑟𝑒𝑛𝑑 𝑇を並べて予測する
実装
• 上式の対数尤度をそのままcostに追加すればよい
27
2次のトレンドモデル
𝑡𝑟𝑒𝑛𝑑 𝑡 − 𝑡𝑟𝑒𝑛𝑑 𝑡−1 ~ 𝑁 𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2, 𝜎𝑡𝑟𝑒𝑛𝑑
2
𝑡 = 3, . . , 𝑇
あるいは,
𝑡𝑟𝑒𝑛𝑑 𝑡 ~ 𝑁 2 𝑡𝑟𝑒𝑛𝑑 𝑡−1 − 𝑡𝑟𝑒𝑛𝑑 𝑡−2, 𝜎𝑡𝑟𝑒𝑛𝑑
2
𝑡 = 3, . . , 𝑇
• 𝑡𝑟𝑒𝑛𝑑の変動分が滑らかであることの一表現
• 使用頻度が高い!
トレンドの予測
• 最後の時刻𝑇以降は, 最後の変動𝑡𝑟𝑒𝑛𝑑 𝑇 − 𝑡𝑟𝑒𝑛𝑑 𝑇−1
がそのまま続くものとして予測する.
28
TensorFlowによる実装&結果
• modeling.html のModel 3
29
まとめ
• 現実は, ツールの前提条件をいとも簡単に破るので,
自分で拡張できるようにモデルを理解してほしい.
• 知識を数式に落とし込む経験は非常に大切.
日々やってみよう.
• TensorFlowなどの汎用的なツールに慣れておこう.
• 実は今日やったようなモデルの試行錯誤をずっと簡
単にできるのがStan. Stanの話はまたいつか.
30

More Related Content

More from . .

統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す. .
 
Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル). .
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~. .
 
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す. .
 
Replica exchange MCMC
Replica exchange MCMCReplica exchange MCMC
Replica exchange MCMC. .
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング. .
 
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LTデータ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT. .
 
分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM. .
 
100人のための統計解析 和食レストラン編
100人のための統計解析   和食レストラン編100人のための統計解析   和食レストラン編
100人のための統計解析 和食レストラン編. .
 
とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム)とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム). .
 
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた. .
 
BUGSを使うメリット
BUGSを使うメリットBUGSを使うメリット
BUGSを使うメリット. .
 

More from . . (12)

統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す統計モデリングで癌の5年生存率データから良い病院を探す
統計モデリングで癌の5年生存率データから良い病院を探す
 
Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)Stanの紹介と応用事例(age heapingの統計モデル)
Stanの紹介と応用事例(age heapingの統計モデル)
 
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
MCMCサンプルの使い方 ~見る・決める・探す・発生させる~
 
階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す階層ベイズモデルで割安mobile PCを探す
階層ベイズモデルで割安mobile PCを探す
 
Replica exchange MCMC
Replica exchange MCMCReplica exchange MCMC
Replica exchange MCMC
 
順序データでもベイズモデリング
順序データでもベイズモデリング順序データでもベイズモデリング
順序データでもベイズモデリング
 
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LTデータ解析で割安賃貸物件を探せ!(山手線沿線編) LT
データ解析で割安賃貸物件を探せ!(山手線沿線編) LT
 
分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM分布から見た線形モデル・GLM・GLMM
分布から見た線形モデル・GLM・GLMM
 
100人のための統計解析 和食レストラン編
100人のための統計解析   和食レストラン編100人のための統計解析   和食レストラン編
100人のための統計解析 和食レストラン編
 
とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム)とある病んだ院生の体内時計(サーカディアンリズム)
とある病んだ院生の体内時計(サーカディアンリズム)
 
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
『予測にいかす統計モデリングの基本』の売上データの分析をトレースしてみた
 
BUGSを使うメリット
BUGSを使うメリットBUGSを使うメリット
BUGSを使うメリット
 

TensorFlowで統計モデリング