2016年2月10日水曜日

複数要因のBNモデル

超シンプルな BN:AgentRisk 登場」からの続き。

今回のモデルは、前回のモデルに以下のように、複数要因に関係する「Martin lateMartin 遅刻)」を追加したもの(図 6.3)。
このモデルにおける、初期値の確率テーブルは以下の通り。

6.1:列車ストライキ
 False  0.9
 True   0.1

6.2:「列車ストライキ」のもとで「Norman 遅刻」
    Train strike False  True
 False            0.9   0.2
 True             0.1   0.8

6.3Martin 寝坊
 False  0.6
 True   0.4

左は「表 6.4Martin 遅刻」。

よって以下の図 6.4(a) の結果を得る。
Norman 遅刻 17%」の算出は前回の通りで、「Martin 遅刻 44.6%」は以下のように算出する。

P(M=True) 、すなわち "the marginal probability for M = True" を求める。
 P(M=True) = P(M=True | O=True,T=True)P(O=True)P(T=True)
        + P(M=True | O=True,T=False)P(O=True)P(T=False)
        + P(M=True | O=False,T=True)P(O=False)P(T=True)
        + P(M=True | O=False,T=False)P(O=False)P(T=False)
        = 0.8*0.4*0.1 + 0.6*0.4*0.9 + 0.6*0.6*0.1 + 0.3*0.6*0.9
        = 0.446

一見複雑そうだが、そうでもない。要するに、表 6.4 Martin が遅刻する」4行目に注目して、P(M=True|O=*, T=*) の箇所に O, T の条件に応じた P(M=True) の確率を当てはめる。そしてP(O), P(T) は表 6.1, 6.3 からそれぞれ当てはめる。


Norman が遅刻で、Martin 遅刻の確率

以下が "Norman late" を True にした図 6.4(b)
"Train strike" の更新結果は前回の通り。前回と異なるのは、"Train strike" の更新が "Martin late", "Martin oversleeps" に影響していること。

この「Martin 遅刻の確率」54.235 % は以下のように算出する。
 P(M=True | N=True) = P(M=True | O=True,T=True)P(O=True)P(T=True | N=Ture)
        + P(M=True | O=True,T=False)P(O=True)P(T=False | N=Ture)
        + P(M=True | O=False,T=True)P(O=False)P(T=True | N=Ture)
        + P(M=True | O=False,T=False)P(O=False)P(T=False | N=Ture)
        = 0.8*0.4*0.47059 + 0.6*0.4*0.52941 + 0.6*0.6*0.47059 + 0.3*0.6*0.52941
        = 0.5423534

先の P(M=True) の算出と比較すると、以下の「Norman 遅刻」の P(T | N=True) の確率が加味されているのが分かる。

 P(T=True | N=Ture) = 0.47059, P(T=False | N=Ture) = 0.52941


このように「Norman の遅刻」の事象から始まる連鎖は、列車ストライキの確率を更新して

  1. Martin が遅刻する確率
  2. Martin が寝坊したかどうかの確率

を変化させた。

これらの変化の関係性は直感的に理解できるが、このように視覚的、且つ数値表示するとより明確だ。

Bayesian Networks の利点」に続く。

/* Tex */

0 件のコメント:

コメントを投稿