ベイジアンネットワーク
ワークショップ#1
事後レポート
2014.2.6
おことわり
• このレポートはワークショップ参加者からの質問やそれに対す
るアドバイスを筆者のメモなどから再構成したものです
• 発言の詳細やアドバイス内容の技術的な正確性において誤り
を含む可能性がありますが、その文責は筆者にあります
初歩的な疑問あれこれ
• 変数の選び方
• 離散化(連続値、カテゴリ化)の仕方
• モデルの良し悪しをどこでどのように判断するか
• データを優先するか、前提知識を優先するか
モデルってどうやって作ったらいいの?
いくつか、前提知識
• ベイジアンネットワークをデータから構築する場合、以下の2ス
テップを踏む
• 変数(ノード)間のリンクを探索する(構造学習)
• ノード毎の条件付き確率をデータの出現頻度から計算する
• 構造学習にはいくつかアルゴリズムがあるが、良く使われるも
のは、ノード毎に親となるノードを見つけに行くというもの
• 小さな決定木が集まったようなもの
• 親にするかどうかの判断は情報量基準による
• ベイジアンネットワークにおける確率分布は変数がカテゴリカ
ル変数なため、表の形で表される
データからモデルの構築手順(試行錯誤)
コーディング
構造設計
評価
• 変数選択
• 離散化
• 連続値からカテゴリ変数へ
• カテゴリの統合/分離(または水準変更)
• クロス集計
• 欠損や低頻度が現れないか
• ムラが無いか
• 構造
• リンクの有無や方向が前提知識と矛盾しないか
• 問題解決に必要なリンクが残っているか
• 推論
• 感度分析
• 予測に対するクロスバリデーション/オープンテスト
• リンクの有無や向きを仮定
• 前提知識
• 問題解決に必要と思われるリンク
ベイジアンネットワークの評価階層
状態
(コーディング)
• モデル化したい世界の情報が必要かつ十分に含まれている
か
分布
• 状態空間でデータが均等に分布しているか
• データは十分か(欠測または低頻度でない(>5))
構造
• コントロールしたい変数からのリンクが残っているか
• リンクの有無、方向は事前知識や直感に一致するか
推論
• 説明変数が目的変数にどれほど影響を与えるか(感度分析)
• 補足:予測の精度(クローズドテスト/オープンテスト)
モデルの良し悪しとは(まとめ)
• ○感度の良さ
• コントロールできる変数が目的変数に大きく影響を与える(情報量が大
きい)→意志決定しやすい
• ○予測の正確さ
• 予測の正解率が高い→意志決定のリターンが大きい
• 大きく間違えない→意志決定リスクの小ささ
• ○理解しやすさ
• 簡単なモデル>複雑なモデル
• モデルの構造を解釈できる
• モデルの推論結果に納得感がある
• ×忠実さ
• 目的を達成する必要以上の詳細は不要→不要なノードは削除するなど
その他Q&A(1)
• アンケートのMA(チェックボックス)はどうやってノードに表す?
• 選択肢毎に、チェックする/しないの二状態のノードが出来る
(選択肢数がkの場合kビットで表現される)
• ノードを分解するかどうかはどう判断する?
• 状態が排他的と考えるなら一つのノードに。そうでなければ分けて良い
• 逆に、2変数を一つのノードに入れることも出来る
→2変数の状態の組み合わせを考える
• 親の数はどう設定したら良いか?
• 目安としては使えるデータ量が以下を満たすかを見る
• ノードの状態数 (親の数)×5 > データ量
• 構造が分からない時はどうする?
• 親の上限=1として大まかな構造を調べる手がある
• 大きいモデルではなく小さなモデルから考える
• 何かしっくりこない気がする
• 機械が出す答えを鵜呑みにする必要は無い
• 違和感を感じた自分の感性を信じる
その他Q&A(2)
• 好きか嫌いかを判定したかったので、「好き・嫌い・どちらでも
ない」を1ノードとしてモデルを作成した。嫌いの方が回答数が
多く、「好き」と「嫌い」では構造が違う(関連するノードが違う)。
この時このノードのクロス集計をみると好き欄のデータ数が少
なくなってしまった
ノードを”好き”と”嫌い”に分けるべき?
• ”好きモデル”と”嫌いモデル”に分けるべき。そもそも構造が違うはず
• 好きか嫌いかを判断させたければ、別々のモデルで推論した後、閾値
を決めて別途どちらか判断する
その他Q&A(3)
• 親子関係に制約をつける時、付け方によってリンクが変わっ
てくる。どちらがいいのか判断がつかなかった。 なんとなくうま
く説明してそうな方を選んだがそれでいいのか?
• 手元のデータがすべてを表せているわけではない。時と場合によって構
造Aの場合もあれば構造Bの場合もあるし答えはない
• 目的にあった答えを一番うまく出してくれるモデルを探せばいい
• あるモデルで「定番(のファッションを好む)」という状態を持つ
ノードがあったがどうにも違和感がある。「定番」に対する回答
者のとらえ方が異なるためではないか。
• そういうことはあり得る。そのノードはノイズとなるので除いたら良いかも
しれない
• pLSAでも、クラスに分解しきれない「その他」のクラスが出来ることがま
まある

ベイジアンネットワークモデリング勉強会20140206