SlideShare uma empresa Scribd logo
1 de 26
Baixar para ler offline
Lorem Ipsum Dolor 
第9章「GLMのベイズモデル化と 
事後分布の推定」後半 
@「データ解析のための統計モデリング入門」読書会
お前だれよ 
❖ twitter:wwacky! 
! 
❖ 次回の会場係です! 
❖ 11月にサンフランシスコ行ってきます(仕事です)! 
❖ 普段はMac。Windowsは8しか持ってない(伏線)! 
! 
❖ 丸の内でデータ分析してます! 
❖ JOINしてくれる人。募集してます(マジで)
お品書き 
❖ MCMCサンプルで事後分布推定! 
❖ 複数パラメータのMCMCサンプリング! 
の2本立てです! 
! 
! 
! 
内容的には、ほとんどツール(WinBUGS)の説明
お断り 
❖ WinBUGSインストール出来ませんでしたー!!!! 
XPモードとかも 
試したがダメ。! 
WindowsMeで 
育った俺も匙投げ 
ました。
❖ 代わりにStanでやりました(流行ってるっぽいから)! 
! 
❖ 他の選択肢だとJAGSは割と好き! 
❖ OpenBUGSは前使った時に微妙だったから嫌い
9.5 
MCMCサンプルから事後分布推定
9.4までの推定をStanで実施 
Stanのコード(poisson_reg.stanで保存) Rのコード 
// 入力データ宣言! 
data {! 
! int<lower=0> N;! 
! real x[N];! 
! int y[N];! 
! real xmean;! 
}! 
! 
// パラメータの定義! 
parameters {! 
! real beta1;! 
! real beta2;! 
}! 
! 
//モデルの定義! 
model {! 
! beta1 ~ normal(0, 1000);! 
! beta2 ~ normal(0, 1000);! 
! for (i in 1:N)! 
! ! y[i] ~ poisson(exp(beta1 + beta2 * (x[i] - xmean)));! 
} 
#初回のみインストール! 
Sys.setenv(MAKEFLAGS = “-j4")! 
source('http://mc-stan.org/rstan/install.R', echo = TRUE, 
max.deparse.length = 2000)! 
install_rstan()! 
! 
#ライブラリ読み込み! 
library(rstan)! 
#データ読み込み! 
load(“/path/to/kubobook2012/chapter09/d.RData”)! 
#データを配列に変換しておく! 
d.list = list(! 
x = d$x,! 
y = d$y,! 
xmean = mean(d$x),! 
N = nrow(d)! 
)! 
# MCMCサンプリング! 
result.stan = stan(file="poisson_reg.stan", data=d.list, 
iter=1600, chains=3, warmup=100, thin=3)
9.4までの推定をStanで実施 
❖ こんなかんじで動く
サンプリング結果を可視化 
#codaを使ってプロット! 
library(coda)! 
result.coda = mcmc.list(lapply(1:ncol(result.stan),function(x) mcmc(as.array(result.stan)[,x,])))! 
plot(result.coda) 
lp__は対数尤度のプロット
で、どう見ればいいの?
サンプリング結果を可視化 
#codaを使ってプロット! 
library(coda)! 
result.coda = mcmc.list(lapply(1:ncol(result.stan),function(x) mcmc(as.array(result.stan)[,x,])))! 
plot(result.coda) 
❖ 3試行実施しているので、3色に 
分かれてプロットされる! 
❖ 試行回数間で比較しても、ほぼ 
サンプルの分布は一致している 
ので安定してそう 
lp__は対数尤度のプロット
サンプリング結果を可視化 
#codaを使ってプロット! 
library(coda)! 
result.coda = mcmc.list(lapply(1:ncol(result.stan),function(x) mcmc(as.array(result.stan)[,x,])))! 
plot(result.coda) 
lp__は対数尤度のプロット 
❖ β1とβ2の周辺事後分布p(β1|Y), p(β1|Y)! 
❖ サンプリングした値を使ってカー 
ネル密度推定した結果がプロット 
される! 
! 
周辺事後分布は、もう片方のパラメー 
タで周辺化してある!
サンプリング値 
❖ いろいろやりたい時は、サンプ 
ル値を取り出して使えばおk 
# 実行結果からサンプルを取り出し! 
post = extract (result.stan, permuted = F)! 
! 
#データフレームに変換! 
post.m = melt (post)
(周辺)事後分布の統計量 
❖ MCMCの結果を確認してみる 
n_eff : the effective sample size! 
se_mean : the standard error of the mean
(周辺)事後分布の統計量 
とりあえず、推定結果を見るだけなら! 
! 
β1=1.98 β2=0.09
他に何が分かるのか? 
❖ 試行毎のばらつき! 
❖  でサンプル列間の収束を確認する! 
❖ だいたい が1.0に近ければ収束できてる! 
❖ 1.1超えてるとヤバイ(9章前半参照)
他に何が分かるのか? 
❖ 信頼区間(e.g. 95%信頼区間)! 
❖ β1の95%信頼区間は1.81~2.13。β2は-0.05~0.22! 
❖ 即ち「β1の値は95%の事後確率で1.81~2.13になる」と 
解釈できる! 
!
信頼区間の解釈 
推定値が0から離れているかどうか! 
! β2の95%信頼区間が-0.05~0.22! 
! →信頼区間が0を挟んでいるので、0から離れているとは 
いえない! 
! 
こういう解釈に使ったこと無いんだけど、やってる人って多 
いのか?(一般的な手法なのか誰か知ってる?)
9.6 
複数パラメーターのMCMCサンプリング
複数パラメータのサンプリング 
❖ パラメータが複数存在する場合は、1パラメータずつサ 
ンプリングすればおk 
β1 
β2 
初期値step1 step2 step3 ・・・ 
β1,0 
β2,0 
β2,0を定数として! 
β1,1サンプリング 
β1,1を定数として! 
β2,1サンプリング 
β2,1を定数として! 
β1,2サンプリング 
β1,2を定数として! 
β2,2サンプリング 
β2,2を定数として! 
β1,3サンプリング 
β1,3を定数として! 
β2,3サンプリング 
サンプリングの順序(β1とβ2のどっちからやるか)はどっちでもいい。! 
定常分布であれば、部分的なサンプリングも許されている! 
(逆に言うと、定常でない場合には影響があるので、試行毎の違いはチェックした方がいい)
ギブスサンプリング 
❖ メトロポリス法(8章で出てきたやつ)! 
❖ 新しい値の候補を乱数で作り、それに変化するかどうかを決める! 
❖ 更新は尤度が上がる場合か、尤度が上がらなくても一定確率で行う! 
! 
❖ ギブスサンプリング! 
❖ 新しい値の確率分布を作り、その確率分布のランダムサンプルを新しい値とする! 
! 
❖ ギブスサンプリングは、こんなメリットが・・・! 
❖ MCMCステップで、「元の値」と「更新された値」の相関が比較的小さい! 
❖ 事前共役分布の場合に、事後分布のサンプリングが簡単
ギブスサンプリング 
❖ 今回のポアソン分布に従うモデル式の場合のギブスサンプリング 
①初期値をβ1=0, β2=0とする! 
! 
②β2=0を定数として、β1をサンプリングするための確率分布(全条件付確率)を作成する! 
! 
! 
λyi 
λi) 
! 
p(β1|Y,β2 = 0.0) ∝ 
i exp(−p(β1) 
yi! 
! 
i 
③p(β1|Y, β2=0.0)からβ1をサンプリングする(β1=2.052がサンプリングされたとする)! 
④β1=2.052を定数として、β2をサンプリングするための確率分布(全条件付確率)を作成する! 
! 
! 
! 
⑤p(β2|Y, β1=2.052)からβ2をサンプリング! 
! 
⑥β1とβ2を更新しながら②~⑤を繰り返す 
サンプリング1step分 
尤度✕事前分布からβ2を消しただけ
共役事前分布 
❖ ギブスサンプリングは、事前分布が尤度の持つ確率分布 
と共役の確率分布だと、計算速度が早くなる 
事後分布  ∝     尤度   ✕   事前分布 
ガンマ分布! 
ポアソン分布! 
ガンマ分布! 
ベータ分布! 
二項分布! 
ベータ分布! 
ディリクレ分布 
多項分布 
ディリクレ分布 
事前分布が尤度のパラメータと共役関係だと、事後分布の 
確率分布が決まるので、事後分布のサンプリングが楽
共役事前分布 
みどり本9章では事前分布が正規分布なので共役関係では 
ないが、事前分布がガンマ分布で共役関係だと以下の通り 
事後分布  ∝     尤度   ✕   事前分布 
平均λの! 
ポアソン分布 
パラメータα,βの! 
ガンマ分布 
証明書こうとしたが、LaTexiTが使いづらくて諦めた。すまん! 
パラメータα',β'の! 
ガンマ分布
共役分布って使ったほうがいいの? 
❖ 事後分布が確率分布に従っていると、演算が楽になる! 
→計算速度が上がる! 
! 
❖ かと言って、推定にかけれる時間とのトレードオフで使 
うかどうか考えれば良い! 
❖ モデルの分かりやすさを優先とかでも時間が許せば 
OK
発表後追記 
❖ 会場の方から伺ったのですが、Stanはギブスサンプリン 
グ使ってないらしいです(HMC – Hamiltonian Monte 
Carloらしい)

Mais conteúdo relacionado

Destaque

3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布Junya Saito
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門Shuyo Nakatani
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木 Miyoshi Yuya
 
Pystan for nlp
Pystan for nlpPystan for nlp
Pystan for nlpXiangze
 
はじめてのパターン認識 第11章 11.1-11.2
はじめてのパターン認識 第11章 11.1-11.2はじめてのパターン認識 第11章 11.1-11.2
はじめてのパターン認識 第11章 11.1-11.2Prunus 1350
 

Destaque (6)

3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布
 
ノンパラベイズ入門の入門
ノンパラベイズ入門の入門ノンパラベイズ入門の入門
ノンパラベイズ入門の入門
 
決定木学習
決定木学習決定木学習
決定木学習
 
パターン認識 第10章 決定木
パターン認識 第10章 決定木 パターン認識 第10章 決定木
パターン認識 第10章 決定木
 
Pystan for nlp
Pystan for nlpPystan for nlp
Pystan for nlp
 
はじめてのパターン認識 第11章 11.1-11.2
はじめてのパターン認識 第11章 11.1-11.2はじめてのパターン認識 第11章 11.1-11.2
はじめてのパターン認識 第11章 11.1-11.2
 

Mais de Motoya Wakiyama

Repeat buyer prediction for e commerce, KDD2016
Repeat buyer prediction for e commerce, KDD2016Repeat buyer prediction for e commerce, KDD2016
Repeat buyer prediction for e commerce, KDD2016Motoya Wakiyama
 
続分かりやすいパターン認識 4章後半(4.7以降)
続分かりやすいパターン認識 4章後半(4.7以降)続分かりやすいパターン認識 4章後半(4.7以降)
続分かりやすいパターン認識 4章後半(4.7以降)Motoya Wakiyama
 
データ解析のための統計モデリング入門9章後半
データ解析のための統計モデリング入門9章後半データ解析のための統計モデリング入門9章後半
データ解析のための統計モデリング入門9章後半Motoya Wakiyama
 
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...Motoya Wakiyama
 
[Rec sys2013勉強会]orthogonal query recommendation
[Rec sys2013勉強会]orthogonal query recommendation[Rec sys2013勉強会]orthogonal query recommendation
[Rec sys2013勉強会]orthogonal query recommendationMotoya Wakiyama
 
はじめてのパターン認識 第8章 サポートベクトルマシン
はじめてのパターン認識 第8章 サポートベクトルマシンはじめてのパターン認識 第8章 サポートベクトルマシン
はじめてのパターン認識 第8章 サポートベクトルマシンMotoya Wakiyama
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)Motoya Wakiyama
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習Motoya Wakiyama
 

Mais de Motoya Wakiyama (8)

Repeat buyer prediction for e commerce, KDD2016
Repeat buyer prediction for e commerce, KDD2016Repeat buyer prediction for e commerce, KDD2016
Repeat buyer prediction for e commerce, KDD2016
 
続分かりやすいパターン認識 4章後半(4.7以降)
続分かりやすいパターン認識 4章後半(4.7以降)続分かりやすいパターン認識 4章後半(4.7以降)
続分かりやすいパターン認識 4章後半(4.7以降)
 
データ解析のための統計モデリング入門9章後半
データ解析のための統計モデリング入門9章後半データ解析のための統計モデリング入門9章後半
データ解析のための統計モデリング入門9章後半
 
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...
[Rec sys2013勉強会]using maximum coverage to optimize recommendation systems in ...
 
[Rec sys2013勉強会]orthogonal query recommendation
[Rec sys2013勉強会]orthogonal query recommendation[Rec sys2013勉強会]orthogonal query recommendation
[Rec sys2013勉強会]orthogonal query recommendation
 
はじめてのパターン認識 第8章 サポートベクトルマシン
はじめてのパターン認識 第8章 サポートベクトルマシンはじめてのパターン認識 第8章 サポートベクトルマシン
はじめてのパターン認識 第8章 サポートベクトルマシン
 
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)はじめてのパターン認識 第5章 k最近傍法(k_nn法)
はじめてのパターン認識 第5章 k最近傍法(k_nn法)
 
2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習2013.07.15 はじパタlt scikit-learnで始める機械学習
2013.07.15 はじパタlt scikit-learnで始める機械学習
 

データ解析のための統計モデリング入門9章後半