ベイジアンネットワークというのは、

因果関係のある確率事象を有向リンクで接続することで現象を表現するモデルです。




ベイジアンネットワークでは

    ノード:確率変数

    リンク:有向リンク

ネットワーク:非巡回有向グラフ




以下がベイジアンネットワークの例です。


塩うめー-sprinkler net

Cloudy…雲が出ている、出ていないのどちらかの値をとる2値確率変数

Sprinkler・・・スプリンクラーが作動した、作動しなかったのどちらかの値をとる2値確率変数

Rain・・・雨が降った、降らなかったのどちらかの値をとる2値確率変数

WetGrass・・・芝生が濡れている、濡れていないのどちらかの値をとる2値確率変数


有向リンクはノードの因果関係を表しています。

例えば、CloudyからSprinklerに向かってリンクが引かれています。

これはCloudyのとる状態がSplinklerの確率分布に影響を与えることを意味しています。

各ノードは条件付確率分布表を持っていますが、

Splinklerの確率分布は、親ノードであるCloudyの状態によって変わります。
同様にWet Glassの確率分布は親ノードであるSplinklerとRainの状態によって変わります。




ベイジアンネットワークを作成するには

①現象を説明する確率事象を決める(どんなノードを用いるか決める)

②構造学習を行う(有向リンクの引き方を決める=ノード間の因果関係を求める)

③パラメータ学習を行う(各ノードの条件付確率分布表を求める)




ベイジアンネットワークを用いて確率推論というものを行うことが出来ます。

確率推論とは、あるノードの状態が観測できたときに、他の未観測のノードの確率変数を求めることです。

例えば、「Splinklerが作動しなかった」という観測情報が得られたときに

「芝生が濡れている」確率を求めるなどです。




ベイジアンネットワークは、

患者の症状や検査結果から病名を推定するシステム、

過去の購入履歴からおすすめの商品をピックアップするシステムなどに使われているそうです。

(過去の購入履歴というノードの観測情報から、

ユーザーの興味のありそうな商品が何なのか確率推論で求めるというわけですね。たぶん。)