弊社ではベイジアンネットワークの分析ツール BAYGLE / PLASMA を開発・販売しています。
ここではベイジアンネットワークをこれから使ってみようと思っている人を対象に、ベイジアンネットワークについて紹介します。

1. ベイジアンネットワークとは?

ベイジアンネットワークとはAI(機械学習)やデータマイニングで用いられる手法の一つで、事象間の因果関係を表現できるという特徴を持っています。例えば、図 1は病気の診断モデルで、次のような知識を表現しています。

  • 喫煙が肺がんや気管支炎のリスクファクターとなっている。
  • 結核または肺がんに罹患することによりレントゲン検査が陽性となるが、逆にレントゲン検査からは結核か肺がんかを区別することはできない。
  • 気管支炎、結核または肺がんにより呼吸困難という症状がでる。
図 1 チェストクリニックモデル
Lauritzen, Steffen L. and David J. Spiegelhalter (1988) “Local computations with probabilities on graphical structures and their application to expert systems” in Journal Royal Statistics Society B, 50(2), 157-194.

ベイジアンネットワークはこのような知識(事象間の因果関係)を表現するだけでなく、これを元に確率推論を実行することができます。

ベイジアンネットワークの円で表現しているものをノードと呼び、矢印をリンク(またはエッジ)と呼びます。このノードは確率変数で 図 2のように、それぞれ確率分布を持っています。何も情報がない状況での確率分布を事前確率と呼びます。ここで例えば、ある患者さんが喫煙者だと分かれば、その情報を入力すると「喫煙者?」を除く他の変数の確率分布が更新され、これが「喫煙者?=はい」の観測後の確率となっており、これを事後確率と呼びます。さらにレントゲン検査を行いその結果が陰性であれば、またその情報を入力すると、その他の確率変数の確率分布が更新されます。

ベイジアンネットワークの確率推論では、何から何を予測するといったことは決まっていません。得られた情報から、情報が得られてない確率変数の確率分布を更新するというシステムです。下図のような診断モデルであれば通常は問診結果、検査結果や症状から病気の確率を推論するのが通常の使い方ですが、逆に病気の方に情報を入力することで、どういう人がその病気になりやすいのか、またどういう症状が発生しやしいかといった知見を得ることもできます。

図 2 確率推論
メモ:矢印は正確には確率的な依存関係を表現しており、このようなグラフを有向独立グラフと呼びます。これはグラフィカルモデリングという分野のお話しです。グラフィカルモデリングでは共分散構造分析が有名ですがベイジアンネットワークもその表現の一つです。共分散構造分析は構造を特定することが目的ですが、ベイジアンネットワークでは構造を表現し、さらに確率推論ができるところに大きな特徴があります。
メモ:確率的な依存関係があるとはどういうことでしょう?二つの変数があって片方の情報を知るともう一方の情報(確率分布)が変化する場合に確率的依存関係があると言い、二変数間に矢印を引いてこの関係を表現します。 例えば、性別(男性、女性)と髪の長さ(短髪、長髪)の関係を考えます。会ったことのない人がいたとして、その人が男性だということを知ると、知らないときよりも髪が短い確率が高くなる、逆に女性だということを知ると知らないときよりも髪が長い確率が高くなるでしょう。このように一方の情報を知るともう片方の確率が変化する場合に確率的な依存関係があると言います。 これは必ずしも因果関係とは限りません。2変数だけを考えるケースでは矢印の向きはどちらでも確率推論の結果は変わりません。3変数以上の対象を扱う場合には因果関係と矢印の向きを一致させておかないと正しい確率推論結果が得られなくなる場合がありますので、因果関係が分かっているのであれば原則その向きに合わせてベイジアンネットワークを構築します。

2. ベイジアンネットワークの定義

確率変数を頂点とする有向非循環グラフと、次の条件付き確率表を合わせてベイジアンネットワークと呼びます。

P(X | parents(X))

parents(X)は確率変数Xの親の集合です。例えばチェストクリニックモデル(図 1)で、Xを呼吸困難とした場合、parents(呼吸困難)は{結核or肺がん, 気管支炎}となります。

チェストクリニックモデル(図 1)には次の8個の条件付き確率表がそのベイジアンネットワークの定義として含まれます。

P(アジア訪問経験)、P(喫煙者?)、P(結核?|アジア訪問経験)、P(肺がん?|喫煙者?)、P(気管支炎?|喫煙者?)、P(結核or肺がん|結核?、肺がん?)、P(レントゲン検査|結核or肺がん)、P(呼吸困難|結核or肺がん、気管支炎?)

条件付き確率表:P(肺がん?|喫煙者?)は喫煙者かどうかが分かっている場合の肺がんの確率です。P(肺がん?|喫煙者?=はい)はベン図(図 3左)で書くと、肺がん(C)と喫煙者(B)の共通部分をDとするとD/B となります。これと喫煙者でない場合(図 3右)も合わせて次表となります。

cpt

喫煙していない人の「肺がん=はい」の確率が約1%なのに対して、喫煙している人の確率が約10%と高いという知識を表現しています。

図 3 ベン図(条件付確率)

ベイジアンネットワークはその矢印が確率的な依存関係を定性的に、また条件付き確率表が定量的に表現しています。グラフ構造も条件付き確率表も意味が明確で分かりやすいところがベイジアンネットワークの良いところです。このようにベイジアンネットワークは人が理解できますので、知識のみから構築することや、人の知識とデータを合わせてモデルを構築することができます。

メモ:グラフというとエクセルなどで作成する棒グラフや折れ線グラフをイメージするかもしれませんが、ここでのグラフはグラフ理論のグラフでネットワークと呼ぶ方が馴染みやすいかもしれません。頂点と辺から成り、矢印に向きがあるグラフを有向グラフ、また矢印をたどって自分に戻ってくる経路があるグラフを循環有向グラフと呼び、ないグラフを非循環有向グラフと呼びます。ベイジアンネットワークは非循環有向グラフです。 実際の世の中の現象は因果の向きが決められなかったり、フィードバックがかかってループしていたりすることもあるかもしれません。そのような構造を表現することはできるのですが確率推論ができなくなってしまいます。

3. ベイジアンネットワークを作る

ベイジアンネットワークは人が理解できますので完全に人の知識からデータ無しでモデルを作ることもできますが、ここではデータからベイジアンネットワークを構築する方法について簡単に説明します。データから統計モデルを構築することを「学習」と呼びます。ベイジアンネットワークではそのグラフ構造をデータから探索する「構造学習」と、条件付き確率表をデータから推定する「パラメータ学習」の二つの学習があります。

図 4 学習データ

例えば、チェストクリニックモデルは図 4のようなデータから構築しています。また構造学習の際には、その探索範囲を与えることで人の知識を反映することができます。ある変数に対する親候補、必ず親にする変数、絶対親にしない変数を指定することができます。
また構造学習のアルゴリズムにはスコアベースのアルゴリズムと制約ベースのアルゴリズムがあります。

スコアベース:スコアベースというのは、ベイジアンネットワークの構造を評価する評価関数がありその値が一番良くなる構造を探索する方法です。これは組み合わせ最適化問題となり現在のコンピュータを持ってしても解くことは困難なため、欲張り法や局所探索法などを用いて近似解を求めます。また評価関数には情報量規準と呼ばれる指標を用います。

制約ベース:ベイジアンネットワークは変数間の確率的な依存関係を表現しています。変数間に確率的な依存関係があるのか、ない(独立)のかはデータからある程度調べることができますので、これを使ってデータから構造の復元を試みる方法です。

メモ:制約ベースのアルゴリズムの方が実際のベイジアンネットワークの構造を復元しようとする試みで良さそうではありますが、変数間の関係をデータから抽出するにはスコアベースのアルゴリズムよりも一般的に多くのデータを必要とし、実際のケースではデータが十分でない場合も多くスコアベースのアルゴリズムに人の知見を加えてベイジアンネットワークを構築することが多いです。

4. ベイジアンネットワークを使う

ここではベイジアンネットワークのユースケースをご紹介します。実際の実例をベースにしていますが、ここには書けないことも多く、一部、フィクションを含めイメージしやすいように書いています。

4.1. POSデータの分析

毎日溜まり続けるPOSデータ、しかしPOSデータには顧客IDと買われた商品の情報しかありません。もしその顧客の属性、嗜好やライフスタイルなどの情報が分かれば、マーケティング、販促などに役立てることができます。

そこで顧客の一部にライフスタイル等の知りたい情報をアンケートで収集し、そのアンケートと購買履歴を合わせてベイジアンネットワークを構築します。そうすると、アンケートを取得していない人に対しても、その購買履歴からライフスタイル等の知りたい情報を予測することができるようになります。

また、人のライフスタイルは時間がたてば変化します。その変化により購買行動が変化すれば、同じ人でも昔と今ではライフスタイルの予測結果が変わってきますので、日々たまり続けるPOSデータからライフスタイルの変化をとらえることができるようになります。

4.2. アンケート分析

アンケートデータから購買行動モデルをベイジアンネットワークで表現することにより、一つのモデルで様々な状況をシミュレーションできるようになります。

①「一般消費者がどんな施策を認識しているか?」が知りたい場合には
 → 属性から施策を推論

②「ブランドイメージに寄与する要因は?」が知りたい場合には
 → ブランドイメージからブランド接触点、過去の製品評価を逆向きに推論

③「購入に寄与する要因はブランド?施策?」が知りたい場合には
 → 購入意向かあら施策の認知レベル、ブランドイメージを逆向きに推論

④「購入に寄与する接触点は?」が知りたい場合には
 → さらに施策に認知レベル、ブランドイメージからブランド接触点を逆向きに推論

4.3. マッチングシステムへの応用

保育士に就職先(保育園)を紹介する際に、性格診断を双方に実施し、相性を評価することで定着率の向上を実現しており、この知見をAI(ベイジアンネットワーク)で表現し誰でも簡単にできるようにしたいというプロジェクトです。

本件では過去のデータが 200 件ほどしかなかったためデータから構造を決めることは難しく、人の知見を取り入れることで、目的に沿ったモデルが構築しました。担当者の知見を元に構造を決め、条件付き確率表のみをデータから計算するという方法を採用しました。

ミスマッチを無くし保育士の定着率を上げることが目標ですので、勤続年数(1 年以上勤務)を目的変数としたモデルとしました。説明変数には性格診断を保育園側と保育士側実施して頂き、その相性を組み込んでいます。保育業界では諸所の勤務条件が満たされていることが前提となりますが、保育園と保育士の相性が大きく定着率に影響し、また退職経験がありその理由が人間関係の場合にさらにその影響が大きくなるという知見をベイジアンネットワークの構造として表現しました。

保育-イメージ図

ベイジアンネットワークは人の知識とデータを合わせてモデルを構築することで、少ないデータでもある程度の精度をもったモデルを構築することができます。これを初期モデルとしてシステムをリリースし、利用履歴がたまればこれを学習データとしてモデルを更新することで精度を上げていきます。

4.4. eラーニングへの応用

ベイジアンネットワークは情報が観測された変数から、情報が観測されていない残りの全変数の事後分布を高速に計算するシステムです。この特徴を生かした事例になります。

レコメンド
各教科の学習単位をここでは単元と呼ぶこととします。単元間には依存関係があり、例えば数学では一次関数と二次関数という単元があって一次関数が理解できていないと二次関数を理解できません。

eラーニング-イメージ図

そのような関係を全てつなぎ合わせると、数学全体の単元間の依存関係を表現したベイジアンネットワークができあがります。
そのベイジアンネットワークに学習者の現在の履修状況を反映することで、こことここが理解できているのならこの単元も理解できているのではないか、こことここを間違えているのならここが理解できていないのではといったことが確率推論により推定できるようになります。
図 5では中心が黄色のノードが履修済みの単元、周辺に赤色が多いノードが理解できていないと推定された単元、周辺に青色が多いノードが理解できていると推定された単元です。さらに未履修の単元が仮に理解できたときに、他の未履修の単元の状態がどのように変化するのかということも分かるようになります。このような情報を元にして次のどこへ進むのか、またはどこに戻るのかをレコメンドします。

単元間の関係
図 5 単元間の関係(イメージ)