ベイジアン・ ネットワークベイジアンネットワーク •概要...

20
ベイジアン・ ネットワーク

Upload: others

Post on 08-Aug-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイジアン・ネットワーク

Page 2: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイズの定理

• P(A) = 事象Aが発生する確率(事前確率)

• P(B|A) = 事象Aが起きた後での、事象Bの確率(事後確率)

𝑃 𝐴, 𝐵 = 𝑃 𝐵 𝐴 𝑃 𝐴 = 𝑃 𝐴 𝐵 𝑃 𝐵

𝑃 𝐵 𝐴 =𝑃 𝐴 𝐵𝑃 𝐴

𝑃 𝐵A

B

𝑃 𝐵 𝐴

Page 3: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイズの定理

確率変数の取る値が2値である場合(真偽,Yes/Noなど)は次式となる.

𝐴 = 𝐴, 𝐴 , 𝐵 = {𝐵, 𝐵}

𝐴 :Aの否定

𝑃 𝐵 𝐴 =𝑃 𝐴 𝐵𝑃 𝐴

𝑃(𝐵)

=𝑃 𝐴 𝐵

𝑃 𝐴 𝐵 𝑃 𝐵 +𝑃 𝐴 𝐵 𝑃 𝐵𝑃 𝐵

Page 4: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイズの定理

確率変数の値が複数,つまり𝐴 = 𝐴1, 𝐴2, ⋯ , 𝐴𝑀

𝐵 = 𝐵1, 𝐵2, ⋯ , 𝐵𝑁

の場合は次式となる.

𝑃 𝐵𝑖 𝐴𝑗 =𝑃 𝐴𝑗 𝐵𝑖

𝑃 𝐴𝑗𝑃(𝐵𝑖)

=𝑃 𝐴𝑗 𝐵𝑖

𝑘 𝑃 𝐴𝑗 𝐵𝑘 𝑃 𝐵𝑘

𝑃 𝐵𝑖

Page 5: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

例題1臨床検査における偽陽性検査

• 検査精度

–病気である患者を「陽性」と判定する確率が99%

–病気でない患者を「陰性」と判定する確率95% (「陽性」と判定する確率5%)

• 患者が病気である確率0.1%

• 偽陽性(陰性だ(病気でない)が陽性と判断された状態)である確率を求める.

Page 6: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題1臨床検査における偽陽性検査

• A:患者が病気である確率

• B:検査結果が陽性である確率

𝑃 𝐴 𝐵 =𝑃 𝐵 𝐴 𝑃 𝐴

𝑃 𝐵

=𝑃 𝐵 𝐴 𝑃 𝐴

𝑃 𝐵 𝐴 𝑃 𝐴 + 𝑃 𝐵 𝐴 𝑃 𝐴

=0.99 × 0.001

0.99 × 0.001 + 0.05 × 0.999= 0.019 =

偽陽性=1-0.019 = 0.981

Page 7: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

演習問題1スパムメール

• メールフォルダにあるメールのうち,60%がスパムである.

• 60%のスパムメールのうち– 80%が単語”buy”を含んでいる.– 20%が単語”buy”を含んでいない.

• 40%の非スパムメールのうち– 10%が単語”buy”を含んでいる.– 90%が単語”buy”を含んでいない.

• このとき,新たなメールが単語”buy”を含んでいるときに,そのメールがスパムである確率はどのように推定できるか.

Page 8: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイジアンネットワーク

Page 9: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ベイジアンネットワーク

• 概要

–ベイジアンネットワークとは確率変数間の依存関係を非循環有向グラフで表現するモデルである.

–確率変数をノードで表し,変数間の因果関係をリンクで表す.

–確率変数の非線形関係式を定義し,不確実性をうまく扱うことができる.

9

Page 10: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

どういう用途に用いるか?

Q) 食事がしたい!

子供が騒いでも良さそうなファミリーレストラン

家族カップル

イタリアン,フレンチ

Page 11: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

場所

時間

人数

費用 食事

食事={ファミレス,フレンチ,ラーメン}時間={朝,昼,夜}・・・

Page 12: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題2盗難(された)車

NO 盗難 色 車種 国産・輸入

1 Yes 赤 スポーツ 国産

2 No 赤 スポーツ 国産

3 Yes 赤 スポーツ 国産

4 No 黄 スポーツ 国産

5 Yes 黄 スポーツ 輸入

6 No 黄 SUV 輸入

7 Yes 黄 SUV 輸入

8 No 黄 SUV 国産

9 No 赤 SUV 輸入

10 Yes 赤 スポーツ 輸入

ベイジアンネットワークを作成し,赤い国産SUVの盗難を推定する.

Page 13: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題2(1)

state <- c("Y", "N", "Y", "N", "Y", "N", "Y", "N", "N", "Y" ) col <- c("R", "R", "R", Y", "Y", "Y", "Y", "Y", "R", "R")type <- c("Sport", "Sport", "Sport", "Sport", "Sport", "SUV", "SUV", "SUV", "SUV", "Sport" )import <- c("N", "N", "N", "N", "Y", "Y", "Y", "N", "Y", "Y")data.bn <- data.frame(state, col, type, import)

*データの準備install.packages("deal", dependencies = TRUE)

*パッケージのインストールInstalling package into ‘C:/Users/kita/Documents/R/win-library/3.3’(as ‘lib’ is unspecified)trying URL 'https://cran.rstudio.com/bin/windows/contrib/3.3/deal_1.2-37.zip'Content type 'application/zip' length 189773 bytes (185 KB)downloaded 185 KB

package ‘deal’ successfully unpacked and MD5 sums checked

The downloaded binary packages are inC:¥Users¥kita¥AppData¥Local¥Temp¥RtmpsnpJei¥downloaded_packages

Page 14: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題2(2)

library(deal)

*パッケージをロード

Warning message:

パッケージ ‘deal’ はバージョン3.3.2 の R の下で造られました

net.pre.bn <- network(data.bn)

plot(net.pre.bn)

*ノードのみのネットワークの作成と表示

Page 15: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題2(3)

ht.prior <- jointprior(net.pre.bn)*事前確率分布の計算

Imaginary sample size: 32

update <- learn(net.pre.bn, data.bn, ht.prior)net.post.bn <- autosearch(getnetwork(update), data.bn, ht.prior, trace=FALSE)[Autosearch (1) -28.16808 [state|type][col][type][import](2) -28.10776 [state|type][col|type][type][import](3) -28.04743 [state|type][col|type][type][import|type]Total 0.05 add 0.03 rem 0.02 turn 0 sort 0 choose 0 rest 0 ]

plot(getnetwork(net.post.bn))*事後確率とネットワークの探索

Page 16: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ナイーブ(単純)ベイズ推定器

確率変数,確率変数間の条件付依存関係,その条件付確率によって定義される.

ネットワークが,親ノードと子ノードの間の1段からなる.

𝐵

𝐴1 𝐴2 𝐴𝑀・・・・・

子ノード(結果)

親ノード(原因)

Naïve ベイズ

Page 17: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

ナイーブ(単純)ベイズ推定器

𝑃(𝐴1, 𝐴2, ⋯ , 𝐴𝑀 , 𝐵)= 𝑃 𝐵 𝐴1, 𝐴2, ⋯ , 𝐴𝑀 𝑃 𝐴1, 𝐴2, ⋯ , 𝐴𝑀

= 𝑃 𝐴1, 𝐴2, ⋯ , 𝐴𝑀 𝐵 𝑃 𝐵

𝑃 𝐵 𝐴1, 𝐴2, ⋯ , 𝐴𝑀 =𝑃 𝐴1, 𝐴2, ⋯ , 𝐴𝑀 𝐵

𝑃 𝐴1,𝐴2,⋯,𝐴𝑀𝑃 𝐵

𝐵

𝐴1 𝐴2 𝐴𝑀・・・

Page 18: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題3(1)

install.packages("e1071", dependencies = TRUE)*パッケージのインストール

Installing package into ‘C:/Users/kita/Documents/R/win-library/3.3’(as ‘lib’ is unspecified)also installing the dependencies ‘mlbench’, ‘randomForest’, ‘xtable’…..

library(e1071)*パッケージのロード

Warning message:パッケージ ‘e1071’ はバージョン 3.3.2 の R の下で造られました

Page 19: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

練習問題3(2)

predict.bn <- naiveBayes(state~., data=data.bn)*単純ベイズ予測式を作成

col <- c("R")type <- c("SUV")import <- c("N")data.bn2 <- data.frame(col,type,import)

*予測したいデータを作成pred.res.bn <- predict(predict.bn, data.bn2)

*予測結果を求めるpred.res.bn

*結果を表示する[1] YLevels: N Y

Page 20: ベイジアン・ ネットワークベイジアンネットワーク •概要 –ベイジアンネットワークとは確率変数間の依存関 係を非循環有向グラフで表現するモデルである.

演習問題2

• 以下の情報についてベイジアンネットワークを作成する.

• 天候が晴れ,気温が寒く,湿度が高いときにテニスをする確率を求めよ.

天気 気温 湿度 テニス晴れ 暑い 高い しない晴れ 暑い 高い しない

曇り 暑い 高い する雨 温暖 高い する

雨 寒い 普通 する雨 寒い 普通 しない

曇り 寒い 普通 する晴れ 温暖 高い しない晴れ 寒い 普通 する雨 温暖 普通 する晴れ 温暖 普通 する

曇り 温暖 高い する曇り 暑い 普通 する

雨 温暖 高い しない