【実施例1】
【0026】
実施例1では、計算機システムが、グラフィカルモデルを用いた予測への影響度に基づいてグラフィカルモデルの補正箇所を選択する。また、計算機システムは、補充データに含まれる複数のレコードの中から補正箇所の学習に用いられた学習データのレコードと類似するレコードを選択し、選択されたレコードを用いてグラフィカルモデル400を再構築する。
【0027】
非特許文献1に記載されているように、確率テーブルにおける確率値が推論対象に与える影響は、下式(2)に示すように与えられる。なお、式(2)は非特許文献1の式(8)に対応する。
【0028】
【数2】
【0029】
ここで、確率値微分量は、条件付確率値の微小変化に対する推論結果の確率値の変化量を表す。式(2)に示すように、影響評価値は確率値微分量の関数として与えられる。
【0030】
ここで、非特許文献1には、確率値微分量が下式(3)のように定義され、具体的には下式(4)を算出すればよいことが記載されている。なお、式(3)は非特許文献1の式(6)に対応し、式(4)は非特許文献1の式(14)に対応する。
【0031】
【数3】
【0032】
【数4】
【0033】
式(4)に示すような従来の変数消去法の中間結果を用いた計算機方法の場合、グラフィカルモデルの規模が大きくなると、厳密推論法である変数消去法における計算コストが大きくなり、実際に計算できないという問題がある。
【0034】
そこで、本実施例では別の算出方法を用いて確率値微分量を算出する。確率値微分量の具体的な算出方法については後述する。
【0035】
図2は、実施例1の計算機システムの構成の一例を示すブロック図である。
【0036】
計算機システムは、計算機200及びデータベース206から構成される。
【0037】
計算機200は、グラフィカルモデルを構築し、また、グラフィカルモデルを用いて推論結果及び推論結果における確率値の信頼区間等を算出する。本実施例の計算機200は、演算装置201、メモリ202、記憶媒体203、入力装置204、及び出力装置205を有し、内部バス等を介して互いに接続される。
【0038】
演算装置201は、メモリ202に格納されるプログラムを実行する演算装置であり、例えば、CPU及びGPU等がある。以下の、機能部を主語として処理及び機能を説明する場合、演算装置201によって当該機能部を実現するプログラムが実行されていることを示す。メモリ202は、演算装置201によって実行されるプログラム及び当該プログラムによって使用される情報を格納する。メモリ202は、揮発性のメモリ及び不揮発性のメモリのいずれであってもよい。
【0039】
記憶媒体203は、計算機200が有する各種機能を実現するプログラム等を格納する。本実施例では、演算装置201が、記憶媒体203からプログラムを読み出し、読み出されたプログラムをメモリ202上にロードし、さらに、ロードされたプログラムを実行する。本実施例の記憶媒体203に格納されるプログラム等については後述する。
【0040】
なお、記憶媒体203に格納されるプログラムは、CD−ROM及びフラッシュメモリ等のリムーバブルメディア又はネットワークを介して接続される配信サーバから取得する方法が考えられる。リムーバブルメディアからプログラムを取得する場合、計算機200は、リムーバブルメディアに接続されるインタフェースを備える。
【0041】
入力装置204は、計算機200に各種情報を入力するための装置であり、例えば、キーボード、マウス、及びタッチパネル等が含まれる。出力装置205は、計算機200が実行した処理結果を出力する装置であり、例えばディスプレイ等が含まれる。
【0042】
データベース206は、計算機200が管理する各種データを格納する。本実施例では、図示しないストレージシステムを用いてデータベース206が構築されるものとする。ストレージシステムは、コントローラ、外部インタフェース、及び複数の記憶媒体を備える。ストレージシステムは、複数の記憶媒体を用いてRAIDを構成することができる。また、ストレージシステムは、RAIDボリュームを用いて複数の論理的な記憶領域を提供することもできる。
【0043】
データベース206は、学習データ記憶部241、モデル情報記憶部242、エビデンスデータ記憶部243、推論結果記憶部244、影響度記憶部245、及び補充データ記憶部246を含む。
【0044】
学習データ記憶部241は、グラフィカルモデルの構築時に用いられる学習データ300を記憶する。学習データ300の詳細は
図3を用いて説明する。モデル情報記憶部242は、グラフィカルモデルの構造を示す構造情報500、510、及び条件付確率テーブル600を記憶する。構造情報500、510の詳細については
図5A及び
図5Bを用いて説明し、また、条件付確率テーブル600の詳細については
図6を用いて説明する。
【0045】
エビデンスデータ記憶部243は、エビデンスデータ700を記憶する。ここで、エビデンスデータ700は、健康検診等を行う患者等から取得される検査値及び画像データ等の健康に関する情報、並びに、医師による診断情報、処置及び処方薬等の診療に関する情報等を示す。エビデンスデータ700の詳細は
図7を用いて説明する。推論結果記憶部244は、推論結果管理情報800を記憶する。推論結果管理情報800の詳細は
図8を用いて説明する。影響度記憶部245は、影響度管理情報900を記憶する。影響度管理情報900の詳細は
図9を用いて説明する。補充データ記憶部246は、グラフィカルモデルの補正箇所の再学習に用いられる補充データを記憶する。なお、補充データのデータ形式は学習データと同一のものである。
【0046】
ここで、記憶媒体203に格納されるプログラムについて説明する。
【0047】
記憶媒体203は、グラフィカルモデル構築部210、推論部220、及びグラフィカルモデル補正部230を実現するプログラムを格納する。
【0048】
グラフィカルモデル構築部210は、グラフィカルモデルを構築し、また、構築されたグラフィカルモデルに関する各種情報を生成する。グラフィカルモデル構築部210は複数のモジュールから構成される。本実施例のグラフィカルモデル構築部210は、モデル構造学習部211、サンプル数算出部212、及び確率テーブル算出部213を含む。
【0049】
モデル構造学習部211は、学習データ300を用いて、グラフィカルモデル(ベイジアンネットワーク)を構築する。また、モデル構造学習部211は、モデル情報記憶部242を介してデータベース206に構築されたグラフィカルモデルの構造情報500、510を格納する。ここで、モデル構造学習部211は、ベイジアンネットワークの既存の構造学習アルゴリズムを用いてグラフィカルモデルを構築するものとする。ベイジアンネットワークの既存の構造学習アルゴリズムとしては、例えば、Hill Climbing法等がある。
【0050】
サンプル数算出部212は、学習データ300に含まれるレコードの中から所定の条件に合致するレコードの数をサンプル数として算出する。サンプル数算出部212は、影響度記憶部245を介して、影響度管理情報900に算出されたサンプル数を格納する。
【0051】
確率テーブル算出部213は、構築されたグラフィカルモデルの各ノードの条件付確率テーブル600を算出する。確率テーブル算出部213は、モデル情報記憶部242を介して、条件付確率テーブル600を格納する。
【0052】
推論部220は、推論対象の入力を受け付け、入力された推論対象の条件付確率値の分布(推論結果)を算出する。また、本実施例の推論部220は、ある条件付確率値が推論結果の確率値に与える影響の大きさを影響評価値として算出し、算出された影響評価値に基づいて推論結果の確率値の信頼区間を算出する。推論部220は、複数のモジュールから構成される。本実施例の推論部220は、推論結果算出部221、確率値微分量算出部222、影響度算出部223、及び信頼区間算出部224を含む。
【0053】
推論結果算出部221は、変数消去法等の厳密推論手法、又は、Loopy Belief Propagation等の近似推論手法を用いて、推論対象の確率分布を算出する。
【0054】
確率値微分量算出部222は、影響評価値を算出するために必要となる確率値微分量を算出する。ここで、確率値微分量は、条件付確率値の微小な変化量に対する推論結果の確率値の変化量であり、式(3)のように表される。
【0055】
本実施例では、確率値微分量を下式(5)で与える。厳密推論を用いて式(5)に含まれる同時確率分布を算出する場合、非特許文献1に記載する確率値微分量の計算結果と一致する。なお、影響評価値及び確率値微分量の具体的な算出方法については後述する。
【0056】
【数5】
【0057】
ここで、式(5)の導出について説明する。以下の説明では、推論対象をTとし、条件付確率値の子ノードに対応する確率変数をAとし、親ノードに対応する確率変数をB
iとする。なお、iは1からmまでの整数であるものとする。また、Tの取り得る値の集合をR(T)とし、Aの取り得る値の集合をR(A)とし、B
iの取り得る値の集合をR(B
i)とする。このとき、下式(6)が成り立つ。
【0058】
【数6】
【0059】
下式(7)、(8)に示すようなベイズの定理の式を用いると、式(6)は下式(9)のようになる。
【0060】
【数7】
【0061】
【数8】
【0062】
【数9】
【0063】
ここで、t
lをR(T)の任意の値、a
kをR(A)の任意の値、b
i,jをR(B
i)の任意の値として下式(10)を計算する。
【0064】
【数10】
【0065】
このとき、右辺には下式(11)に示す項以外に下式(12)を含む項がないため、式(10)は式(13)に示すようになる。
【0066】
【数11】
【0067】
【数12】
【0068】
【数13】
【0069】
式(13)の右辺にベイズの定理を用いて変形すると下式(14)のようになる。したがって、式(13)は式(15)に示すような形に表せる。すなわち、式(4)に一致する。以上が、式(4)の導出方法の説明である。
【0070】
【数14】
【0071】
【数15】
【0072】
影響度算出部223は、確率値微分量を用いて影響評価値を算出する。信頼区間算出部224は、影響評価値及びサンプル数に基づいて、推論結果の確率値の信頼区間を算出する。
【0073】
グラフィカルモデル補正部230は、構築されたグラフィカルモデルの補正箇所を選択し、選択された補正箇所の補正に用いる補充データのレコードを選択する。以下、補充データから選択されたレコードを補正用レコードと呼ぶ。また、グラフィカルモデル補正部230は、補正用レコードを用いて確率値を補正する。グラフィカルモデル補正部230は複数のモジュールから構成される。本実施例のグラフィカルモデル補正部230は、補正箇所選択部231、補充データ選択部232及び確率値補正部233を含む。
【0074】
補正箇所選択部231は、影響評価値に基づいて、構築されたグラフィカルモデルの補正箇所を選択する。補充データ選択部232は、選択された補正箇所に適用する補正用レコードを補充データから選択する。確率値補正部233は、選択されたレコードを用いてグラフィカルモデルを再構築する。
【0075】
図3は、実施例1のデータベース206に格納される学習データ300の一例を示す説明図である。
【0076】
学習データ300は、識別情報、及び確率変数に対応する複数のカラムから構成されるレコードを含む。本実施例のレコードは、患者ID301、BMI値302、血圧値303、血糖値304、心臓病305、及び糖尿病306を含む。
【0077】
患者ID301は、患者の識別情報である。BMI値302、血圧値303、及び血糖値304は、患者のBMI値、血圧値、及び血糖値である。心臓病305及び糖尿病306は、患者が心臓病及び糖尿病に該当するか否かを示す情報である。患者ID301がレコードの識別情報であり、BMI値302、血圧値303、血糖値304、心臓病305、及び糖尿病306は、確率変数である。
【0078】
患者が心臓病又は糖尿病に該当する場合には、心臓病305又は糖尿病306には「Yes」が格納され、患者が心臓病又は糖尿病に該当しない場合には、心臓病305又は糖尿病306には「No」が格納される。
【0079】
図3の上から1行目のレコードは、患者ID301が「K0001」、BMI値が「32」、血圧値が「90」、及び血糖値が「5」であり、また、心臓病及び糖尿病のいずれにも該当しないことを示す。
【0080】
なお、BMI値302、血圧値303、血糖値304、心臓病305、及び糖尿病306には、必ずしも値が格納されていなくてもよい。この場合、当該カラムにはデータが欠損していることを示す情報が格納される。データの欠損を示す情報は、数値、文字、及びブール値のいずれであってもよい。
【0081】
次に、
図3に示す学習データ300に対応するグラフィカルモデル及び構造情報500、510について説明する。
【0082】
図4は、実施例1のグラフィカルモデル400の一例を示す説明図である。
【0083】
グラフィカルモデル400は、複数のノード410、及びノード410間を接続するエッジ420から構成される。
図4に示すグラフィカルモデル400の各ノード410は、学習データ300のBMI値302、血圧値303、血糖値304、心臓病305、及び糖尿病306に対応する。
【0084】
本実施例ではベイジアンネットワークを想定しているため、ノード410を接続するエッジ420には向きが存在する。また、エッジ420の始点に対応するノード410を親ノードと呼び、エッジ420の終点に対応するノード410を子ノードと呼ぶ。例えば、「糖尿病」のノード410は「血糖値」のノードの子ノードであり、「血糖値」のノードは「糖尿病」のノードに対する親ノードである。各ノード410には条件付確率テーブルが与えられる。ベイジアンネットワークでは、子ノードの確率分布は親ノードの確率値に依存する。
【0085】
図5A及び
図5Bは、実施例1のグラフィカルモデル400の構造情報500、510の一例を示す説明図である。本実施例のグラフィカルモデル400の構造情報には、ノード410の情報及びエッジ420の情報が含まれる。
【0086】
図5Aは、グラフィカルモデル400におけるノード410に関する構造情報500を示す。構造情報500は、一つのノード410に対して一つのレコードを含み、レコードはノードID501及び項目名502を含む。
【0087】
ノードID501は、ノード410を一意に識別するための識別情報である。項目名502は、ノード410に対応する確率変数の識別情報である。項目名502は、学習データ300の項目名に対応する。
【0088】
図5Bは、グラフィカルモデル400におけるエッジ420に関する構造情報510を示す。構造情報510は、一つのエッジ420に対して一つのレコードを含み、レコードはエッジID511、親ノード512、及び子ノード513を含む。
【0089】
エッジID511は、エッジ420を一意に識別するための識別情報である。親ノード512は、親ノードに対応するノード410の識別情報である。子ノード513は、子ノードに対応するノード410の識別情報である。親ノード512及び子ノード513には項目名502と同一の情報が格納される。なお、親ノード512及び子ノード513にはノードID501と同一の情報が格納されてもよい。
【0090】
図6は、実施例1の条件付確率テーブル600の一例を示す説明図である。
【0091】
条件付確率テーブル600は、親ノードの状態値に対して子ノードが任意の状態値を取る条件付確率値を格納する。条件付確率テーブル600は、子ノードに対応するノード410に与えられるものである。
【0092】
条件付確率テーブル600は、親ノード601、子ノード602、条件付確率603、及びサンプル数604を含む。
【0093】
親ノード601は、親ノードの状態値である。親ノードが複数存在する場合、親ノード601には親ノードの数だけカラムが存在する。子ノード602は、子ノードの状態値である。条件付確率603は、親ノード601に設定された状態値に対して、子ノード602に設定された状態値を取る確率値である。サンプル数604は、学習データ300に含まれるレコードのうち、親ノード601の状態値と一致するレコードの数である。
【0094】
なお、サンプル数は、条件付確率テーブル600とは別のテーブルにて管理されてもよい。
【0095】
図6の一番上のレコードの場合、血圧値が「90」かつ血糖値が「5」である場合に、心臓病になる確率が「9%」であることを示す。また、
図6の一番上のレコードの場合、親ノードである血圧値及び血糖値の状態値がそれぞれ「90」及び「5」であるレコードの数が「1563」であることを示す。条件付確率603は、学習データ300に含まれる親ノード601の状態値に一致するレコードの数と、親ノード601及び子ノード602の状態値に一致するレコードの数とから求めることができる。
【0096】
一般的に、サンプル数604の値が大きいほど条件付確率603が示す信頼性は高くなる。
【0097】
図7は、実施例1のエビデンスデータ700の一例を示す説明図である。
【0098】
実施例1のエビデンスデータ700は、学習データ300に含まれるレコードと同一の構成である。具体的には、エビデンスデータ700は、患者ID701、BMI値702、血圧値703、血糖値704、心臓病705、及び糖尿病706を含む。なお、患者から取得されていない項目の値には、データが欠損していることを示す記号が格納される。
【0099】
図8は、実施例1の推論結果管理情報800の一例を示す説明図である。
【0100】
推論結果管理情報800は、グラフィカルモデル400及びエビデンスデータ700を用いて算出された推論対象のノード410が任意の状態値となる条件付確率値を格納する。実施例1の推論結果管理情報800は、エビデンス801、推論対象802、条件付確率803、及び信頼区間804を含む。
【0101】
エビデンス801は、エビデンスデータ700のうち、推論対象802に関連するノード410と依存関係のあるノード410の状態値である。推論対象802は、推論対象であるノード410の状態値である。
【0102】
推論結果管理情報800には、エビデンスデータ700に含まれる一つのレコードに対して、推論対象のノード410が取り得る状態値の数だけレコードが生成される。本実施例では、「心臓病」に対応するノード410は「Yes」又は「No」のいずれかの状態値を取るため、推論結果管理情報800には、エビデンスデータ700の一つのレコードに対して、二つのレコードが格納される。例えば、エビデンスデータ700のレコードの数が「M」の場合、推論結果管理情報800のレコードの数は「2M」となる。
【0103】
条件付確率803は、推論対象の条件付確率値である。エビデンスデータ700の一つのレコードに対応する推論結果管理情報800の二つのレコードの条件付確率803の集合が、当該エビデンスデータ700の一つのレコードにおける推論結果となる。
【0104】
信頼区間804は、条件付確率値の信頼性を評価する信頼区間である。本実施例では、信頼区間804には、95%信頼区間の値を格納されるものとする。
【0105】
図8に示す一番上のレコードは、BMI値が「21」、血圧値が「90」、かつ血糖値が「5」である患者が心臓病となる確率は、95%の確率で5%から9%であることを示す。
【0106】
図9A及び
図9Bは、実施例1の影響度管理情報900の一例を示す説明図である。なお、影響度管理情報900のレコード数が多いため、
図9A及び
図9Bの二つに分けて影響度管理情報900を示している。
【0107】
影響度管理情報900は、条件付確率603の推論結果への影響度を示す影響評価値を管理する。影響度管理情報900は、親ノード901、子ノード902、条件付確率903、サンプル数904、推論対象905、同時確率906、確率値微分量907、及び影響評価値908を含む。
【0108】
親ノード901、子ノード902、条件付確率903、及びサンプル数904は、親ノード601、子ノード602、条件付確率603、及びサンプル数604と同一のものである。
【0109】
なお、推論対象と依存関係を有するノード410の条件付確率テーブル600に対して一つの影響度管理情報900が存在する。
図9は血糖値のノード410に対応する影響度管理情報900である。また、影響度管理情報900には、一つの条件付確率値に対して、推論対象が取り得る状態値の数だけレコードが生成される。「心臓病」に対応するノード410は「Yes」又は「No」の二つの状態値を取るため、影響度管理情報900には、条件付確率テーブル600の一つのレコードに対して、二つのレコードが格納される。例えば、条件付確率テーブル600のレコードの数が「N」の場合、影響度管理情報900のレコードの数は「2N」となる。
【0110】
推論対象905は、推論対象の状態値である。同時確率906は、当該レコードに対応する状態値の組み合わせにおける関連確率変数の同時確率値である。確率値微分量907は、条件付確率903の確率値微分量である。影響評価値908は、条件付確率903が推論結果の確率値に与える影響度である。
【0111】
例えば、
図9の一番目のレコードは、BMI値が「20」及び血糖値が「5」である場合に心臓病となる条件付確率値「9%」が推論結果の確率値に与える影響の大きさ、すなわち、影響評価値が「0.2」であることを示す。
【0112】
影響評価値908に格納される値は、条件付確率603の微小変化に対する推論結果の確率値の変化量の関数の値として与えられる。影響評価値を算出するための関数は、推論部220に予め設定されているものとする。また、推論結果管理情報800の信頼区間804に格納される値は、後述するようにサンプル数及び影響評価値に基づいて算出される。
【0113】
次に、計算機200が実行する処理について説明する。まず、グラフィカルモデル400の構築処理について
図10を用いて説明する。
図10は、実施例1の計算機200のグラフィカルモデル構築部210が実行する処理の一例を説明するフローチャートである。
【0114】
計算機200は、グラフィカルモデル400の構築が指示された場合等に以下で説明する処理を開始する。
【0115】
計算機200は、学習データ300の入力を受け付ける(ステップS1001)。学習データ300は、例えば、入力装置204等を用いて入力する方法が考えられる。
【0116】
このとき、計算機200は、データベース206の学習データ記憶部241を介して入力された学習データ300をデータベース206に格納する。なお、様々なデータ形式の学習データ300が入力される場合、学習データ記憶部241は、入力されたデータを
図3に示すような形式に変換した後、変換された学習データ300を格納してもよい。
【0117】
次に、計算機200は、学習データ300の離散化処理を実行する(ステップS1002)。具体的には、グラフィカルモデル構築部210のモデル構造学習部211が、学習データ300のレコードの項目のうち、当該項目に格納される状態値が連続値をとる項目について状態値を離散化する。例えば、血糖値の状態値として整数のみを扱うように離散化する。この場合、小数点以下の数は、四捨五入、切り捨て、切り上げ等が行われる。なお、離散化の粒度は任意に設定できる。
【0118】
次に、計算機200は、グラフィカルモデル400の構築に用いられる制限条件の設定処理を実行する(ステップS1003)。例えば、グラフィカルモデル構築部210のモデル構造学習部211が、入力装置204等を用いて入力された制限条件を受け付け、当該制約条件をメモリ202に格納する。
【0119】
ここで、制限条件としては、ノード410間の依存関係等が考えられる。例えば、「第1のノードと第2のノードとの間にはエッジなし」、「第3のノードと第4のノードとの間にはエッジあり」等の情報が制限情報として入力される。
【0120】
次に、計算機200は、学習データ300を用いたモデル構造の学習処理を実行する(ステップS1004)。具体的には、グラフィカルモデル構築部210のモデル構造学習部211が、学習データ300及び制約条件に基づいて、ノード410の構造情報500及びエッジ420の構造情報510を生成することによって、グラフィカルモデル400を構築する。なお、ベイジアンネットワークの構造学習アルゴリズムとしてHill Climbing法等が知られている。本実施例は、どのような学習アルゴリズムを用いてもよい。
【0121】
次に、計算機200は、データ照合処理を実行する(ステップS1005)。具体的には、グラフィカルモデル構築部210のサンプル数算出部212が、学習データ300に含まれるレコードの中から、あるノード410を子ノードとした場合における、子ノードの状態値、及び親ノードの状態値の組み合わせと一致するレコードを抽出する。
【0122】
次に、計算機200は、サンプル数算出処理を実行する(ステップS1006)。具体的には、グラフィカルモデル構築部210のサンプル数算出部212が、データ照合処理において抽出されたレコードの数をサンプル数として算出し、算出されたサンプル数を子ノードの状態値及び親ノードの状態値と対応付けて、メモリ202に一時的に格納する。
【0123】
次に、計算機200は、条件付確率テーブル600の算出処理を実行する(ステップS1007)。具体的には、以下のような処理が実行される。
【0124】
グラフィカルモデル構築部210の確率テーブル算出部213が、処理対象のノード410を選択し、構造情報500、510に基づいて、選択されたノード410に対する親ノードを特定し、条件付確率テーブル600に子ノード及び親ノードの状態値の組み合わせの数だけレコードを生成する。さらに、確率テーブル算出部213は、生成されたレコードのサンプル数604に、ステップS1006において算出されたサンプル数を格納する。
【0125】
また、確率テーブル算出部213は、学習データ300に含まれるレコードのうち、子ノード602の状態値が所定値になるレコードの割合を条件付確率値として算出する。さらに、確率テーブル算出部213は、算出された条件付確率値を条件付確率テーブル600の所定のレコードの条件付確率603に格納する。
【0126】
以上の処理によって、
図5A及び
図5Bに示すような構造情報500、510、並びに、
図6に示すような条件付確率テーブル600が生成される。すなわち、
図4に示すようなグラフィカルモデル400が構築される。
【0127】
次に、推論結果を算出するための処理について
図11を用いて説明する。
図11は、実施例1の計算機200の推論部220が実行する処理の一例を説明するフローチャートである。
【0128】
推論部220は、処理の開始を指示される場合、以下で説明する処理を開始する。このとき、推論部220には、エビデンスデータ700が入力される。なお、エビデンスデータ700を用いた推論結果の算出方法は公知のものであるため、説明を省略する。ここでは、推論結果算出部221が、変数消去法等の厳密推論手法、又は、Loopy Belief Propagation等の近似推論法を用いて、推論結果が算出されているものとする。
【0129】
推論部220は、推論対象を選択する(ステップS1101)。具体的には、推論部220の確率値微分量算出部222が、入力装置204を介してユーザ等からノード410の識別情報を受け付け、当該ノード410を推論対象として設定する。
【0130】
次に、推論部220は、処理対象となる条件付確率テーブル600を選択する(ステップS1102)。具体的には、以下のような処理が実行される。
【0131】
推論部220の確率値微分量算出部222は、構造情報500、510を参照して、推論対象を葉ノードとして、根ノードまでエッジ420に沿ってグラフィカルモデル400を辿ることによって、推論対象と依存関係のある複数のノード410を抽出する。確率値微分量算出部222は、抽出された複数のノード410の各々に対応する条件付確率テーブル600をデータベース206から読み出し、メモリ202に格納する。
【0132】
確率値微分量算出部222は、抽出された複数のノード410の中から処理対象のノード410を一つ選択する。例えば、推論対象を子ノードとした場合の親ノード、さらにその親ノードの順に選択する方法が考えられる。なお、本実施例は、処理対象のノード410の選択方法に依存しない。以下、選択されたノード410を選択ノード410とも記載する。
【0133】
確率値微分量算出部222は、メモリ202に格納された複数の条件付確率テーブル600の中から、選択ノード410に対応する条件付確率テーブル600を取得する。また、確率値微分量算出部222は、取得された条件付確率テーブル600に基づいて、
図9A及び
図9Bに示すような影響度管理情報900を生成する。具体的には、親ノード及び子ノードの状態値の組み合わせに対して、推論対象が取り得る状態値毎にレコードを生成する。推論対象が「心臓病」の場合、状態値は二つであるため、条件付確率テーブル600の一つのレコードに対して、二つのレコードが影響度管理情報900に生成される。
【0134】
確率値微分量算出部222は、生成されたレコードの親ノード901、子ノード902、条件付確率903、及びサンプル数904に、選択された条件付確率テーブル600の親ノード601、子ノード602、条件付確率603、サンプル数604の値を格納し、また、推論対象に推論対象が取り得る状態値を格納する。この時点では、同時確率906、確率値微分量907、及び影響評価値908には値が格納されない。以上がステップS1102の処理の説明である。
【0135】
次に、推論部220は、関連確率変数を抽出する(ステップS1103)。具体的には、推論部220の確率値微分量算出部222は、構造情報500、510を参照して、選択ノード410を葉ノードとして、根ノードまでエッジに沿ってグラフィカルモデル400を辿ることによって、選択ノード410と依存関係があるノード410の集合を家族ノード410として抽出する。さらに、推論部220は、推論対象、選択ノード410、及び抽出された家族ノード410を関連確率変数として抽出する。
【0136】
次に、推論部220は、関連確率変数の同時確率分布を算出する(ステップS1104)。具体的には、推論部220の確率値微分量算出部222が、推論対象、選択ノード410、及び抽出された家族ノード410の条件付確率テーブル600を用いた、Loopy Belief Propagation等の近似推論法に基づいて、関連確率変数の同時確率分布を算出する。このとき、確率値微分量算出部222は、算出された同時確率分布に基づいて、親ノード、子ノード、及び推論対象905の状態値の組み合わせが一致するレコードの同時確率906に同時確率値を格納する。
【0137】
次に、推論部220は、選択された条件付確率テーブル600及び算出された同時確率分布を用いて、確率値微分量を算出する(ステップS1105)。具体的には、以下のような処理が実行される。
【0138】
推論部220の確率値微分量算出部222は、選択された条件付確率テーブル600の親ノード601及び子ノード602の状態値を参照して、算出された同時確率分布における任意の状態値の組み合わせと一致するレコードを選択する。確率値微分量算出部222は、検索されたレコードの条件付確率903及び同時確率906の値を読み出す。
【0139】
確率値微分量算出部222は、条件付確率903及び同時確率906の値を式(5)に代入することによって確率値微分量を算出する。確率値微分量算出部222は、選択されたレコードの確率値微分量907に算出された確率値微分量を格納する。以上がステップS1105の処理の説明である。
【0140】
次に、推論部220は、確率値微分量を用いて、選択ノード410の条件付確率値が推論結果の確率値に与える影響度の大きさを影響評価値として算出する(ステップS1106)。
【0141】
一般的に影響評価値は確率値微分量の関数として与えられ、また、様々な条件に応じて任意の関数として設定できる。本実施例では、確率値微分量そのものが影響評価値となるように定義する。なお、重み付き関数を用いて複数の確率値微分量の関数を平均化し、当該関数を影響評価値として用いてもよい。
【0142】
ステップS1106では、推論部220の確率値微分量算出部222が、所定のレコードの確率値微分量907の値を予め設定された関数に代入することによって影響評価値を算出し、当該レコードの影響評価値908に算出された影響評価値を格納する。
【0143】
次に、推論部220は、読み出された全ての条件付確率テーブル600について処理が完了したか否かを判定する(ステップS1107)。
【0144】
読み出された全ての条件付確率テーブル600について処理が完了していないと判定された場合、推論部220は、ステップS1102に戻り同様の処理を実行する。
【0145】
読み出された全ての条件付確率テーブル600について処理が完了していると判定された場合、推論部220は、サンプル数904及び影響評価値908に基づいて、推論結果の確率値の信頼区間を算出する(ステップS1108)。例えば、下式(16)のような公知の方法を用いて信頼区間を算出できる。なお、式(16)の分散は、推論結果の確率値の分散を示し、また、分散の2乗は、下式(17)のように与えられる。
【0146】
【数16】
【0147】
【数17】
【0148】
ここで、ノードD、ノードDの親ノードであるノードC、ノードCの親ノードであるノードB、ノードBの親ノードであるノードAという直列的なベイジアンネットワークを例に
図1の処理の具体的な流れについて説明する。このとき、ノードAの条件付確率テーブル600は条件付確率P(A)の分布、ノードBの条件付確率テーブル600は条件付確率P(B|A)の分布、ノードCの条件付確率テーブル600は条件付確率P(C|B)の分布、ノードDの条件付確率テーブル600は条件付確率P(D|C)の分布として与えられる。
【0149】
ステップS1101において、推論部220は、ノードDを推論対象として選択する。ステップS1102において、推論部220は、ノードA、ノードB、及びノードCを推論対象と依存関係のあるノード410として抽出する。また、推論部220は、ノードCを選択ノード410として選択する。
【0150】
ステップS1103において、推論部220は、ノードB及びノードCを家族ノード410として抽出し、また、ノードB、ノードC、及びノードDを関連確率変数として抽出する。ステップS1104において、推論部220は、同時確率P(B,C,D)の分布を算出する。
【0151】
ステップS1105において、推論部220は、ノードB、ノードC、及びノードDの状態値の組み合わせ毎に、同時確率P(B=b,C=c,D=d)を条件付確率P(C=c|B=b)で除算して、確率微分量を算出する。ステップS1106において、推論部220は、確率微分量を用いて影響評価値を算出する。これによって、ノードCの条件付確率値がノードDの確率値に与える影響の大きさを見積もることができる。
【0152】
ステップS1107において、推論部220は、全ての条件付確率テーブル600について処理が完了していないと判定する。そのため、推論部220は、ステップS1102に戻り、ノードBを選択ノード410として選択する。ステップS1103において、推論部220は、ノードA及びノードBを家族ノードとして抽出し、また、ノードA、ノードB、及びノードDを関連確率変数として抽出する。ステップS1104において、推論部220は、同時確率P(A,B,D)の分布を算出する。
【0153】
ステップS1105において、推論部220は、ノードA、ノードB、及びノードDの状態値の組み合わせ毎に、同時確率P(A=a’,B=b’,D=d’)を条件付確率P(B=b’|A=a’)で除算して、確率微分量を算出する。ステップS1106において、推論部220は、確率微分量を用いて影響評価値を算出する。これによって、ノードBの条件付確率値がノードDの確率値に与える影響の大きさを見積もることができる。
【0154】
ステップS1107において、推論部220は、全ての条件付確率テーブル600について処理が完了していないと判定する。そのため、推論部220は、ステップS1102に戻り、ノードAを選択ノード410として選択する。ステップS1103において、推論部220は、ノードAは根ノード410であるため親ノード410が存在しないため、ノードA及びノードDを関連確率変数として抽出する。ステップS1104において、推論部220は、同時確率P(A,D)の分布を算出する。
【0155】
ステップS1105において、推論部220は、ノードA及びノードDの状態値の組み合わせ毎に、同時確率P(A=a’’,D=d’’)を条件付確率P(A=a’’)で除算して、確率微分量を算出する。ステップS1106において、推論部220は、確率微分量を用いて影響評価値を算出する。これによって、ノードAの条件付確率値がノードDの確率値に与える影響の大きさを見積もることができる。
【0156】
ステップS1107において、推論部220は、全ての条件付確率テーブル600について処理が完了したと判定する。ステップS1108において、推論部220は、算出された影響評価値を用いて推論結果の確率値の影響度を算出する。以上が、
図11の処理の具体的な流れの説明である。
【0157】
次に、グラフィカルモデルを補正するための処理について
図1を用いて説明する。
図1は、実施例1の計算機200のグラフィカルモデル補正部230が実行する処理の一例を説明するフローチャートである。
【0158】
グラフィカルモデル補正部230は、
図11に示す処理が終了した後に、以下で説明する処理を開始する。
【0159】
まず、グラフィカルモデル補正部230は、推論結果の信頼度が目標値に達しているか否かを判定する(ステップS101)。例えば、グラフィカルモデル補正部230は、下式(18)を満たすか否かを判定する。式(18)を満たす場合、推論結果の信頼度が目標値に達していると判定される。なお、分散の自乗は式(17)を用いて求めることができる。
【0160】
【数18】
【0161】
推論結果の信頼度が目標値に達していると判定された場合、グラフィカルモデル補正部230は処理を終了する。
【0162】
推論結果の信頼度が目標値に達していないと判定された場合、グラフィカルモデル補正部230の補正箇所選択部231は、処理対象のノード410の条件付確率テーブル600を選択する(ステップS102)。例えば、推論対象から根ノードまでの経路に含まれるノード410順に選択する方法が考えられる。このとき、補正箇所選択部231は、データベース206から、選択された条件付確率テーブル600に対応する影響度管理情報900を読み出す。
【0163】
グラフィカルモデル補正部230の補正箇所選択部231は、読み出された影響度管理情報900の影響評価値908に基づいて、選択された条件付確率テーブル600の確率値(レコード)の中から補正箇所となる確率値を選択する(ステップS103)。すなわち、補正箇所選択部231は、選択された条件付確率テーブル600の確率値の中から、推論結果の確率値に与える影響が大きい確率値を選択する。
【0164】
ここで、影響度管理情報900には、条件付確率テーブル600の一つの確率値(レコード)に対して二つのレコードが存在する。そのため、本実施例では、影響度管理情報900の二つのレコードの影響評価値908の合計値又は平均値を、条件付確率テーブル600の一つの確率値(レコード)の影響評価値として扱う。
【0165】
ここで、ステップS103では、例えば以下のような処理が実行される。一つの処理としては、補正箇所選択部231は、条件付確率テーブル600の確率値(レコード)の影響評価値が所定の閾値以上である確率値(レコード)を選択する。他の処理としては、補正箇所選択部231は、選択された条件付確率テーブル600の確率値(レコード)を確率値(レコード)の影響評価値が大きい順にソートし、条件付確率テーブル600の上から順に、所定数のレコードを選択する。
【0166】
次に、グラフィカルモデル補正部230の補正箇所選択部231は、選択された確率値の中から処理対象の確率値を選択する(ステップS104)。
【0167】
次に、グラフィカルモデル補正部230の補充データ選択部232は、補充データのレコードの中から、選択された確率値を補正するための補正用レコードを選択する(ステップS105)。具体的には、以下のような処理が実行される。
【0168】
補充データ選択部232は、選択された確率値の確率変数の状態値、及び補充データの各レコードの確率変数の状態値とを比較して、選択された確率値の確率変数の状態値に対する補充データのレコードの類似度を算出する。例えば、確率値及び補充データのレコードを、状態値をベクトルの成分とするベクトルとして扱い、二つのベクトルの距離を類似度として算出する方法が考えられる。なお、本実施例は、類似度の算出方法に限定されない。
【0169】
補充データ選択部232は、算出された類似度に基づいて補正用レコードを選択する。例えば、以下のような方法が考えられる。一つの方法は、補充データ選択部232が、算出された類似度が所定の閾値以上のレコードを選択する方法である。他の方法は、補充データ選択部232が、補充データのレコードを類似度の大きい順にソートし、補充データの上から順に、所定数の補正用レコードを選択する。以上がステップS105の処理の説明である。
【0170】
次に、グラフィカルモデル補正部230の補正箇所選択部231は、ステップS103において選択された全ての確率値について処理が完了したか否かを判定する(ステップS106)。
【0171】
ステップS103において選択された全ての確率値について処理が完了していないと判定された場合、グラフィカルモデル補正部230の補正箇所選択部231は、ステップS104に戻り同様の処理を実行する。
【0172】
ステップS103において選択された全ての確率値について処理が完了したと判定された場合、グラフィカルモデル補正部230の補正箇所選択部231は、グラフィカルモデル400の全ての条件付確率テーブル600について処理が完了したか否かを判定する(ステップS107)。
【0173】
グラフィカルモデル400の全ての条件付確率テーブル600について処理が完了していないと判定された場合、グラフィカルモデル補正部230の補正箇所選択部231は、ステップS102に戻り同様の処理を実行する。
【0174】
グラフィカルモデル400の全ての条件付確率テーブル600について処理が完了したと判定された場合、グラフィカルモデル補正部230の確率値補正部233は、選択された補正用レコードを用いて、グラフィカルモデル400の補正箇所を補正する(ステップS108)。このとき、確率値補正部233は、選択された条件付確率テーブル600の条件付確率603に補正された確率値を上書きする。また、確率値補正部233は、サンプル数604の値に、確率値の補正に使用された補正用レコードの数を加算する。その後、グラフィカルモデル補正部230はステップS101に戻り同様の処理を実行する。
【0175】
例えば、グラフィカルモデル補正部230は、式(1)に示すような数式の分母に補正用レコードの数を加算し、分子に補正用レコードの数を加算することによって補正された確率値を算出する。例えば、式(1)の分子が「1000」、分母が「10000」である場合、補正前の確率値は「10%」である。補正用レコードの数が「500」の場合、分子が「1500」、分母が「10500」となるため、補正後の確率値は「14.3%」と算出される。
【0176】
また、他の方法としては、グラフィカルモデル補正部230は、補正用レコードを学習データ300に追加することによって、学習データ300を更新し、その後、グラフィカルモデル構築部210にグラフィカルモデル400の構築指示を送信する。この場合、グラフィカルモデル構築部210は、更新された学習データ300を用いて
図10に示す処理を実行する。
【0177】
以上のように実施例1によれば、計算機200は、推論対象の確率値に与える影響の大きさを示す影響評価値に基づいて、グラフィカルモデルの補正箇所(確率値)を選択するため、グラフィカルモデル400を用いた予測に影響が大きい箇所(確率値)を効率的に補正することができる。また、計算機200は、補充データの中から補正箇所の補正するために適したレコードを選択するため、補充データの不要なレコードが起因するグラフィカルモデルの精度の低下を抑止することができる。