SlideShare une entreprise Scribd logo
1  sur  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

Contenu connexe

Tendances

Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Taiji Suzuki
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門Miyoshi Yuya
 
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度Seiichi Uchida
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門Kawamoto_Kazuhiko
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説Shiga University, RIKEN
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)narumikanno0918
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」Keisuke Sugawara
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデルMasahiro Suzuki
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門tmtm otm
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明Haruka Ozaki
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門Retrieva inc.
 
PRML輪読#1
PRML輪読#1PRML輪読#1
PRML輪読#1matsuolab
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)Hiroshi Shimizu
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential EquationsDeep Learning JP
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装takehikoihayashi
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定Akira Masuda
 
3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布Junya Saito
 
異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知Ken'ichi Matsui
 

Tendances (20)

Sparse estimation tutorial 2014
Sparse estimation tutorial 2014Sparse estimation tutorial 2014
Sparse estimation tutorial 2014
 
ベイズ統計入門
ベイズ統計入門ベイズ統計入門
ベイズ統計入門
 
データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度データサイエンス概論第一=2-1 データ間の距離と類似度
データサイエンス概論第一=2-1 データ間の距離と類似度
 
グラフィカルモデル入門
グラフィカルモデル入門グラフィカルモデル入門
グラフィカルモデル入門
 
因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説因果探索: 基本から最近の発展までを概説
因果探索: 基本から最近の発展までを概説
 
潜在クラス分析
潜在クラス分析潜在クラス分析
潜在クラス分析
 
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
スパースモデリング、スパースコーディングとその数理(第11回WBA若手の会)
 
PRML第6章「カーネル法」
PRML第6章「カーネル法」PRML第6章「カーネル法」
PRML第6章「カーネル法」
 
深層生成モデルと世界モデル
深層生成モデルと世界モデル深層生成モデルと世界モデル
深層生成モデルと世界モデル
 
PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門PRML学習者から入る深層生成モデル入門
PRML学習者から入る深層生成モデル入門
 
変分ベイズ法の説明
変分ベイズ法の説明変分ベイズ法の説明
変分ベイズ法の説明
 
ブースティング入門
ブースティング入門ブースティング入門
ブースティング入門
 
PRML輪読#1
PRML輪読#1PRML輪読#1
PRML輪読#1
 
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
StanとRでベイズ統計モデリング読書会 導入編(1章~3章)
 
[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations[DL輪読会]Neural Ordinary Differential Equations
[DL輪読会]Neural Ordinary Differential Equations
 
傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装傾向スコア:その概念とRによる実装
傾向スコア:その概念とRによる実装
 
ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定ようやく分かった!最尤推定とベイズ推定
ようやく分かった!最尤推定とベイズ推定
 
3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布3分でわかる多項分布とディリクレ分布
3分でわかる多項分布とディリクレ分布
 
PRML8章
PRML8章PRML8章
PRML8章
 
異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知異常検知と変化検知 第4章 近傍法による異常検知
異常検知と変化検知 第4章 近傍法による異常検知
 

Similaire à 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
 
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333Issei Kurahashi
 

Similaire à 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
 
統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333統計的因果推論 勉強用 isseing333
統計的因果推論 勉強用 isseing333
 

Plus de Okamoto Laboratory, The University of Electro-Communications

Plus 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