Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

お前の逐モン、GETだぜ!

3,758 views

Published on

Tokyo.R 39

Published in: Technology

お前の逐モン、GETだぜ!

  1. 1. お前の逐モン、 GETだぜ!!! 第39回 勉強会@東京(#TokyoR) @teramonagi
  2. 2. 貴方が今すぐフォローすべき たった1つのトゥイッター・アカウント • @Nekopuni_ 2
  3. 3. 3 WHY?
  4. 4. 素晴らしき、俺様備忘録(Rネタ多数) 4 http://nekopuni.holy.jp/ ※「Rによるベイジアン動的線形モデル」の内容多数あり
  5. 5. そんな彼がこんなん言ってました 5
  6. 6. 本日のワタクシのLTタイトル 6 http://atnd.org/events/50887
  7. 7. 畜じゃねぇし、逐だし 7
  8. 8. でも、それ、 いいフリだぜぇ? 8
  9. 9. お前の畜モン、 GETだぜ!!! 第39回 勉強会@東京(#TokyoR) @teramonagi
  10. 10. 畜モンとは? • 社畜モンスター、縮めて畜モン • コヨウケイヤクショで捕まえられる • 常に大量の仕事を抱える不思議な生物 • 仲間と仲良く暮らしている畜モンもいれ ば、職を失い公園や浜辺に生息してい る無職の野良畜モンも 10
  11. 11. 本題、逐次モンテカルロ法 • Sequential MonteCarlo Method(SMC) • 別名いっぱい(SIR, 粒子フィルタ) • 逐次モンテカルロ→逐モン→(畜モン) (こう呼んでる人を見たことはない) • モンテカルロ法を用いた、系列データ に対する、モデルの隠れ変数(状態変 数)の逐次的な推定法 11
  12. 12. アルゴリズム、ダイジェスト 0:元気よく社畜を投げる 1:(尊い)労働を実行させる 2:営業成績の評価 3:リストラと採用の実施 4:1へ戻る 12※SMCの”フィルタリング”というアルゴリズムに相当
  13. 13. アルゴリズム、ダイジェスト 13 時点0 1 2
  14. 14. アルゴリズム、ダイジェスト • 0:元気よく社畜を投げる 14 時点0 1 2
  15. 15. アルゴリズム、ダイジェスト • 1:(尊い)労働を実行させる 15 時点0 1 2
  16. 16. アルゴリズム、ダイジェスト • 2:営業成績の評価 16 時点0 1 2 70点 80点 60点 100点 30点 25点
  17. 17. アルゴリズム、ダイジェスト • 3:リストラと採用の実施 17 時点0 1 2 70点 80点 60点 100点 30点 25点 残留 残留 残留 残留 リストラ リストラ
  18. 18. アルゴリズム、ダイジェスト • 3:リストラと採用の実施 18 時点0 1 2 70点 80点 60点 100点 30点 25点 残留 残留 残留 残留 リストラ リストラ
  19. 19. アルゴリズム、ダイジェスト • 1:(尊い)労働を実行させる 19 時点0 1 2
  20. 20. 大事なところな ので、もう一度 20
  21. 21. アルゴリズム、ダイジェスト • 0:元気よく社畜を投げる 21 時点0 1 2
  22. 22. アルゴリズム、ダイジェスト • 1:(尊い)労働を実行させる 22 時点0 1 2
  23. 23. アルゴリズム、ダイジェスト • 2:営業成績の評価 23 時点0 1 2 70点 80点 60点 100点 30点 25点
  24. 24. アルゴリズム、ダイジェスト • 3:リストラと採用の実施 24 時点0 1 2 70点 80点 60点 100点 30点 25点 残留 残留 残留 残留 リストラ リストラ
  25. 25. アルゴリズム、ダイジェスト • 3:リストラと採用の実施 25 時点0 1 2 70点 80点 60点 100点 30点 25点 残留 残留 残留 残留 リストラ リストラ
  26. 26. アルゴリズム、ダイジェスト • 1:(尊い)労働を実行させる 26 時点0 1 2
  27. 27. アルゴリズム、ダイジェスト 0:元気よく社畜を投げる 1:(尊い)労働を実行させる 2:営業成績の評価 3:リストラと採用の実施 4:1へ戻る 27
  28. 28. アルゴリズム、ダイジェスト 0:初期分布作成 1:状態方程式を解く 2:尤度の計算 3:リサンプリングの処理 4:1へ戻る 28
  29. 29. くわしくは、これを読め 29予測にいかす統計モデリングの基本―ベイズ統計入門から応用まで
  30. 30. そんな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) }
  31. 31. そんなSMC, 動かしてみた 31 • カルマンフィルタとあってそう
  32. 32. 32 よし、では本番だ
  33. 33. 私が本当にやりたかったもの 33http://heartruptcy.blog.fc2.com/blog-entry-90.html
  34. 34. 34 無理でした
  35. 35. 結局、何? 35 で、実際どう すればいい の?
  36. 36. Stan使ったらいい36
  37. 37. サプリメント的Blogポスト 37http://d.hatena.ne.jp/teramonagi/20140525/1400996808
  38. 38. Enjoy!!!38

×