ガジェット通信 GetNews

見たことのないものを見に行こう

体験を伝える―『ガジェット通信』の考え方

面白いものを探しにいこう 本物を体験し体感しよう 会いたい人に会いに行こう 見たことのないものを見に行こう そしてそれをやわらかくみんなに伝えよう [→ガジェ通についてもっと詳しく] [→ガジェット通信フロアについて]

アドテクの裏側で暗躍!?ユーザーの嗜好を紐解くベイジアンネットワークとは

ベイジアンネットワーク -「因果」のモデリング

ベイズの定理を説明した前編では、以下のような問いを設定していました。

患者Aは咳が出て節々が痛く、喉が腫れている。病名は何?
プリンターが不調。縦線のノイズが入る。どこが故障している?

それぞれ、医師やカスタマーサポートであれば解決できる問題です。しかし、同じ問題をコンピュータで解けたら嬉しいと思いませんか?

実は「因果」という概念を抽象化し、結果から原因を推定可能にした数理モデルがあります。

それがベイジアンネットワーク。条件付き確率を基礎とするこのモデルは、医療からWebマーケティングまで広く活用されています。

キーワードは「明確な結果」から「不明確な原因」を推測することです。早速具体例を見てみましょう。

ひとつの結果に複数の原因が紐付く – 診察のモデル

「結果から原因を推察する」ことを生業にしている職業はたくさんあります。例えばお医者さんですね。

診察の難しさの一つは、「ある症状をもたらす病気は、一つではなく複数ある」ということ。このような経験的判断を、計算機に肩代わりしてもらうことを考えてみましょう。

その目的の為には、ベイジアンネットワークの構築が有効です。実際にやってみましょう。

作業1:症状と病気をリストアップし、関係を有向グラフにする

まず、「有向グラフ」というデータ構造を用いて、症状と病気の定性的関係を記述するところから始めます。

考えうる「症状」と「病気」と洗い出し、リストアップします。並べて書いた病名や症状などを丸で囲み、それらをノードと呼ぶようにします。

そして、「症状」に対して原因となる「病気」を探し出し、病気から症状へ向けて矢印を引きます。矢印のことは有向枝と呼びます。

なお、ある病気が別の病気を誘発するというような場合には、病気から病気へ向けた有向枝を引いても構いません。

こうして、「ノード」と「有向枝」を用いて記述される関係性が「有向グラフ」です。

矢印をたどって一周してしまうような経路があるものは、以下の議論を適用できませんが、それ以外のグラフは全てベイジアンネットワークの範疇です。

作業2:条件付き確率を算出する

作業1で描き上げたグラフには、たくさんの有向枝が引かれています。有向枝の全てに、条件付き確率を割り振っていくのが次の作業です。

例えば「インフルエンザ」から「節々の痛み」に引かれた枝があるとすれば、「インフルエンザに罹った人が、節々の痛みを訴える割合」を算出する必要があります。ここで、前編でベイズの定理を導出するのに使った以下の式を思い出しましょう。

P(A mid B)=P(A cap B)/P(B)  …(3)

この式(3)は単体で使うこともできます。実際にやってみましょう。

まずは、事象を定義します。

事象
説明
A
患者が節々の痛みを訴える
B
患者はインフルエンザである

このようにAとBを定義すると、式(3)の意味が見えてきますね。

P(A mid B)=P(A cap B)/P(B) 左辺のP(A mid B) は「インフルエンザの患者が、節々の痛みを訴える確率」を表すようになります。 縦棒の右側の事象Bを前提として、左側の事象Aが起こる確率を表すのがP(A mid B) なのでした。

ここで、式(3)の右辺に登場する二つの確率は何を意味するでしょうか。

これらの確率は、「一定期間」の「病院の患者」全員のリストを持っていれば、その中で何割の患者が条件を満たすか調べることで求まります。

仮に、以下のように確率が求まるとしましょう。

P(B) = 0.2 P(A cap B) = 0.15

すると、条件付き確率は以下のように求まります。

P(A mid B) = 0.15 / 0.2 = 0.75
1 2 3次のページ
CodeIQ MAGAZINEの記事一覧をみる
  • 誤字を発見した方はこちらからご連絡ください。
  • ガジェット通信編集部への情報提供はこちらから
  • 記事内の筆者見解は明示のない限りガジェット通信を代表するものではありません。

山寺宏一&高木渉で『ポプテピピック』

GetNews girl / GetNews boy