SlideShare una empresa de Scribd logo
1 de 14
Rによるベイジアン
ネットワーク入門
○今井俊輔 岡本一志
電気通信大学
2017/1/7 パーティクルフィルタ研究会 1/14
はじめに
• 実現値 :確率変数がとる値
– 例:確率変数”天気” → ”天気”=☂, ”天気”=☁, ”天気”=☀
☂, ☁, ☀は”天気”がとる実現値
• 同時確率 :XとYが同時に起きる確率
– 𝑃 𝑋, 𝑌 = 𝑃 𝑋 𝑃(𝑌) (XとYが独立として)
• 条件付確率:Yを条件としてXが起きる確率
– 𝑃 𝑋|𝑌 = 𝑃 𝑋, 𝑌 /𝑃(𝑌)
• チェインルール:同時確率を条件付確率で計算
– 𝑃 𝑋, 𝑌, 𝑍 = 𝑃 𝑋, 𝑌 𝑍 𝑃 𝑍 = 𝑃 𝑋 𝑌, 𝑍 𝑃 𝑌 𝑍 𝑃(𝑍)
2017/1/7 パーティクルフィルタ研究会 2/14
ベイジアンネットワーク
• 確率変数の因果関係をグラフで表現
• 条件付き独立
– 矢印のない関係は条件付き独立
𝑋2
𝑋4
𝑋3𝑋1
𝑋5 𝑃(𝑋4|𝑋5)𝑃(𝑋5)
𝑃(𝑋2)
𝑃(𝑋1|𝑋2, 𝑋5)
𝑃(𝑋3|𝑋1)
𝑃(𝑋3, 𝑋1, 𝑋2, 𝑋4, 𝑋5)
= 𝑃(𝑋3|𝑋1, 𝑋2, 𝑋4, 𝑋5)
𝑃(𝑋1|𝑋2, 𝑋4, 𝑋5)
𝑃(𝑋2|𝑋4, 𝑋5)
𝑃(𝑋4|𝑋5)𝑃(𝑋5)
条件付独立で同時確率の
計算量を減らせる
2017/1/7 パーティクルフィルタ研究会
B A
原因から結果に矢印を引く
𝑃(𝐴|𝐵)
原因結果
原因の
確率変数
結果の
確率変数
Zを条件としてXとYは条件付き独立
⇋ 𝑃 𝑋, 𝑌 𝑍 = 𝑃 𝑋 𝑍 𝑃 𝑌 𝑍
条件付確率の定義より
𝑃 𝑋, 𝑌 𝑍 = 𝑃 𝑋 𝑌, 𝑍 𝑃 𝑌 𝑍
それぞれの右辺を比べると𝑃 𝑌 𝑍 を消去できて
𝑃 𝑋 𝑌, 𝑍 = 𝑃(𝑋|𝑍)
3/14
ベイジアンネットワークの応用例(併せ買いの推薦)
• 併せ買いの確率としての同時確率
– 例:P( =○, =○) = 0.98
⇒ パンとコーヒーは98%で一緒に買われる
• 情報推薦としてのベイジアンネットワーク
P( =○, =○)=0.98
P( =○, =○)=0.65
⋮
max{P( =○,?=○)}
構造学習
○ × ○
× ○ ○
⋮
2017/1/7 パーティクルフィルタ研究会 4/14
本日の内容
𝑃 𝐴 = 𝑡𝑟𝑢𝑒, 𝐵 = 𝑡𝑟𝑢𝑒 =?
𝑃 𝐴 = 𝑓𝑎𝑙𝑠𝑒, 𝐵 = 𝑡𝑟𝑢𝑒 =?
1. hc関数による構造学習
2. bn.fit関数による条件付確率表の
作成
3. gRainによる厳密な推論
4. bnlearnによる近似推論
環境
– 言語
– Rのライブラリ
– OS
2017/1/7 パーティクルフィルタ研究会
Radhakrishnan Nagarajan,
Marco Scutari , Sophie Lèbre 著
『Bayesian Networks in R: with
Applications in Systems Biology
(Use R!)』
ISBN 978-1-4614-6446-4
:R(最新のもの)
:bnlearn, gRain
:mac, linux, windows
5/14
下準備
#bnleranとgRainのインストール(詳細はhttps://www.bioconductor.org)
source("https://bioconductor.org/biocLite.R")
biocLite(c("bnlearn", "gRain"))
#ライブラリの読み込み
library(bnlearn)
library(gRain)
#データセットの読み込み
dataset = read.csv("./dataset.csv", header=T, row.names=T, colClasses="factor")
id 確率変数𝑿 𝟏 確率変数𝑿 𝟐 確率変数𝑿 𝟑 ・・・
1 ○ × ○
2 × ○ ○
⋮ ⋱
factor型で読む
テーブル形式のデータ
2017/1/7 パーティクルフィルタ研究会 6/14
1. hc関数による構造学習
#hill-climbingによる学習
res = hc(dataset, score='bic', debug=F, max.iter=10000)
𝑋1
𝑋3
𝑋4 𝑋2 𝑋1 𝑋2
𝑋1 𝑋2
𝑋1 𝑋2
𝑋1, 𝑋2
𝑋1, 𝑋3
𝑋1, 𝑋4
𝑋2, 𝑋3
𝑋2, 𝑋4
𝑋3, 𝑋4
Score
関数
6000
5000
3000
(𝑖1, 𝑖2)には を適用
データとのマッチ度
- スコアが改善
- max.iterに未到達
yes
no
終了
1イテレーション
終わらない場合は
max.iterを減らす
2017/1/7 パーティクルフィルタ研究会 7/14
2. bn.fit関数による条件付確率表の作成
#条件付確率表(CPT:ConditionalProbabilityTable)
の計算
fitted = bn.fit(res, dataset, method='bayes')
𝑃 𝑋2 𝑋1)𝑃(𝑋1)
𝑿 𝟏=〇 0.60
𝑿 𝟏=× 0.40
𝑿 𝟏=〇 𝑿 𝟏 =×
𝑿 𝟐=〇 0.60 0.45
𝑿 𝟐=× 0.40 0.55
id 𝑿 𝟏 𝑿 𝟐 𝑿 𝟑 ⋯
1 ○ × ○
2 × ○ ○
⋮ ⋱
数え上げる
𝑋1 𝑋2
2017/1/7 パーティクルフィルタ研究会
0頻度問題を回避
8/14
推論とその方法
• 推論とは
– エビデンス(わかっていること)を与えて、同時確率を求めること
• 推論の方法
– 厳密な推論 → 3.gRainによる厳密な推論(次スライド)
• 低速
• 推論結果が一意に定まる
– 近似推論 → 4.bnlearnによる近似推論(次々スライド)
• 高速
• 推論結果が実行毎に変わる
2017/1/7 パーティクルフィルタ研究会
𝑿 𝟐 =○ 𝑿 𝟐 =×
? ?
𝑃(𝑋2, 𝑋1 =○)
エビデンス
9/14
3. gRainによる厳密な推論(おすすめ)
#gRainによる厳密な推論
#コンパイル
model = compile(as.grain(fitted), propagate=T)
#エビデンスの設定
nodes = c(“X1") #エビデンスをセットする確率変数(複数可)
states = c("〇") #ノードにセットする実現値(複数可)
model.evidence = setEvidence(model,
nodes=nodes, states=states)
#p(X2,X1="○")の計算
state_predicted = querygrain(model.evidence,
nodes=c("X2"), type="marginal", exclude=F)
厳密推論のための計算
1.モラル化
2.三角化
3.クリーク
4.ジャンクションツリー
5.パラメータの再設定
推論を行う箇所
(compileの実行は一度でよい)
大量な確率変数、実現値ではcompile()で落ちる可能性
→ bnlearnによる近似推論(次スライド)
2017/1/7 パーティクルフィルタ研究会
𝑿 𝟐 =○ 𝑿 𝟐 =×
0.95 0.05
𝑃(𝑋2, 𝑋1 =○)
エビデンス予測したい
確率変数
10/14
4. bnlearnによる近似推論
#bnlearnによる近似推論
#bnlearnではcompileはいらない
#エビデンスをセットと推論を一緒にできる
particles = cpdist(fitted, nodes='X2', evidence=(X1=="〇"))
#結果を見る
prop.table(table(particles))
近似推論の注意点
・ 実行毎に結果が変わる(乱数を用いているため)
・ エビデンスの設定が面倒
#paste関数などを用いて文字列を生成する
str_eval = '(X2=="〇")&(X3=="×")'
#生成した文字列をparseしてevalする
particles = cpdist(fitted, nodes='X2',
evidence=eval(parse(str_eval)))
2017/1/7 パーティクルフィルタ研究会
𝑿 𝟐 =○ 𝑿 𝟐 =×
0.95 0.05
𝑃(𝑋2, 𝑋1 =○)
エビデンス予測したい
確率変数
11/14
トラブルシューティング その1
• bn.fitで落ちる
– 原因:確率変数、実現値の数が多い → 対策:それらを減らす
• 推論(querygrain)の結果がNaN
– 原因:与えるエビデンスが多すぎる → 対策:エビデンスを減らす
𝑃 𝑋0 𝑋1, 𝑋2, … )
𝑿 𝟏 =○,
𝑿 𝟐 =○, …
𝑿 𝟏 =○,
𝑿 𝟐 =×, …
…
𝑿 𝟎 =○
𝑿 𝟎 =×
𝑋2
𝑋0𝑋1
⋮
原因の実現値の組み合わせ数
Error in table(data[, c(node, parents), drop = FALSE]) :
attempt to make a table with >= 2^31 elements
2017/1/7 パーティクルフィルタ研究会 12/14
𝑃 𝑋, 𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛 = 𝑃 𝑋|𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛 ×
𝑃(𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛)原因=エビデンス結果
計算機で表せる
最小値を下回る
トラブルシューティング その2
2017/1/7 パーティクルフィルタ研究会
• 0頻度問題
– 条件付確率が0になると推論ができない
⇒数え上げで下駄をはかせる(スムージング)
– スムージングを行うオプション → method
• method='bayes':スムージング有り
• method='mle' :スムージング無し
– はかせる下駄の程度(Imaginary Sample Size) → iss
• 自動的に設定されるので指定しなくてもよい
• iss=20 :20サンプルの下駄上げ
#issも指定した計算例
fitted = bn.fit(res, dataset,
method='bayes', iss=20)
𝑿 𝟏=〇 𝑿 𝟏 =×
𝑿 𝟐=〇 0 12
𝑿 𝟐=× 21 152
𝑿 𝟏=〇 𝑿 𝟏 =×
𝑿 𝟐=〇 20 32
𝑿 𝟐=× 41 172
条件付確率
の計算へ+20
13/14
おわりに
• Rによるベイジアンネットワークの一通りの手順を紹介
– データセットから因果関係と条件付確率表の学習方法
– ベイジアンネットワークによる推論の2つの方法
• 厳密推論
• 近似推論
– トラブルシューティング
• 参考文献(全て英語)
– Radhakrishnan Nagarajan, Marco Scutari , Sophie Lèbre :
『Bayesian Networks in R: with Applications in Systems Biology (Use R!)』
– bnlearnのドキュメントおよびソースコード
https://cran.r-project.org/web/packages/bnlearn/bnlearn.pdf
https://github.com/cran/bnlearn
– gRainのドキュメントおよびソースコード
https://cran.r-project.org/web/packages/gRain/gRain.pdf
https://github.com/cran/gRain
2017/1/7 パーティクルフィルタ研究会 14/14

Más contenido relacionado

La actualidad más candente

負の二項分布について
負の二項分布について負の二項分布について
負の二項分布についてHiroshi Shimizu
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)Yoshitake Takebayashi
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について考司 小杉
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれHiroshi Shimizu
 
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法Satoshi Hara
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門Miyoshi Yuya
 
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理Taiji Suzuki
 
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由takehikoihayashi
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにShushi Namba
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介Naoki Hayashi
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展Shiga University, RIKEN
 
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-Koichiro Gibo
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門Momoko Hayamizu
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?Fumihiko Takahashi
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)RyuichiKanoh
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装takehikoihayashi
 
混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をするMasaru Tokuoka
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論Taiji Suzuki
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析Mitsuo Shimohata
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデルKei Nakagawa
 

La actualidad más candente (20)

負の二項分布について
負の二項分布について負の二項分布について
負の二項分布について
 
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
マルコフ連鎖モンテカルロ法 (2/3はベイズ推定の話)
 
MCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法についてMCMCによるベイズ因子分析法について
MCMCによるベイズ因子分析法について
 
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれRで因子分析 商用ソフトで実行できない因子分析のあれこれ
Rで因子分析 商用ソフトで実行できない因子分析のあれこれ
 
アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法アンサンブル木モデル解釈のためのモデル簡略化法
アンサンブル木モデル解釈のためのモデル簡略化法
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門
 
数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理数学で解き明かす深層学習の原理
数学で解き明かす深層学習の原理
 
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由
なぜベイズ統計はリスク分析に向いているのか? その哲学上および実用上の理由
 
ベイズモデリングと仲良くするために
ベイズモデリングと仲良くするためにベイズモデリングと仲良くするために
ベイズモデリングと仲良くするために
 
ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介ベイズ統計学の概論的紹介
ベイズ統計学の概論的紹介
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
Rubinの論文(の行間)を読んでみる-傾向スコアの理論-
 
パターン認識と機械学習入門
パターン認識と機械学習入門パターン認識と機械学習入門
パターン認識と機械学習入門
 
時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?時系列予測にTransformerを使うのは有効か?
時系列予測にTransformerを使うのは有効か?
 
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
勾配ブースティングの基礎と最新の動向 (MIRU2020 Tutorial)
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 
混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする混合モデルを使って反復測定分散分析をする
混合モデルを使って反復測定分散分析をする
 
機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論機械学習におけるオンライン確率的最適化の理論
機械学習におけるオンライン確率的最適化の理論
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析
 
金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル金融時系列のための深層t過程回帰モデル
金融時系列のための深層t過程回帰モデル
 

Similar a Rによるベイジアンネットワーク入門

【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へZansa
 
正則化による尤度比推定法を応用した多値分類器の改良
正則化による尤度比推定法を応用した多値分類器の改良正則化による尤度比推定法を応用した多値分類器の改良
正則化による尤度比推定法を応用した多値分類器の改良MasatoKikuchi4
 
Or学会用20160915.ver2
Or学会用20160915.ver2Or学会用20160915.ver2
Or学会用20160915.ver2Ryoma Nakagawa
 
ベイズ統計学
ベイズ統計学 ベイズ統計学
ベイズ統計学 moritama1515
 
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノートWataru Shito
 
PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」Keisuke Sugawara
 
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノートWataru Shito
 
確率の基礎
確率の基礎確率の基礎
確率の基礎諒 片山
 
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and AveragingYu Otsuka
 

Similar a Rによるベイジアンネットワーク入門 (11)

【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ【Zansa】第12回勉強会 -PRMLからベイズの世界へ
【Zansa】第12回勉強会 -PRMLからベイズの世界へ
 
Deep learning入門
Deep learning入門Deep learning入門
Deep learning入門
 
正則化による尤度比推定法を応用した多値分類器の改良
正則化による尤度比推定法を応用した多値分類器の改良正則化による尤度比推定法を応用した多値分類器の改良
正則化による尤度比推定法を応用した多値分類器の改良
 
Or学会用20160915.ver2
Or学会用20160915.ver2Or学会用20160915.ver2
Or学会用20160915.ver2
 
ベイズ統計学
ベイズ統計学 ベイズ統計学
ベイズ統計学
 
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 2.講義ノート
 
PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」PRML第9章「混合モデルとEM」
PRML第9章「混合モデルとEM」
 
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート
演習II.第1章 ベイズ推論の考え方 Part 1.講義ノート
 
確率の基礎
確率の基礎確率の基礎
確率の基礎
 
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
[The Elements of Statistical Learning]Chapter8: Model Inferennce and Averaging
 
Oshasta em
Oshasta emOshasta em
Oshasta em
 

Más de Okamoto Laboratory, The University of Electro-Communications

Más de Okamoto Laboratory, The University of Electro-Communications (19)

クラウドソーシングにおける協調的な共同作業に対する組織構成システム
クラウドソーシングにおける協調的な共同作業に対する組織構成システムクラウドソーシングにおける協調的な共同作業に対する組織構成システム
クラウドソーシングにおける協調的な共同作業に対する組織構成システム
 
リンク予測に基づく共同研究者推薦システムの試作
リンク予測に基づく共同研究者推薦システムの試作リンク予測に基づく共同研究者推薦システムの試作
リンク予測に基づく共同研究者推薦システムの試作
 
Visualizing the Importance of Floor-Plan Image Features in Rent-Prediction Mo...
Visualizing the Importance of Floor-Plan Image Features in Rent-Prediction Mo...Visualizing the Importance of Floor-Plan Image Features in Rent-Prediction Mo...
Visualizing the Importance of Floor-Plan Image Features in Rent-Prediction Mo...
 
Directed Graph-based Researcher Recommendation by Random Walk with Restart an...
Directed Graph-based Researcher Recommendation by Random Walk with Restart an...Directed Graph-based Researcher Recommendation by Random Walk with Restart an...
Directed Graph-based Researcher Recommendation by Random Walk with Restart an...
 
間取り図を用いた賃料予測モデルに関する一検討
間取り図を用いた賃料予測モデルに関する一検討間取り図を用いた賃料予測モデルに関する一検討
間取り図を用いた賃料予測モデルに関する一検討
 
Development of a Collaborator Recommender System Based on Directed Graph Model
Development of a Collaborator Recommender System Based on Directed Graph ModelDevelopment of a Collaborator Recommender System Based on Directed Graph Model
Development of a Collaborator Recommender System Based on Directed Graph Model
 
Rent Prediction Models with Floor Plan Images
Rent Prediction Models with Floor Plan ImagesRent Prediction Models with Floor Plan Images
Rent Prediction Models with Floor Plan Images
 
分散表現を用いたリアルタイム学習型セッションベース推薦システム
分散表現を用いたリアルタイム学習型セッションベース推薦システム分散表現を用いたリアルタイム学習型セッションベース推薦システム
分散表現を用いたリアルタイム学習型セッションベース推薦システム
 
アイテム分散表現の階層化・集約演算に基づくセッションベース推薦システム
アイテム分散表現の階層化・集約演算に基づくセッションベース推薦システムアイテム分散表現の階層化・集約演算に基づくセッションベース推薦システム
アイテム分散表現の階層化・集約演算に基づくセッションベース推薦システム
 
発売日前のレビューとPU-Learningを用いた
スパムレビュー検出
発売日前のレビューとPU-Learningを用いた
スパムレビュー検出発売日前のレビューとPU-Learningを用いた
スパムレビュー検出
発売日前のレビューとPU-Learningを用いた
スパムレビュー検出
 
モデルベース協調フィルタリングにおける推薦の透明性に関する検討
モデルベース協調フィルタリングにおける推薦の透明性に関する検討モデルベース協調フィルタリングにおける推薦の透明性に関する検討
モデルベース協調フィルタリングにおける推薦の透明性に関する検討
 
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
重回帰分析による推薦の透明性を有したモデルベース協調フィルタリング
 
Word2Vecによる次元圧縮と重回帰分析型協調フィルタリングへの応用
Word2Vecによる次元圧縮と重回帰分析型協調フィルタリングへの応用Word2Vecによる次元圧縮と重回帰分析型協調フィルタリングへの応用
Word2Vecによる次元圧縮と重回帰分析型協調フィルタリングへの応用
 
数式からみるWord2Vec
数式からみるWord2Vec数式からみるWord2Vec
数式からみるWord2Vec
 
単語の分散表現の 購買履歴への応用
単語の分散表現の 購買履歴への応用単語の分散表現の 購買履歴への応用
単語の分散表現の 購買履歴への応用
 
機関リポジトリから収集した学術論文のテキスト解析に関する一検討
機関リポジトリから収集した学術論文のテキスト解析に関する一検討機関リポジトリから収集した学術論文のテキスト解析に関する一検討
機関リポジトリから収集した学術論文のテキスト解析に関する一検討
 
Text Analysis of Academic Papers Archived in Institutional Repositories
Text Analysis of Academic Papers Archived in Institutional RepositoriesText Analysis of Academic Papers Archived in Institutional Repositories
Text Analysis of Academic Papers Archived in Institutional Repositories
 
Families of Triangular Norm Based Kernel Function and Its Application to Kern...
Families of Triangular Norm Based Kernel Function and Its Application to Kern...Families of Triangular Norm Based Kernel Function and Its Application to Kern...
Families of Triangular Norm Based Kernel Function and Its Application to Kern...
 
これから始めるディープラーニング
これから始めるディープラーニングこれから始めるディープラーニング
これから始めるディープラーニング
 

Rによるベイジアンネットワーク入門

  • 2. はじめに • 実現値 :確率変数がとる値 – 例:確率変数”天気” → ”天気”=☂, ”天気”=☁, ”天気”=☀ ☂, ☁, ☀は”天気”がとる実現値 • 同時確率 :XとYが同時に起きる確率 – 𝑃 𝑋, 𝑌 = 𝑃 𝑋 𝑃(𝑌) (XとYが独立として) • 条件付確率:Yを条件としてXが起きる確率 – 𝑃 𝑋|𝑌 = 𝑃 𝑋, 𝑌 /𝑃(𝑌) • チェインルール:同時確率を条件付確率で計算 – 𝑃 𝑋, 𝑌, 𝑍 = 𝑃 𝑋, 𝑌 𝑍 𝑃 𝑍 = 𝑃 𝑋 𝑌, 𝑍 𝑃 𝑌 𝑍 𝑃(𝑍) 2017/1/7 パーティクルフィルタ研究会 2/14
  • 3. ベイジアンネットワーク • 確率変数の因果関係をグラフで表現 • 条件付き独立 – 矢印のない関係は条件付き独立 𝑋2 𝑋4 𝑋3𝑋1 𝑋5 𝑃(𝑋4|𝑋5)𝑃(𝑋5) 𝑃(𝑋2) 𝑃(𝑋1|𝑋2, 𝑋5) 𝑃(𝑋3|𝑋1) 𝑃(𝑋3, 𝑋1, 𝑋2, 𝑋4, 𝑋5) = 𝑃(𝑋3|𝑋1, 𝑋2, 𝑋4, 𝑋5) 𝑃(𝑋1|𝑋2, 𝑋4, 𝑋5) 𝑃(𝑋2|𝑋4, 𝑋5) 𝑃(𝑋4|𝑋5)𝑃(𝑋5) 条件付独立で同時確率の 計算量を減らせる 2017/1/7 パーティクルフィルタ研究会 B A 原因から結果に矢印を引く 𝑃(𝐴|𝐵) 原因結果 原因の 確率変数 結果の 確率変数 Zを条件としてXとYは条件付き独立 ⇋ 𝑃 𝑋, 𝑌 𝑍 = 𝑃 𝑋 𝑍 𝑃 𝑌 𝑍 条件付確率の定義より 𝑃 𝑋, 𝑌 𝑍 = 𝑃 𝑋 𝑌, 𝑍 𝑃 𝑌 𝑍 それぞれの右辺を比べると𝑃 𝑌 𝑍 を消去できて 𝑃 𝑋 𝑌, 𝑍 = 𝑃(𝑋|𝑍) 3/14
  • 4. ベイジアンネットワークの応用例(併せ買いの推薦) • 併せ買いの確率としての同時確率 – 例:P( =○, =○) = 0.98 ⇒ パンとコーヒーは98%で一緒に買われる • 情報推薦としてのベイジアンネットワーク P( =○, =○)=0.98 P( =○, =○)=0.65 ⋮ max{P( =○,?=○)} 構造学習 ○ × ○ × ○ ○ ⋮ 2017/1/7 パーティクルフィルタ研究会 4/14
  • 5. 本日の内容 𝑃 𝐴 = 𝑡𝑟𝑢𝑒, 𝐵 = 𝑡𝑟𝑢𝑒 =? 𝑃 𝐴 = 𝑓𝑎𝑙𝑠𝑒, 𝐵 = 𝑡𝑟𝑢𝑒 =? 1. hc関数による構造学習 2. bn.fit関数による条件付確率表の 作成 3. gRainによる厳密な推論 4. bnlearnによる近似推論 環境 – 言語 – Rのライブラリ – OS 2017/1/7 パーティクルフィルタ研究会 Radhakrishnan Nagarajan, Marco Scutari , Sophie Lèbre 著 『Bayesian Networks in R: with Applications in Systems Biology (Use R!)』 ISBN 978-1-4614-6446-4 :R(最新のもの) :bnlearn, gRain :mac, linux, windows 5/14
  • 6. 下準備 #bnleranとgRainのインストール(詳細はhttps://www.bioconductor.org) source("https://bioconductor.org/biocLite.R") biocLite(c("bnlearn", "gRain")) #ライブラリの読み込み library(bnlearn) library(gRain) #データセットの読み込み dataset = read.csv("./dataset.csv", header=T, row.names=T, colClasses="factor") id 確率変数𝑿 𝟏 確率変数𝑿 𝟐 確率変数𝑿 𝟑 ・・・ 1 ○ × ○ 2 × ○ ○ ⋮ ⋱ factor型で読む テーブル形式のデータ 2017/1/7 パーティクルフィルタ研究会 6/14
  • 7. 1. hc関数による構造学習 #hill-climbingによる学習 res = hc(dataset, score='bic', debug=F, max.iter=10000) 𝑋1 𝑋3 𝑋4 𝑋2 𝑋1 𝑋2 𝑋1 𝑋2 𝑋1 𝑋2 𝑋1, 𝑋2 𝑋1, 𝑋3 𝑋1, 𝑋4 𝑋2, 𝑋3 𝑋2, 𝑋4 𝑋3, 𝑋4 Score 関数 6000 5000 3000 (𝑖1, 𝑖2)には を適用 データとのマッチ度 - スコアが改善 - max.iterに未到達 yes no 終了 1イテレーション 終わらない場合は max.iterを減らす 2017/1/7 パーティクルフィルタ研究会 7/14
  • 8. 2. bn.fit関数による条件付確率表の作成 #条件付確率表(CPT:ConditionalProbabilityTable) の計算 fitted = bn.fit(res, dataset, method='bayes') 𝑃 𝑋2 𝑋1)𝑃(𝑋1) 𝑿 𝟏=〇 0.60 𝑿 𝟏=× 0.40 𝑿 𝟏=〇 𝑿 𝟏 =× 𝑿 𝟐=〇 0.60 0.45 𝑿 𝟐=× 0.40 0.55 id 𝑿 𝟏 𝑿 𝟐 𝑿 𝟑 ⋯ 1 ○ × ○ 2 × ○ ○ ⋮ ⋱ 数え上げる 𝑋1 𝑋2 2017/1/7 パーティクルフィルタ研究会 0頻度問題を回避 8/14
  • 9. 推論とその方法 • 推論とは – エビデンス(わかっていること)を与えて、同時確率を求めること • 推論の方法 – 厳密な推論 → 3.gRainによる厳密な推論(次スライド) • 低速 • 推論結果が一意に定まる – 近似推論 → 4.bnlearnによる近似推論(次々スライド) • 高速 • 推論結果が実行毎に変わる 2017/1/7 パーティクルフィルタ研究会 𝑿 𝟐 =○ 𝑿 𝟐 =× ? ? 𝑃(𝑋2, 𝑋1 =○) エビデンス 9/14
  • 10. 3. gRainによる厳密な推論(おすすめ) #gRainによる厳密な推論 #コンパイル model = compile(as.grain(fitted), propagate=T) #エビデンスの設定 nodes = c(“X1") #エビデンスをセットする確率変数(複数可) states = c("〇") #ノードにセットする実現値(複数可) model.evidence = setEvidence(model, nodes=nodes, states=states) #p(X2,X1="○")の計算 state_predicted = querygrain(model.evidence, nodes=c("X2"), type="marginal", exclude=F) 厳密推論のための計算 1.モラル化 2.三角化 3.クリーク 4.ジャンクションツリー 5.パラメータの再設定 推論を行う箇所 (compileの実行は一度でよい) 大量な確率変数、実現値ではcompile()で落ちる可能性 → bnlearnによる近似推論(次スライド) 2017/1/7 パーティクルフィルタ研究会 𝑿 𝟐 =○ 𝑿 𝟐 =× 0.95 0.05 𝑃(𝑋2, 𝑋1 =○) エビデンス予測したい 確率変数 10/14
  • 11. 4. bnlearnによる近似推論 #bnlearnによる近似推論 #bnlearnではcompileはいらない #エビデンスをセットと推論を一緒にできる particles = cpdist(fitted, nodes='X2', evidence=(X1=="〇")) #結果を見る prop.table(table(particles)) 近似推論の注意点 ・ 実行毎に結果が変わる(乱数を用いているため) ・ エビデンスの設定が面倒 #paste関数などを用いて文字列を生成する str_eval = '(X2=="〇")&(X3=="×")' #生成した文字列をparseしてevalする particles = cpdist(fitted, nodes='X2', evidence=eval(parse(str_eval))) 2017/1/7 パーティクルフィルタ研究会 𝑿 𝟐 =○ 𝑿 𝟐 =× 0.95 0.05 𝑃(𝑋2, 𝑋1 =○) エビデンス予測したい 確率変数 11/14
  • 12. トラブルシューティング その1 • bn.fitで落ちる – 原因:確率変数、実現値の数が多い → 対策:それらを減らす • 推論(querygrain)の結果がNaN – 原因:与えるエビデンスが多すぎる → 対策:エビデンスを減らす 𝑃 𝑋0 𝑋1, 𝑋2, … ) 𝑿 𝟏 =○, 𝑿 𝟐 =○, … 𝑿 𝟏 =○, 𝑿 𝟐 =×, … … 𝑿 𝟎 =○ 𝑿 𝟎 =× 𝑋2 𝑋0𝑋1 ⋮ 原因の実現値の組み合わせ数 Error in table(data[, c(node, parents), drop = FALSE]) : attempt to make a table with >= 2^31 elements 2017/1/7 パーティクルフィルタ研究会 12/14 𝑃 𝑋, 𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛 = 𝑃 𝑋|𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛 × 𝑃(𝑌1 = 𝑦1, 𝑌2 = 𝑦2, … , 𝑌𝑛 = 𝑦 𝑛)原因=エビデンス結果 計算機で表せる 最小値を下回る
  • 13. トラブルシューティング その2 2017/1/7 パーティクルフィルタ研究会 • 0頻度問題 – 条件付確率が0になると推論ができない ⇒数え上げで下駄をはかせる(スムージング) – スムージングを行うオプション → method • method='bayes':スムージング有り • method='mle' :スムージング無し – はかせる下駄の程度(Imaginary Sample Size) → iss • 自動的に設定されるので指定しなくてもよい • iss=20 :20サンプルの下駄上げ #issも指定した計算例 fitted = bn.fit(res, dataset, method='bayes', iss=20) 𝑿 𝟏=〇 𝑿 𝟏 =× 𝑿 𝟐=〇 0 12 𝑿 𝟐=× 21 152 𝑿 𝟏=〇 𝑿 𝟏 =× 𝑿 𝟐=〇 20 32 𝑿 𝟐=× 41 172 条件付確率 の計算へ+20 13/14
  • 14. おわりに • Rによるベイジアンネットワークの一通りの手順を紹介 – データセットから因果関係と条件付確率表の学習方法 – ベイジアンネットワークによる推論の2つの方法 • 厳密推論 • 近似推論 – トラブルシューティング • 参考文献(全て英語) – Radhakrishnan Nagarajan, Marco Scutari , Sophie Lèbre : 『Bayesian Networks in R: with Applications in Systems Biology (Use R!)』 – bnlearnのドキュメントおよびソースコード https://cran.r-project.org/web/packages/bnlearn/bnlearn.pdf https://github.com/cran/bnlearn – gRainのドキュメントおよびソースコード https://cran.r-project.org/web/packages/gRain/gRain.pdf https://github.com/cran/gRain 2017/1/7 パーティクルフィルタ研究会 14/14