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

統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-Shiga University, RIKEN
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章nocchi_airport
 
構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性Shiga University, RIKEN
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章Shuyo Nakatani
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析Mitsuo Shimohata
 
21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)Toru Imai
 
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333Issei Kurahashi
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心takehikoihayashi
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択kazutantan
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)Takashi J OZAKI
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編Hiroshi Shimizu
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法Hidetoshi Matsui
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理するHiroshi Shimizu
 
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Kota Matsui
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズHiroshi Shimizu
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展Shiga University, RIKEN
 
Bayes Independence Test - HSIC と性能を比較する-
Bayes Independence Test - HSIC と性能を比較する-Bayes Independence Test - HSIC と性能を比較する-
Bayes Independence Test - HSIC と性能を比較する-Joe Suzuki
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギーHiroshi Shimizu
 

La actualidad más candente (20)

統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-統計的因果推論への招待 -因果構造探索を中心に-
統計的因果推論への招待 -因果構造探索を中心に-
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
StanとRでベイズ統計モデリングに関する読書会(Osaka.stan) 第四章
 
構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性構造方程式モデルによる因果探索と非ガウス性
構造方程式モデルによる因果探索と非ガウス性
 
星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章星野「調査観察データの統計科学」第3章
星野「調査観察データの統計科学」第3章
 
質的変数の相関・因子分析
質的変数の相関・因子分析質的変数の相関・因子分析
質的変数の相関・因子分析
 
21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)21世紀の手法対決 (MIC vs HSIC)
21世紀の手法対決 (MIC vs HSIC)
 
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
 
相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心相関と因果について考える:統計的因果推論、その(不)可能性の中心
相関と因果について考える:統計的因果推論、その(不)可能性の中心
 
ベイズファクターとモデル選択
ベイズファクターとモデル選択ベイズファクターとモデル選択
ベイズファクターとモデル選択
 
Granger因果による 時系列データの因果推定(因果フェス2015)
Granger因果による時系列データの因果推定(因果フェス2015)Granger因果による時系列データの因果推定(因果フェス2015)
Granger因果による 時系列データの因果推定(因果フェス2015)
 
Stanコードの書き方 中級編
Stanコードの書き方 中級編Stanコードの書き方 中級編
Stanコードの書き方 中級編
 
関数データ解析の概要とその方法
関数データ解析の概要とその方法関数データ解析の概要とその方法
関数データ解析の概要とその方法
 
心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する心理学におけるベイズ統計の流行を整理する
心理学におけるベイズ統計の流行を整理する
 
Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2Recent Advances on Transfer Learning and Related Topics Ver.2
Recent Advances on Transfer Learning and Related Topics Ver.2
 
心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ心理学者のためのGlmm・階層ベイズ
心理学者のためのGlmm・階層ベイズ
 
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
構造方程式モデルによる因果推論: 因果構造探索に関する最近の発展
 
Bayes Independence Test - HSIC と性能を比較する-
Bayes Independence Test - HSIC と性能を比較する-Bayes Independence Test - HSIC と性能を比較する-
Bayes Independence Test - HSIC と性能を比較する-
 
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM) 一般化線形モデル (GLM) & 一般化加法モデル(GAM)
一般化線形モデル (GLM) & 一般化加法モデル(GAM)
 
階層ベイズと自由エネルギー
階層ベイズと自由エネルギー階層ベイズと自由エネルギー
階層ベイズと自由エネルギー
 

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
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門Miyoshi Yuya
 
ベイズ統計学
ベイズ統計学 ベイズ統計学
ベイズ統計学 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によるベイジアンネットワーク入門 (12)

【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