BAYONET:条件付き確率(CPT) の計算方法の違い [ベイジアンネット]
BAYONET:条件付き確率(CPT) の計算方法の違い
BAYONETでベイジアンネットワークを構築していたときの備忘録。
目的変数が2つあり、それぞれが条件付きの構造を持っているため、それを上手く表現できないか?と考えました。
変数A 変数B 件数
1 1 10
1 0 100
0 1 0
0 0 1000
という構造だったと仮定します。
つまり、変数Bが1の場合、必ず変数Aは1になる構造となっています。
A -> B というモデルを作り、Bの証拠状態を1に設定します。
B = 1の時、変数Aが1になる確率は、10 / 10 で1.0になるはずですが、得られる結果は、0.9083となります。
この原因は、条件付き確率(CPT) の計算方法による違いとのこと。
計算方法 1: MAP
MAP は正規化を行う際にサンプル数に1を加算します。
変数A 変数B 件数
1 1 10+1=11
1 0 100+1=101
0 1 0+1=1
0 0 1000+1=1001
計算方法 2: ML
MLは、得られたクロス集計表を真としてそのまま計算します。
MAPとMLの違いですが、データ数が多くなれば、MAPはMLに違づいていきます。
しかし、データ数が少ない場合、仮に
変数C 件数
1 2
0 0
であった場合、MLで計算すると、Cは必ず1を取るという状態になってしまいます。
これをMAPで計算すると、
変数C 件数
1 2+1
0 0+1
となり、C=1の確率は、3/4=0.75という状態になります。
データが少ない場合はMAPで計算し、データが多くなればMLでも良いということなんでしょう。
これらを閾値で自動的に判断するAUTOというオプションもあるようです。
ここで、注意として、各セルを+1するってことは、各変数が取りうる値は、それぞれ同じ確率で発生するという事前分布を仮定しています。
事前情報が何も分からないところからの初期値としては、なんとなく正しい気もしますが、今回のように絶対に発生しないケースにおいても、確率が1.0にならないので注意が必要ですね。
BAYONETでベイジアンネットワークを構築していたときの備忘録。
目的変数が2つあり、それぞれが条件付きの構造を持っているため、それを上手く表現できないか?と考えました。
変数A 変数B 件数
1 1 10
1 0 100
0 1 0
0 0 1000
という構造だったと仮定します。
つまり、変数Bが1の場合、必ず変数Aは1になる構造となっています。
A -> B というモデルを作り、Bの証拠状態を1に設定します。
B = 1の時、変数Aが1になる確率は、10 / 10 で1.0になるはずですが、得られる結果は、0.9083となります。
この原因は、条件付き確率(CPT) の計算方法による違いとのこと。
計算方法 1: MAP
MAP は正規化を行う際にサンプル数に1を加算します。
変数A 変数B 件数
1 1 10+1=11
1 0 100+1=101
0 1 0+1=1
0 0 1000+1=1001
計算方法 2: ML
MLは、得られたクロス集計表を真としてそのまま計算します。
MAPとMLの違いですが、データ数が多くなれば、MAPはMLに違づいていきます。
しかし、データ数が少ない場合、仮に
変数C 件数
1 2
0 0
であった場合、MLで計算すると、Cは必ず1を取るという状態になってしまいます。
これをMAPで計算すると、
変数C 件数
1 2+1
0 0+1
となり、C=1の確率は、3/4=0.75という状態になります。
データが少ない場合はMAPで計算し、データが多くなればMLでも良いということなんでしょう。
これらを閾値で自動的に判断するAUTOというオプションもあるようです。
ここで、注意として、各セルを+1するってことは、各変数が取りうる値は、それぞれ同じ確率で発生するという事前分布を仮定しています。
事前情報が何も分からないところからの初期値としては、なんとなく正しい気もしますが、今回のように絶対に発生しないケースにおいても、確率が1.0にならないので注意が必要ですね。