Upload
tera-monagi
View
1.484
Download
1
Embed Size (px)
DESCRIPTION
Tokyo.R 39
Citation preview
お前の逐モン、GETだぜ!!!
第39回 勉強会@東京(#TokyoR)
@teramonagi
貴方が今すぐフォローすべき たった1つのトゥイッター・アカウント
• @Nekopuni_
2
3
WHY?
そんな彼がこんなん言ってました
5
畜じゃねぇし、逐だし
7
でも、それ、 いいフリだぜぇ?
8
お前の畜モン、GETだぜ!!!
第39回 勉強会@東京(#TokyoR)
@teramonagi
畜モンとは?
• 社畜モンスター、縮めて畜モン
• コヨウケイヤクショで捕まえられる
• 常に大量の仕事を抱える不思議な生物
• 仲間と仲良く暮らしている畜モンもいれば、職を失い公園や浜辺に生息している無職の野良畜モンも
10
本題、逐次モンテカルロ法
• Sequential MonteCarlo Method(SMC)
• 別名いっぱい(SIR, 粒子フィルタ)
• 逐次モンテカルロ→逐モン→(畜モン)
(こう呼んでる人を見たことはない)
• モンテカルロ法を用いた、系列データに対する、モデルの隠れ変数(状態変数)の逐次的な推定法
11
アルゴリズム、ダイジェスト
0:元気よく社畜を投げる
1:(尊い)労働を実行させる
2:営業成績の評価
3:リストラと採用の実施
4:1へ戻る 12 ※SMCの”フィルタリング”というアルゴリズムに相当
アルゴリズム、ダイジェスト
13 時点 0 1 2
アルゴリズム、ダイジェスト
• 0:元気よく社畜を投げる
14 時点 0 1 2
アルゴリズム、ダイジェスト
• 1:(尊い)労働を実行させる
15 時点 0 1 2
アルゴリズム、ダイジェスト
• 2:営業成績の評価
16 時点 0 1 2
70点
80点
60点
100点
30点
25点
アルゴリズム、ダイジェスト
• 3:リストラと採用の実施
17 時点 0 1 2
70点
80点
60点
100点
30点
25点
残留
残留
残留
残留
リストラ
リストラ
アルゴリズム、ダイジェスト
• 3:リストラと採用の実施
18 時点 0 1 2
70点
80点
60点
100点
30点
25点
残留
残留
残留
残留
リストラ
リストラ
アルゴリズム、ダイジェスト
• 1:(尊い)労働を実行させる
19 時点 0 1 2
大事なところなので、もう一度
20
アルゴリズム、ダイジェスト
• 0:元気よく社畜を投げる
21 時点 0 1 2
アルゴリズム、ダイジェスト
• 1:(尊い)労働を実行させる
22 時点 0 1 2
アルゴリズム、ダイジェスト
• 2:営業成績の評価
23 時点 0 1 2
70点
80点
60点
100点
30点
25点
アルゴリズム、ダイジェスト
• 3:リストラと採用の実施
24 時点 0 1 2
70点
80点
60点
100点
30点
25点
残留
残留
残留
残留
リストラ
リストラ
アルゴリズム、ダイジェスト
• 3:リストラと採用の実施
25 時点 0 1 2
70点
80点
60点
100点
30点
25点
残留
残留
残留
残留
リストラ
リストラ
アルゴリズム、ダイジェスト
• 1:(尊い)労働を実行させる
26 時点 0 1 2
アルゴリズム、ダイジェスト
0:元気よく社畜を投げる
1:(尊い)労働を実行させる
2:営業成績の評価
3:リストラと採用の実施
4:1へ戻る 27
アルゴリズム、ダイジェスト
0:初期分布作成
1:状態方程式を解く
2:尤度の計算
3:リサンプリングの処理
4:1へ戻る 28
くわしくは、これを読め
29 予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで
そんなSMC, 書いてみた
30
particle.filter <- function(x0, size.particle, size.dim, size.data, system.equation, likelihood, lag=0)
{
total.loglikelihood <- 0
#dimension index : paricle * dimension * lag
dims <- c(size.particle, size.dim, lag+1)
x0 <- array(c(rep(x0, each=size.particle),rep(NA, size.dim*size.particle*lag)), dims)
x <- array(rep(NA, size.particle*size.dim*(lag+1)), dims)
dimnames(x0) <- make.name(size.particle, size.dim, lag)
dimnames(x) <- make.name(size.particle, size.dim, lag)
states <- vector("list", size.data)
for( t in 1:size.data)
{
#Prediction : p(x_{t}|x_{t-1}) for(index.particle in 1:size.particle)
{
x[index.particle,, 1] <- system.equation(x0[index.particle,,1])
x[index.particle,,-1] <- x0[index.particle,,-(lag+1)]
}
#Likelihood : p(y_{t}|y_{1:t}) w <- apply(x, 1, function(z){likelihood(t, z[,1])})
total.loglikelihood <- total.loglikelihood + log(sum(w)/size.particle)
#Weight ' resampling
index <- resampling(w/sum(w))
#Filtering : p(x_{t}|y_{t}) x0 <- x[index,,,drop=FALSE]
states[[t]] <- make.state(t, w, x, x0)
}
list(loglikelihood=total.loglikelihood, size=c(particle=size.particle, data=size.data, dim=size.dim,lag=lag), states=states)
}
そんなSMC, 動かしてみた
31
• カルマンフィルタとあってそう
32
よし、では本番だ
私が本当にやりたかったもの
33 http://heartruptcy.blog.fc2.com/blog-entry-90.html
34
無理でした
結局、何?
35
で、実際どうすればいいの?
Stan使ったらいい 36
サプリメント的Blogポスト
37 http://d.hatena.ne.jp/teramonagi/20140525/1400996808
Enjoy!!! 38