(57)【特許請求の範囲】
【請求項１】
入力データからベイジアンネットワーク構造学習を行うプログラムであって、コンピュータに、
（Ａ）データベースにアクセスするための接続情報、データ仕様記述ファイル名、第１の閾値及び第２の閾値を含む動作パラメータを有する、ベイジアンネットワーク構造学習を実行する命令を受け取るステップであって、前記データ仕様記述ファイルは、前記データベースに格納される入力データに含まれる、各確率変数の名前、確率変数の数、各確率変数の状態名及び状態数を記述する、ステップと、
（Ｂ）前記命令に応答して、前記データ仕様記述ファイルを解析し、各確率変数の名前、確率変数の数、各確率変数の状態名及び状態数を得て保持するステップと、
（Ｃ）前記入力データについて木構造のグラフを生成して記憶部に記憶するステップであって、相互情報量が前記第１の閾値以上である確率変数ペアの各々について、該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加することによって、木構造のグラフを生成し、該木構造のグラフを記憶部に記憶するステップと、
（Ｄ）記憶部から前記木構造のグラフを読み出し、相互情報量が前記第１の閾値以上でありながら前記ステップ（Ｃ）によってエッジが追加されなかった各確率変数ペアについて、エッジが必要である場合にエッジを追加することによってグラフを更新するステップであって、
（Ｄ１）該エッジが追加されなかった確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数を含む条件集合を候補条件集合とし、前記候補条件集合内の各１つの確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが前記第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに該確率変数ペアについての処理を終了し、
（Ｄ２）前記（Ｄ１）において処理が終了しない場合、前記候補条件集合内のいずれか２つの確率変数の組を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが前記第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了し、計算された条件付き相互情報量が一方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、前記候補条件集合から該一方の確率変数を削除し、計算された条件付き相互情報量が他方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、前記候補条件集合から該他方の確率変数を削除し、
（Ｄ３）前記（Ｄ２）において処理が終了しない場合、前記候補条件集合に残るすべての確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが前記第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了し、
（Ｄ４）前記（Ｄ１）乃至（Ｄ３）において処理が終了しない場合、該２つの確率変数間にエッジを追加する、エッジを追加するステップと
を含む、グラフを更新するステップと、
前記更新されたグラフを記憶部に記憶するステップと
を実行させるプログラム。
【請求項２】
（Ｅ）前記ステップ（Ｄ）による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、不要である場合にエッジを削除することによりグラフを更新し、該グラフを記憶部に記憶するステップと、
（Ｆ）各エッジの方向付けを行うことにより前記グラフを更新し、該グラフを記憶部に記憶するステップと
をコンピュータに実行させる請求項１に記載のプログラム。
【請求項３】
前記ステップ（Ｅ）は、
無向エッジを有する確率変数ペアについて、該無向エッジ以外のパスが存在する場合、該無向エッジを一時的に削除するステップと、
該確率変数ペアについて、前記手段（Ｄ）と同様にして、必要である場合に前記一時的に削除した無向エッジを追加するステップと、
無向エッジを有する確率変数ペアの少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有する場合、該無向エッジを一時的に削除するステップと、
該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノード及び該隣接するノードにさらに隣接するノードを含む集合を候補条件集合として、前記手段（Ｂ）と同様にして、必要である場合に前記一時的に削除した無向エッジを追加するするステップと
を含む請求項２に記載のプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ベイジアンネットワーク構造学習のための情報処理装置及びプログラムに関し、より詳細には、多数の確率変数及び大量のデータが存在する状況において安定した計算時間で高速にベイジアンネットワーク構造学習を行うことのできる情報処理装置及びプログラムに関する。
【背景技術】
【０００２】
確率的因果関係の表現であるベイジアンネットワークは、推論精度が高いことで知られる。しかしながら、ベイジアンネットワークの構造学習は、ノード数に対してＮＰ完全であることが知られており、多数の確率変数を大量データから学習するのは極めて困難な問題である。【０００３】
ベイジアンネットワーク構造学習アルゴリズムは、真の同時確率分布とベイジアンネットワークで表現する同時確率分布の近似を最大化することを目的としたスコアリングベース手法と、確率変数間の独立性判定により因果関係を抽出することを目的とした制約ベース（ＣＩ（Conditional Independence）ベースとも呼ばれる）の手法とに大別される。制約ベース学習アルゴリズムは、所与のデータを用いて確率変数間の条件付き独立テストを行い、その結果により確率変数間にエッジ（アークともいう。）が必要か否かを決定するアルゴリズムの総称である。大規模な確率変数を扱う場合には、変数間の独立性判定を行う手法を用いた方が推論精度が高くなることが知られている。【０００４】
制約ベース学習アルゴリズムの１つとして、ＴＰＤＡ（Three Phase Dependency Analysis、３フェーズ独立性分析）と呼ばれるアルゴリズムが提案されている（非特許文献１）。ＴＰＤＡは、真の確率構造にＭＤＦ（monotone DAG faithful）と呼ぶ条件を仮定することにより、条件付き独立テストの数をＯ（Ｎ４）に抑えるアルゴリズムである。ここで、DAG faithfulであるとは、真の因果構造が非循環有向グラフであることをいう。ベイジアンネットワークのモデルは、Ｎ＝＜Ｖ,Ｅ,Ｐ＞あるいはＮ＝＜Ｇ,Ｐ＞と表現される。ここでＧ＝（Ｖ,Ｅ）は頂点集合Ｖ、辺集合Ｅからなる非循環有向グラフで、Ｐは、ｐａ（ｘｎ）をｎ番目の確率変数ｘｎの親変数とすると、Ｐ＝｛Ｐ（ｘ１｜ｐａ（ｘ１））,…,Ｐ（ｘｎ｜ｐａ（ｘｎ））｝で表される条件付き確率分布集合である。集合Ｐはこれに対応する同時確率分布Ｐ（Ｕ）を
【数１】
0005555238.tif 000002
として与えている。ＯｐｅｎＮ（Ｘ,Ｙ｜Ｃ）（Ｃは太字）を、モデルＮを所与としたとき頂点Ｘ、Ｙのパス上にあって、確率変数集合Ｃ（太字）を条件として所与としたときにＸ、Ｙのパスを開くとき、すなわちＸとＹが互いに依存するときに、その開かれたパス上の確率変数集合を指すものとする。またＣ（太字）を所与としたＸ、Ｙの条件付き相互情報量をＩ（Ｘ,Ｙ｜Ｃ（太字））とすると、monotone DAG faithfulであるとは、次のように定義される。すなわち、DAG faithfulなモデルＮ＝＜Ｖ,Ｅ,Ｐ＞は、Ｖの要素であるすべてのＸ、Ｙについて、
【数２】
0005555238.tif 000003
であるとき、またそのときに限り、monotone DAG faithfulである。【０００５】
ＴＰＤＡにおいては、木構造準備（Drafting）フェーズ、エッジ増加（Thickening）フェーズ及びエッジ削減（Thinning）フェーズと呼ばれる３つのフェーズを実行し、最後にエッジの方向付けを行うことにより構造学習を行う。【０００６】
ＴＰＤＡアルゴリズムによるベイジアンネットワーク構造学習に際しては、まず、主たる入力となりＣＳＶ形式やリレーショナルデータベースのリレーションなどで表現された表形式のデータと、当該データにどのような確率変数及びどのような状態（実現値）が含まれるかを記述した情報（以下、「データ仕様記述情報」という。）とが入力される。【０００７】
木構造準備フェーズにおいては、入力データに含まれるすべての確率変数のペアについて、次の式（２）で表される相互情報量を計算する。
【数３】
0005555238.tif 000004
【０００８】
ここで、大文字Ｘ、Ｙは確率変数を表し、小文字ｘ、ｙはそれぞれに対応する状態値を表す。木構造準備フェーズにおいては、さらに、計算された相互情報量の値が大きいペアから順に、グラフ全体の構造が木構造である限り（グラフが閉路を構成しない限り）、当該確率変数のペアの間に無向エッジを追加する。【０００９】
次に、エッジ増加フェーズにおいては、木構造準備フェーズを終了した段階で無向エッジが存在しない確率変数のペアの各々につき、当該確率変数のペアを始点及び終点とするパス上でそれら２つの確率変数のノードに隣接するノードを最初の条件集合として条件付き相互情報量を計算する。条件付き相互情報量は次の式（３）により計算される。
【数４】
0005555238.tif 000005
【００１０】
ここで、太字大文字Ｃは確率変数集合を表し、太字小文字ｃはそれぞれの変数に対応する状態値集合を表す。計算された条件付き相互情報量が所定の閾値ε以上である場合、確率変数集合Ｃ（太字）を小さくして式（３）の計算を繰り返す。条件付き相互情報量がε未満となる条件集合が見つかった場合には、当該確率変数ペアの間に無向エッジを追加せず、グローバルな切断集合にレコードを登録する。一方、条件集合が空集合となるまでの間に条件付き相互情報量がε未満となる条件集合が見つからなかった場合には、確率変数ペアの間に無向エッジを追加する。【００１１】
続いて、エッジ削減フェーズにおいては、エッジ増加フェーズを終了した段階で無向エッジが存在する確率変数ペアの各々について、当該無向エッジ以外のパスがあれば当該無向エッジを一時的に削除し、エッジ増加フェーズのときと同様に、条件集合を徐々に小さくしながら閾値ε未満となる条件集合が見つかるまで条件付き相互情報量を計算する。閾値ε未満となる条件集合が見つかれば、当該無向エッジを削除したままグローバルな切断集合にレコードを登録する。閾値ε未満となる条件集合が見つからなければ、一時的に削除した無向エッジを追加して元に戻す。次に、現時点で無向エッジのある各確率変数ペアに着目し、当該確率変数ペアのいずれかがペアの相手を除いて３つ以上の隣接ノードを有する場合、より精密なエッジ要否判定を行う。具体的には、当該確率変数ペアのパス上で、各確率変数について、当該確率変数の隣接ノード及び当該隣接ノードにさらに隣接したノードを要素とする集合のサイズを比較し、小さい方を最初の条件集合とする。その上で、これまでと同様に、条件集合を徐々に小さくしながら閾値ε未満となる条件集合が見つかるまで条件付き相互情報量を計算する。閾値ε未満となる条件集合が見つかれば、当該無向エッジを削除したままグローバルな切断集合にレコードを登録し、見つからなければ、一時的に削除したエッジを追加して元に戻す。【００１２】
上述の木構造準備、エッジ増加及びエッジ削減の３つのフェーズを経た後、これらのフェーズにより追加された無向エッジの向きを決定する作業を行う。具体的には、ＸとＹ及びＺとＹが無向エッジによりそれぞれ直接接続されているがＸとＹとは直接接続されていないような３つのノードＸ、Ｙ、Ｚのすべての組について、グローバルな切断集合にこれらのノードが含まれるか否かなどに基づいて、向きを決定可能なエッジについては向きを決定する。ＴＰＤＡにおいては、以上のようにしてベイジアンネットワーク構造が学習される。
【先行技術文献】
【非特許文献】
【００１３】
【非特許文献１】Cheng, J., Greiner, R., Kelly, J., Bell, D., and Liu, W.: Learning Bayesian networks from data: an information-theory based approach, Artificial Intelligence, Vol. 137, No. 1-2, pp. 43-90 (2002)
【発明の概要】
【発明が解決しようとする課題】
【００１４】
以上説明したＴＰＤＡは、現在知られている制約ベース学習アルゴリズムのうち、もっとも高速に動作するものであり、大規模な変数や大量のデータの処理に適したアルゴリズムである。しかしながら、それでもなお、確率変数の数がさらに多くなるような例においては、条件付き独立テストの計算が困難になるという問題がある。すなわち、式（３）に示す条件付き相互情報量の右辺における同時確率分布Ｐ（ｘ,ｙ,ｃ（太字））部分のｃ（太字）にあたる変数の数が増加するため、計算量が増大し、計算が困難になる。また、同時確率分布のパターンが増えるに従い、計算結果に寄与しない欠損値が多く発生してしまうという問題がある。
【課題を解決するための手段】
【００１５】
本願発明者らは、制約ベース学習アルゴリズムに多頻度アイテム集合抽出アルゴリズムを組み込むことにより、上述した従来のＴＰＤＡと比較してさらに高速且つ処理時間のばらつきの少ないベイジアンネットワーク構造学習が可能となることを発見した。【００１６】
また、本願発明者らは、切断集合の探索を行う際に、条件集合の部分集合サイズが昇順となる順に条件付き相互情報量の計算を行いかつＭＤＦの仮定を最大限早期に用いること、すなわち２つの条件変数を所与とした場合と当該条件変数集合中の単一の各条件変数を所与とした場合の条件付き相互情報量とを比較し、切断集合に含まれない変数を２段階目ですべて探索対象から削除することにより、最大でもわずか３つの段階のみによって切断集合の探索が可能となることを発見した。これにより、従来のＴＰＤＡと比較してさらに高速なベイジアンネットワーク構造学習が可能となる。【００１７】
本発明は、これらの新たなアルゴリズムに基づいてベイジアンネットワーク構造学習を実行する情報処理装置及びプログラムを提供するものである。【００１８】
本発明の１つの側面によれば、本発明の情報処理装置は、複数の確率変数及び各確率変数が取る状態についての情報を含む入力データからベイジアンネットワーク構造学習を行う情報処理装置である。当該情報処理装置は、入力データについて木構造のグラフを生成する手段であって、相互情報量が第１の閾値以上である確率変数ペアの各々について、該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加する、木構造のグラフを生成する手段を含む。情報処理装置はさらに、相互情報量が第１の閾値以上でありながら上記木構造のグラフを生成する手段によってエッジが追加されなかった各確率変数ペアについて、エッジが必要である場合にエッジを追加する手段を含む。当該手段は、該エッジが追加されなかった確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数の組を条件集合として条件付き相互情報量を計算し、その値が第１の閾値未満となる組が見つかった場合には、該２つの確率変数間にエッジを追加せず、そうでなければエッジを追加する。また、当該手段は、上記条件付き相互情報量の計算において、該２つの確率変数の状態とそれぞれの確率変数に対応する状態集合とについての同時確率分布が第１の閾値以下の第２の閾値未満となる場合には、関連する成分の計算を省略する。【００１９】
上記木構造のグラフを生成する手段は、入力データに含まれる各確率変数の周辺確率を計算し、確率変数ペアを構成するいずれかの確率変数がある状態を取る周辺確率が第２の閾値未満である場合には、関連する相互情報量の成分の計算を省略することにより、各確率変数ペアの相互情報量を計算してもよい。また、上記エッジを追加する手段は、エッジが追加されなかった確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合を最終的な条件集合として、該２つの確率変数ノード及び条件集合Ｃについての条件付き相互情報量を、条件集合Ｃのサイズが１である場合から最終的な条件集合のサイズとなる場合までサイズを大きくしながら計算し、その過程で第１の閾値未満となる条件付相互情報量が得られた場合には、該２つの確率変数間にエッジを追加せず、そうでなければ必要と判断してエッジを追加してもよい。情報処理装置は、さらに、上記エッジを追加する手段による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、不要である場合にエッジを削除する手段と、各エッジの方向付けを行う手段とを含んでもよい。【００２０】
本発明の別の側面によれば、本発明の情報処理装置は、制約ベース学習アルゴリズムを使用して、複数の確率変数及び各確率変数が取る状態についての情報を含む入力データからベイジアンネットワーク構造学習を行う情報処理装置である。当該情報処理装置は、ある確率変数ペア間にエッジを追加すべきか否かを条件付き相互情報量を求めることにより判断し、該判断に際して、該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数の組を条件集合として条件付き相互情報量を計算し、その値が第１の閾値未満となる組が見つかった場合には、該２つの確率変数間にエッジを追加せず、そうでなければエッジを追加する。また、情報処理装置は、条件付き相互情報量の計算において、該２つの確率変数の状態とそれぞれの確率変数に対応する状態集合についての同時確率分布が第１の閾値以下の第２の閾値未満となる場合には、関連する成分の計算を省略する。上記情報処理装置は、確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合を最終的な条件集合として、該２つの確率変数ノード及び条件集合Ｃについての条件付き相互情報量を、条件集合Ｃのサイズが１である場合から最終的な条件集合のサイズとなる場合までサイズを大きくしながら計算し、その過程で第１の閾値未満となる条件付相互情報量が得られた場合には、該２つの確率変数間にエッジを追加せず、そうでなければ必要と判断してエッジを追加するように構成されてもよい。【００２１】
本発明の別の側面によれば、本発明は、コンピュータを上述の情報処理装置のように動作させるプログラムである。【００２２】
本発明の別の側面によれば、本発明の情報処理装置は、複数の確率変数及び各確率変数が取る状態についての情報を含む入力データからベイジアンネットワーク構造学習を行う情報処理装置である。当該情報処理装置は、入力データについて木構造のグラフを生成する手段であって、相互情報量が第１の閾値以上である確率変数ペアの各々について、該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加する、木構造のグラフを生成する手段を含む。【００２３】
情報処理装置はさらに、相互情報量が第１の閾値以上でありながら上記木構造のグラフを生成する手段によってエッジが追加されなかった各確率変数ペアについて、エッジが必要である場合にエッジを追加する手段を含む。当該エッジを追加する手段は、該エッジが追加されなかった確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数を含む条件集合を候補条件集合とし、当該候補条件集合内の各１つの確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに該確率変数ペアについての処理を終了する。【００２４】
また、当該エッジを追加する手段は、上記処理が終了しない場合、候補条件集合内のいずれか２つの確率変数の組を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了する。計算された条件付き相互情報量が一方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、候補条件集合から該一方の確率変数が削除され、計算された条件付き相互情報量が他方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、候補条件集合から該他方の確率変数が削除される。【００２５】
また、当該エッジを追加する手段は、上記処理が終了しない場合、候補条件集合に残るすべての確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了する。【００２６】
情報処理装置は、さらに、上記処理が終了しない場合、該２つの確率変数間にエッジを追加する、エッジを追加する手段を含む。【００２７】
情報処理装置は、さらに、上記の処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、不要である場合にエッジを削除する手段と、各エッジの方向付けを行う手段とを含んでもよい。【００２８】
本発明の別の側面によれば、本発明の情報処理装置は、制約ベース学習アルゴリズムを使用して、複数の確率変数及び各確率変数が取る状態についての情報を含む入力データからベイジアンネットワーク構造学習を行う情報処理装置である。当該情報処理装置は、ある確率変数ペア間にエッジを追加すべきか否かを条件付き相互情報量を求めることにより判断する。【００２９】
情報処理装置は、該判断に際して、該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数を含む条件集合を候補条件集合とし、候補条件集合内の各１つの確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに該確率変数ペアについての処理を終了する。【００３０】
また、情報処理装置は、上記処理が終了しない場合、候補条件集合内のいずれか２つの確率変数の組を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了する。計算された条件付き相互情報量が一方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、候補条件集合から該一方の確率変数が削除され、計算された条件付き相互情報量が他方の確率変数のみを条件集合として既に計算された条件付き相互情報量よりも大きい場合には、候補条件集合から該他方の確率変数が削除される。【００３１】
また、情報処理装置は、上記処理が終了しない場合、候補条件集合に残るすべての確率変数を条件集合として条件付き相互情報量を計算し、計算された条件付き相互情報量の少なくともいずれかが第１の閾値未満となる場合には、該２つの確率変数間にエッジを追加せずに処理を終了する。【００３２】
情報処理装置は、さらに、上記処理が終了しない場合、該２つの確率変数間にエッジを追加する手段を含む。【００３３】
本発明の別の側面によれば、本発明は、コンピュータを上述の情報処理装置のように動作させるプログラムである。
【発明の効果】
【００３４】
本発明によれば、従来知られていた制約ベース学習アルゴリズムのうちでもっとも高速に動作するＴＰＤＡアルゴリズムを用いても困難であった多数の確率変数及び大量のデータが存在する状況下でも、安定した計算時間で高速にベイジアンネットワーク構造学習を行うことができる。したがって、本発明によれば、ベイジアンネットワークの産業応用範囲を拡大することができる。
【図面の簡単な説明】
【００３５】
【図１】本発明の一実施例によるベイジアンネットワーク構造学習を実行するための情報処理装置のブロック図である。
【図２】入力データに含まれる情報の例を示す図である。
【図３】本発明の情報処理装置による処理を示す流れ図である。
【図４】図３のステップ３１０の処理をさらに詳細に示す流れ図である。
【図５】Aprioriの擬似コードを示す図である。
【図６】genFreqItemSet1ルーチンの一例を示す図である。
【図７】多頻度アイテム集合抽出アルゴリズムの一例としてAprioriを採用し、これを組み込んだ場合の本発明における相互情報量計算のためのcalcMutualInformationルーチンの一例を示す図である。
【図８】Thickeningルーチンの一例を示す図である。
【図９】Thickeningルーチンにおいて実行される主要な処理の詳細を示す流れ図である。
【図１０】図９に続く処理の詳細を示す流れ図である。
【図１１】図８のThickeningルーチンにおいて呼び出され、図９及び図１０の処理に用いられるedgeNeeded_Hルーチンの一例を示す図である。
【図１２Ａ】edgeNeeded_Hルーチンにおいて呼び出されるedgeNeededBodyルーチンの一例を示す図である。
【図１２Ｂ】edgeNeeded_Hルーチンにおいて呼び出されるedgeNeededBodyルーチンの一例を示す図である。
【図１３】与えられた条件集合に含まれる確率変数の数が１の場合の条件付き相互情報量の計算処理の過程を示す流れ図である。
【図１４】与えられた条件集合に含まれる確率変数の数が２以上の場合の条件付き相互情報量の計算処理の過程を示す流れ図である。
【図１５】図１３及び図１４の処理に用いられるcalcConditionalMIルーチンの一例を示す図である。
【図１６】図１３及び図１４の処理に用いられ、calcConditionalMIルーチンにおいて呼び出されるhaveValidCandidateルーチンの一例を示す図である。
【図１７】エッジ削減処理の詳細を示す流れ図である。
【図１８】Thinningルーチンの一例を示す図である。
【図１９】Thinningルーチンで呼び出されるedgeNeededルーチンの一例を示す図である。
【図２０】無向エッジの方向付け処理の詳細を示す流れ図である。
【図２１】エッジの方向付けに用いられるorientEdgeルーチンの一例を示す図である。
【図２２】実験に使用したベイジアンネットワークを示す図である。
【図２３】本発明の第２の実施例において、図３のステップ３１０の処理をさらに詳細に示す流れ図である。
【図２４】本発明の第２の実施例におけるThickeningルーチンの一例を示す図である。
【図２５】本発明の第２の実施例において、Thickeningルーチン内で実行される主要な処理の詳細を示す流れ図である。
【図２６】本発明の第２の実施例において、図２４のThickeningルーチンにおいて呼び出され、図２５の処理に用いられるedgeNeeded_Hルーチンの一例を示す図である。
【図２７】本発明の第２の実施例において、edgeNeeded_Hルーチンおよび edgeNeededルーチンにおいて呼び出されるSearchCutSetルーチンの一例を示す図である。
【図２８】本発明の第２の実施例におけるエッジ削減処理の詳細を示す流れ図である。
【図２９】本発明の第２の実施例におけるThinningルーチンの一例を示す図である。
【図３０】本発明の第２の実施例において、Thinningルーチンで呼び出されるedgeNeededルーチンの一例を示す図である。
【図３１】本発明の第２の実施例において、エッジの方向付けに用いられるorientEdgeルーチンの一例を示す図である。
【発明を実施するための形態】
【００３６】
本発明の実施例によるベイジアンネットワーク構造学習を実行するための情報処理装置１００のブロック図を図１に示す。
【００３７】
制御部１０２は、情報処理装置１００全体の処理の流れを制御する部分である。制御部１０２は、前処理として、構造学習の開始に際して指定される引数やパラメータが正常であるか否かをチェックする。制御部１０２は、これらが正常である場合にデータ仕様解析部１０４にデータ仕様を解析させる。制御部１０２は、その後、引き続き構造学習部１１０にアルゴリズムの主処理を実行させる。データ仕様解析部１０４は、データ仕様記述ファイル１０８を読み込み、主たる入力となるデータを分析する準備を行う。ここで、主たる入力となるデータは、例えば、ＣＳＶ形式、リレーショナルデータベースにおけるリレーションなどで表現されている表形式のデータである。当該データは、例えば、ユーザにより情報処理装置１００に入力され、情報処理装置１００内のデータベース１０６に格納される。このほか、当該データは、情報処理装置１００と有線又は無線により通信可能に接続された通信ネットワーク上のデータベースに格納されていてもよく、ベイジアンネットワーク構造学習を要求するコマンドの受信に応じて情報処理装置１００が当該データベースにアクセスしてデータを受け取ってもよい。データを格納するデータストアは、ファイル、リレーショナルデータベース、メモリ上の２次元配列のいずれであってもよい。本実施例では、リレーショナルデータベースであるとして以下の説明を行う。
【００３８】
このようなデータに含まれる情報の例を図２に示す。各列は，「ＩＤ」及び「各確率変数名」で構成され、各行は、対応する「ＩＤ」及び「各確率変数の状態（実現値）」で構成されている。図２の例は、Ａ、Ｂ、Ｃ及びＤの４つの商品を取り扱っている店舗において、顧客が使用するクーポン券の種類をＴ１及びＴ２の２種類（これらは併用不可とする。）とし、クーポン券が使用されなかった場合をｎで表し、顧客が購入した商品をｙ、購入しなかった商品をｎと表すこととした場合における、顧客６人分の購買データを表している。
【００３９】
データ仕様記述ファイル１０８は、上記データに含まれる確率変数及び各確率変数の状態（実現値）についての情報を含むファイルである。データ仕様記述ファイル１０８は、例えばＣＳＶ形式のファイルであり、確率変数の状態数がｎ個である場合、各行に、確率変数名、状態１、状態２、・・・、状態ｎというように記述される。例えば、先の図２の例の場合、顧客の購買行動履歴データを表す確率変数及びその実現値は、データ仕様記述ファイル１０８に次のように記述される。
クーポン,  Ｔ１,  Ｔ２,  ｎ
Ａ,  ｙ,  ｎ
Ｂ,  ｙ,  ｎ
Ｃ,  ｙ,  ｎ
Ｄ,  ｙ,  ｎ
【００４０】
再び図１に戻り、データ仕様解析部１０４は、データ仕様記述ファイル１０８を読み込み、各確率変数の名前、確率変数の数、各確率変数の状態名、各確率変数の状態の数、全体のデータ件数についての情報を保持し、他の構成要素にこれらの情報を提供する。
【００４１】
構造学習部１１０は、本出願において提案されるベイジアンネットワーク構造学習アルゴリズムを実行する部分であり、その具体的な動作については以下に詳細に説明する。
【００４２】
クエリー管理部１１２は、入力されたデータから相互情報量および条件付き相互情報量を計算する。これらの計算に必要な確率分布の算出のためには、条件に該当するデータの件数を数えるデータベースクエリーをデータベース１０６に対して発行する必要がある。以下に詳細に述べるが、本発明は、一実施例において、相互情報量及び条件付き相互情報量の計算の際に、多頻度アイテム集合抽出アルゴリズムを用いて必要性が低い計算を行わないようにして、全体の処理を高速化する点を特徴とする。また、本アルゴリズム実行中は、同一条件のデータ件数が複数回参照されるが，クエリー結果の取得は比較的時間のかかる処理であるため、そのたびにクエリーを発行していては効率が悪い。そこで、クエリー管理部１１２は、一度取得したクエリー結果と対応する条件をクエリー結果キャッシュ部１１４に渡して保持させる。クエリー管理部１１２は、データ件数を取得する必要が生じたときには、クエリー結果キャッシュ部１１４に問合せ，すでに結果を取得済みであればその結果を利用し、まだ結果を得ていなければクエリーを発行してデータベース１０６からデータ件数を取得する。
【００４３】
クエリー結果キャッシュ部１１４は、クエリーの検索条件をキーとし、クエリー結果たる該当データ件数を値としたハッシュテーブルを内部データ構造として持ち、クエリー結果を保持する。クエリー結果キャッシュ部１１４は、検索条件に該当するクエリー結果をすでに保持しているか否かについてのクエリー管理部１１２からの問合せに応答する機能と、新規のキー及び値のペアを保持する機能とを持つ。
【００４４】
切断集合保持部１１６は、確率変数ペア間の条件付き相互情報量を計算した際に、当該確率変数ペアと、条件付き相互情報量が閾値ε未満となる条件部分の変数集合とをレコードとし、要素として有するグローバルな切断集合を保持する機能を具備する。当該切断集合は、無向エッジの方向付けの際に必要とされる。
【００４５】
グラフ構造構築部１１８は、構造学習部１１０において推定されたベイジアンネットワークのグラフ構造を構築する機能を持つ部分である。他の構成要素と共有するデータ構造として、１）確率変数を表すノードの配列、及び２）確率変数ペア間の依存関係を表す有向または無向エッジの配列の構築と管理を行う。
【００４６】
図１の各構成要素による動作の結果、情報処理装置１００は、ベイジアンネットワーク構造記述ファイル１２０を出力する。ベイジアンネットワーク構造記述ファイル１２０は、情報処理装置１００により推定されたベイジアンネットワークの構造の情報を有するファイルである。例えば、推定されたエッジが向きを検出されて有向エッジとなった場合、「親変数名→子変数名」のように表され、エッジの向きを検出することができずに無向エッジとなった場合には、「変数名１−変数名２」のように表される。例えば、図２の例において、情報処理装置１００による構造学習の結果、クーポンがＡ及びＤの親変数であり、ＡがＢの親変数であり、Ｂ及びＣはどちらが親かは不明であるがこれらの間にエッジが存在することが推定された場合、出力されるベイジアンネットワーク構造記述ファイル１２０は次のような内容を含む。
クーポン→Ａ
クーポン→Ｄ
Ａ→Ｂ
Ｂ−Ｃ
【実施例１】
【００４７】
制約ベース学習アルゴリズムに多頻度アイテム集合抽出アルゴリズムを組み込むことにより、従来のＴＰＤＡと比較してさらに高速且つ処理時間のばらつきの少ないベイジアンネットワーク構造学習を可能とする本発明の一実施例につき、以下に詳細に説明する。【００４８】
本実施例の情報処理装置１００による処理を示す流れ図を図３に示す。ベイジアンネットワーク構造学習を実行すべき旨の命令を受信すると、情報処理装置１００は処理を開始する（ステップ３０２）。当該命令は、構造学習の基礎となるデータを格納するデータベース１０６にアクセスするための接続情報及びデータ仕様記述ファイル名を含む所定の動作パラメータを含むように構成される。当該動作パラメータは、上記のほか、構造学習において使用される相互情報量及び条件付き相互情報量の閾値ε（一例として、０．０１）及び多頻度アイテム集合抽出において使用される最小支持度δ（０≦δ≦ε、一例として、０．０００５）を含む。さらに、出力となるベイジアンネットワーク構造記述ファイルのファイル名を含んでもよい。【００４９】
情報処理装置１００は初期処理を行う。制御部１０２は、上記動作パラメータが正常であるか否かをチェックして（ステップ３０４）、エラーがあれば処理を終了し（ステップ３２０）、正常であればデータ仕様解析部１０４にデータ仕様を解析させる（ステップ３０６）。データ仕様解析部１０４は、データ仕様記述ファイル１０８を読み取り、データに含まれる各確率変数の名前、確率変数の数、各確率変数が取りうるすべての状態の名前及び状態数を保持する。次に、データ仕様解析部１０４は、データベース接続情報を用いてデータベース１０６に接続し、全データの件数を取得してこれを保持する（ステップ３０８）。ステップ３０８の後、制御部１０２は制御を構造学習部１１０に移す。【００５０】
構造学習部１１０は木構造準備処理を行い、与えられたデータについて木構造を生成する（ステップ３１０）。ステップ３１０の処理を図４においてさらに詳細に示す。【００５１】
図４の処理中では、確率変数のペアについて相互情報量（式（２））を計算する必要がある。本実施例は、多頻度アイテム集合抽出アルゴリズムの概念を取り入れることにより、以下に述べるようにここでの相互情報量の計算を高速化する。【００５２】
多頻度アイテム集合抽出アルゴリズムは、データ中に出現するアイテム集合のうち、支持度（すなわち、あるアイテム集合が出現する同時確率）が最小支持度δ以上となるアイテム集合を高速に抽出するためのデータマイニングアルゴリズムの総称である。多頻度アイテム集合抽出アルゴリズムは、アイテム集合の支持度の逆単調性、すなわち、Ａ及びＢをそれぞれアイテム集合としたとき、
【数５】
0005555238.tif 000006
ならば、（Ａの支持度）≧（Ｂの支持度）である（つまり、Ａが多頻度アイテム集合でなければ、Ａを含む集合Ｂも多頻度アイテム集合ではない）という性質を利用して枝狩りを行うことにより、効率的に多頻度アイテム集合を抽出するアルゴリズムである。【００５３】
多頻度アイテム集合抽出アルゴリズムの一例として、Apriori（Agrawal, R. and Srikant, R.: Fast Algorithms for Mining Association Rules, in Proc. of the 20thInt’l Conference on Very Large Databases, pp. 487-499, Santiago, Chile (1994)参照）がある。Aprioriの擬似コードを図５に示す。【００５４】
本実施例においては、多頻度アイテム集合抽出アルゴリズムを用いて相互情報量の計算を高速化するために、確率変数とその値の組をアイテム集合と見なし、相互情報量を表す式（２）の右辺を構成する成分のうち、最小支持度δ未満の同時確率変数とその値との組に関連する成分を計算対象から除外する。【００５５】
例えば、確率変数Ｘのとる状態がｘ１，ｘ２，・・・，ｘｎ（すなわち、Ｘ＝｛ｘ１，ｘ２，・・・，ｘｎ｝）であり、確率変数Ｙのとる状態がｙ１，ｙ２，・・・，ｙｍ（すなわち、Ｙ＝｛ｙ１，ｙ２，・・・，ｙｍ｝）であるとする。この場合、互いに異なる確率変数Ｘ及びＹの相互情報量Ｉ（Ｘ，Ｙ）は、次の式で表される。
【数６】
0005555238.tif 000007
【００５６】
ここで、Ｐ（ｘ）もしくはＰ（ｙ）が最小支持度δ未満であれば、Ｐ（ｘ，ｙ）もまた最小支持度δ未満となる。既に述べたとおり、０≦δ≦εであるから、このとき、
【数７】
0005555238.tif 000008
が成立する。したがって、Ｐ（ｘ）もしくはＰ（ｙ）が最小支持度δ未満であることを判断することにより、式（４）の右辺において足し合わされる成分（式（５）の左辺）について直接計算しなくとも、当該成分がε未満となることが分かる。【００５７】
図４に戻り、クエリー管理部１１２は、ステップ４０２において、各確率変数につき、とり得る状態のすべてについて周辺確率を計算する。周辺確率が最小支持度δ以上となるような確率変数と状態の集合（＜Ｘ，ｘ＞、＜Ｙ，ｙ＞等として表される）をサイズ１の多頻度アイテム集合Ｆ１に加える。また、そのときの確率変数及び状態を検索条件キーとし、当該検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部１１４に記憶する。クエリー管理部１１２においてこの手続を行うgenFreqItemSet1ルーチンの一例を図６に示す。【００５８】
クエリー管理部１１２は、すべての確率変数ペアについて相互情報量を計算し、相互情報量がε以上となる確率変数のペアを確率変数ペア配列に追加する。この際、クエリー管理部１１２は、上述の多頻度アイテム集合抽出アルゴリズムを利用することにより、計算処理を高速化する。【００５９】
具体的には、クエリー管理部１１２は、各確率変数ペアを構成する確率変数（ここではＸ及びＹとする）の各々と取る状態との組（例えば、＜Ｘ，ｘ１＞，＜Ｙ，ｙ１＞）のすべてについて、各組の要素（ここでは、＜Ｘ，ｘ１＞及び＜Ｙ，ｙ１＞）の両方が上記多頻度アイテム集合Ｆ１に含まれる（すなわち、このときの周辺確率がいずれも最小支持度δ以上である）かどうかを判定する（ステップ４０４）。少なくとも一方が集合Ｆ１に含まれない（最小支持度δ未満である）場合（ステップ４０４の「いいえ」）、式（４）の右辺における
【数８】
0005555238.tif 000009
（相互情報量の成分）の計算を行わない。【００６０】
一方、いずれも含まれる場合（ステップ４０４の「はい」）、このときの同時確率Ｐ（ｘ,ｙ）がδ以上となるかを判定する（ステップ４０６）。同時確率がδ以上となる場合（ステップ４０６の「はい」）、このときの相互情報量の成分（式（６））の計算を行う（ステップ４０８）。さらに、現在の確率変数及び状態の組（例えば、＜Ｘ，ｘ１＞，＜Ｙ，ｙ１＞）を検索条件キーとし、当該検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部１１４に記憶する。また、上記現在の確率変数と状態の集合をサイズ２の多頻度アイテム集合Ｆ２に加える。【００６１】
クエリー管理部１１２は、ステップ４０４からステップ４０８をすべての組について繰り返した後（ステップ４１０）、これまでに計算した相互情報量の成分を足し合わせることにより、現在着目している確率変数ペアについての相互情報量を得る（ステップ４１２）。構造学習部１１０は、相互情報量がε以上の場合、その確率変数ペアを確率変数ペア配列に追加する。ステップ４０４から４１２をすべての確率変数ペアについて繰り返し、すべての確率変数ペアについて相互情報量を計算する（ステップ４１４）。【００６２】
続いて、構造学習部１１０は、確率変数ペア配列内に格納された確率変数ペアを、相互情報量の大きい順にソートする（ステップ４１６）。そして、相互情報量の大きい確率変数ペアの順に、当該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままか否かをグラフ構造構築部１１８に問い合わせる（ステップ４１８）。グラフ構造構築部１１８は、エッジを追加すると閉路が発生する場合、木構造とならなくなる旨を構造学習部１１０に通知する（ステップ４１８の「いいえ」）。一方、木構造のままである旨がグラフ構造構築部１１８から通知されると（ステップ４１８の「はい」）、構造学習部１１０は、現在着目している確率変数ペア間に無向エッジを追加するようグラフ構造構築部１１８に指示し、確率変数ペア配列から当該確率変数ペアを削除する（ステップ４２０）。確率変数ペア配列内のすべての確率変数ペアについてステップ４１８及び４２０が繰り返される（ステップ４２２）。【００６３】
上述のように、ステップ３１０の処理においては、相互情報量がε以上である確率変数ペアの各々について、その確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加するようにして、木構造のグラフ構造を生成する。そして、その際、入力データに含まれる各確率変数の周辺確率を計算し、確率変数ペアを構成するいずれかの確率変数がある状態を取る周辺確率がδ未満である場合には、関連する相互情報量の成分の計算を省略することにより、各確率変数ペアの相互情報量を計算している。【００６４】
多頻度アイテム集合抽出アルゴリズムの一例としてAprioriを採用し、これを組み込んだ場合の本実施例における相互情報量計算のためのcalcMutualInformationルーチンの一例を図７に示す。【００６５】
再び図３に戻り、構造学習部１１０は、ステップ３１２においてエッジ増加処理を実行する。構造学習部１１０は、相互情報量がε以上であるにもかかわらず、無向エッジを追加すると木構造にならなくなるために木構造準備処理において無向エッジが追加されなかった確率変数ペア（すなわち、確率変数ペア配列に残っている確率変数ペア）について、実際にエッジが必要であるか否かを条件付き相互情報量を用いることにより判定し、必要であると判定される場合には無向エッジを追加する。このときのThickening（エッジ増加）ルーチンの一例を図８に示す。【００６６】
Thickeningルーチンにおいて実行される主要な処理の詳細を図９に示す。構造学習部１１０は、相互情報量がε以上であるが無向エッジを有していない各確率変数ペア（すなわち、確率変数ペア配列に残っている確率変数ペア）について、当該ペアを構成する２つの確率変数（例えば、Ｘ，Ｙ）ノードの一方のノードを始点とし他方のノードを終点とするパス上に存在しそれら２つの確率変数ノードの何れかに隣接するノードの集合を最終的な条件集合（ConditionSet、Ｃ（太字））として設定する（ステップ９０２）。また、当該最終的な条件集合と同じ確率変数集合を有する候補条件集合Ｃ’（太字）を生成する。【００６７】
構造学習部１１０は、上記最終的な条件集合（例えば、｛Ｃ１，Ｃ２，Ｃ３，Ｃ４，・・・｝）に含まれるある１つの確率変数（すなわち、ＸとＹとの間のパス上に存在し、Ｘ又はＹに隣接する確率変数のうちの１つ）について、クエリー管理部１１２に条件付き相互情報量を計算させる。【００６８】
クエリー管理部１１２は、まず、最終的な条件集合に含まれる確率変数のうちある１つの確率変数（例えば、Ｃ１）のみが条件集合に含まれるとした場合について、条件付き相互情報量Ｉ（Ｘ，Ｙ｜Ｃ（太字））を計算する（ステップ９０４）。これを仮に最小の条件付き相互情報量として記憶し、このときの条件集合｛Ｃ１｝を仮に条件付き相互情報量が最小となる条件集合として記憶する。【００６９】
クエリー管理部１１２は、次に、条件集合に上記１つの確率変数（ここでは、Ｃ１）と別の１つの確率変数（Ｃ２、Ｃ３、Ｃ４・・・のうちの１つ）とが含まれる場合について、条件付き相互情報量を計算する（ステップ９０６）。【００７０】
構造学習部１１０は、計算された条件付き相互情報量がε未満であるかを判定する（ステップ９０８）。ε未満の場合（ステップ９０８の「はい」）、このときの確率変数ペア（｛Ｘ,Ｙ｝）と条件集合（例えば、｛Ｃ１,Ｃ２｝）との組を切断集合保持部１１６内のグローバルな切断集合に格納する。そして当該確率変数ペア間にエッジが不要であると判断する（ステップ９１０）。ε以上である場合（ステップ９０８の「いいえ」）、計算された条件付き相互情報量が現在の最小の条件付き相互情報量よりも大きいかを判定する（ステップ９１２）。大きい場合（ステップ９１２の「はい」）、構造学習部１１０は、候補条件集合Ｃ’（太字）から上記別の１つの確率変数を削除する（ステップ９１４）。小さい場合（ステップ９１２の「いいえ」）、構造学習部１１０は、このときの条件付き相互情報量を最小の相互情報量として記憶し、また、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する（ステップ９１６）。【００７１】
続いて、クエリー管理部１１２は、候補条件集合に残っている確率変数のうち、上記の既に着目した１つの確率変数（上述の例ではＣ１）以外の確率変数のうちの１つのみが条件集合に含まれる場合について、条件付き相互情報量を計算する（ステップ９１８）。計算された条件付き相互情報量が現在の最小の条件付き相互情報量より小さい場合、このときの条件付き相互情報量を最小の相互情報量として記憶する。また、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する（ステップ９２０）。【００７２】
クエリー管理部１１２は、現在着目している１つの確率変数と、候補条件集合に残っているその他の確率変数のうちの１つとが条件集合に含まれる場合について、条件付き相互情報量を計算する（ステップ９２２）。構造学習部１１０は、計算された条件付き相互情報量がε未満の場合（ステップ９２４の「はい」）、このときの確率変数ペアと条件集合との組を切断集合保持部１１６内のグローバルな切断集合に記憶する。そして、当該確率変数ペア間にエッジが不要であると判断する（ステップ９１０）。計算された条件付き相互情報量がε以上の場合（ステップ９２４の「いいえ」）、その値がステップ９１８で計算された値より大きいかを判定する（ステップ９２６）。大きい場合（ステップ９２６の「はい」）、候補条件集合から上記その他の１つの確率変数を削除する（ステップ９２８）。小さい場合（ステップ９２６の「いいえ」）、このときの条件付き相互情報量を最小の相互情報量として記憶し、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する（ステップ９３０）。【００７３】
処理は図１０に続く。ステップ９１８から９３０を候補条件集合に残っているすべての確率変数について繰り返した後（ステップ１００２）、クエリー管理部１１２は、候補条件集合に残っているすべての確率変数を条件集合として条件付き相互情報量を計算する（ステップ１００４）。計算された条件付き相互情報量がε未満であるかを判定する（ステップ１００６）。ε未満である場合（ステップ１００６の「はい」）、構造学習部１１０は、このときの確率変数ペアと条件集合との組を切断集合保持部１１６内のグローバルな切断集合に格納し（ステップ１００８）、当該確率変数ペア間にエッジが不要であると判断する。ε以上である場合（ステップ１００６の「いいえ」）、構造学習部１１０は、当該確率変数ペア間にエッジが必要であると判断する（ステップ１０１０）。【００７４】
図９及び図１０の例においては、条件集合のサイズを１から２へと大きくしながら条件付き相互情報量の計算を行い、それでもなおε未満となる条件付き相互情報量が得られない場合には、候補集合に残っているすべての確率変数を条件集合として条件付き相互情報量を計算し、これがε未満となるかを判断した。しかし、同様の考え方により、条件集合のサイズをさらに３、４、と大きくしていき、最終的な条件集合のサイズ以下のサイズまでについて図９のように処理を行ってもよい。【００７５】
上述のように、ステップ３１２においては、相互情報量がε以上でありながらステップ３１０においてエッジが追加されなかった各確率変数ペアについて、エッジが必要である場合にこれを追加する。その際、該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数の組を条件集合として条件付き相互情報量を計算し、その値がε未満となる組が見つかった場合には、該２つの確率変数間にエッジを追加せず、そうでなければエッジを追加する。より具体的には、該２つの確率変数ノード間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノードの集合を最終的な条件集合として、該２つの確率変数ノード及び条件集合Ｃ（太字）についての条件付き相互情報量を、条件集合Ｃ（太字）のサイズが１である場合から上記最終的な条件集合のサイズとなる場合までサイズを大きくしながら計算していき、その過程でε未満となる条件付相互情報量が得られた場合には、該２つの確率変数間にエッジを追加せず、そうでなければ必要と判断してエッジを追加している。そして、条件付き相互情報量の計算においては、２つの確率変数の状態とそれぞれの確率変数に対応する状態集合とについての同時確率分布がδ未満となる場合には、関連する成分の計算を省略する。【００７６】
図７のThickeningルーチンにおいて呼び出され、図９及び図１０の処理に用いられるedgeNeeded_Hルーチンの一例を図１１に示し、edgeNeeded_Hルーチンにおいて呼び出されるedgeNeededBodyルーチンの一例を図１２Ａ及び図１２Ｂに示す。図１２Ａのルーチンは、条件集合Ｃ（太字）のサイズを１から２へと順に大きくして条件付き相互情報量の計算をするように構成されている。図１２Ｂのルーチンは、条件集合のサイズを１から最終的な条件集合のサイズまで順に大きくしながら計算を行うように構成されている。【００７７】
図９のステップ９０４、９０６、９１８及び９２２並びに図１０のステップ１００４においては、様々な確率変数の組を条件集合として条件付き相互情報量を計算する。本実施例においては、その過程において、条件集合のサイズが小さい（サイズが１）場合の条件付き相互情報量を計算し、次いで条件集合のサイズを大きくしながら条件付き相互情報量を計算している。そして、条件付き相互情報量が閾値ε未満となる条件集合が見つかるまで計算を繰り返し、見つかった場合には着目している確率変数ペア間にエッジは不要であると判断し、見つからなかった場合にはエッジが必要であると判断している。【００７８】
本実施例によれば、図９及び図１０において実行される条件付き相互情報量の計算においても、多頻度アイテム集合抽出アルゴリズムを用いて計算を高速化するために、確率変数とその値の組をアイテム集合と見なし、最小支持度δ未満の同時確率変数とその値の組に関連する成分を計算対象から除外する。例えば、Ｘ＝｛ｘ１，ｘ２，・・・，ｘｎ｝及びＹ＝｛ｙ１，ｙ２，・・・，ｙｍ｝である場合、互いに異なる確率変数Ｘ及びＹの条件付き相互情報量Ｉ（Ｘ，Ｙ｜Ｃ（太字））は、次の式で表される。
【数９】
0005555238.tif 000010
【００７９】
ここでＰ（ｘ，ｙ，ｃ（太字））が最小支持度δ未満であれば、式（７）の右辺を構成する成分もまたδ未満となる。既に述べたとおり、０≦δ≦εであるから、このとき、当該成分について、
【数１０】
0005555238.tif 000011
が成立する。したがって、式（７）の右辺の各成分を直接計算することなく、その値がε未満となることが分かる。【００８０】
このように多頻度アイテム集合抽出アルゴリズムを用いて処理を高速化した本実施例における条件付き相互情報量の計算過程を以下に説明する。この計算においては、与えられた条件集合（式（７）におけるＣ（太字））に含まれるすべての確率変数がとり得る状態パターンの集合（Ｑ）中のすべての状態パターン（ｑ）について、以下の処理を実行する。【００８１】
与えられた条件集合に含まれる確率変数の数（｜ｑ｜）が１の場合の処理のフローを図１３に示す。クエリー管理部１１２は、Ｐ（ｃ（太字））（ｃ（太字）は確率変数に対応する状態集合）を計算する。この値がδ未満となるかが判定され（ステップ１１０２）、δ未満となる場合（ステップ１１０２の「はい」）、クエリー管理部１１２は、条件付き相互情報量の成分（式（７）の右辺を構成する成分）の計算を行わない。δ以上となる場合（ステップ１１０２の「いいえ」）、Ｐ（ｘ｜ｃ（太字））が０となるかを判断する（ステップ１１０４）。０となる場合（ステップ１１０４の「はい」）、条件付き相互情報量の成分の計算を行わない。０でない場合（ステップ１１０４の「いいえ」）、Ｐ（ｙ｜ｃ（太字））が０となるかを判断する（ステップ１１０６）。０となる場合（ステップ１１０６の「はい」）、条件付き相互情報量の成分の計算を行わない。０でない場合（ステップ１１０６の「いいえ」）、構造学習部１１０は、現在の確率変数ペアを構成する２つの確率変数と現在の条件集合とからなる集合から得られる、当該集合よりサイズを１だけ小さくした部分集合のすべてを考慮し（ステップ１１０８）、そのすべての部分集合が多頻度アイテム集合（Ｆ１、Ｆ２、・・・）に含まれるかを判断する（ステップ１１１０）。含まれない場合（ステップ１１１０の「いいえ」）、クエリー管理部１１２は、条件付き相互情報量の成分の計算を行わない。含まれる場合（ステップ１１１０の「はい」）、Ｐ（ｘ,ｙ,ｃ（太字））がδ未満となるかを判断する（ステップ１１１２）。δ未満となる場合（ステップ１１１２の「はい」）、条件付き相互情報量の成分の計算を行わない。δ以上となる場合（ステップ１１１２の「いいえ」）、クエリー管理部１１２は、現在の確率変数及び状態の組について、条件付き相互情報量の成分を計算する（ステップ１１１４）。【００８２】
現在の確率変数ペアのうち一方の確率変数（例えば、Ｘ）の状態を固定し、他方の確率変数（例えば、Ｙ）のとり得るすべての状態についてステップ１１０６から１１１４を繰り返す（ステップ１１１６）。さらに、固定していた確率変数（Ｘ）のとり得るすべての状態についてステップ１１０４から１１１６を繰り返した後（ステップ１１１８）、これまでに計算した成分を足し合わせて条件付き相互情報量を得る（ステップ１１２０）。【００８３】
与えられた条件集合に含まれる確率変数の数（｜ｑ｜）が２以上の場合の処理のフローを図１４に示す。まず、条件集合から｜ｑ｜―１個の変数を含むすべての組み合わせを生成する（ステップ１４０２）。クエリー管理部１１２は、すべての組み合わせについて、その組み合わせが検索条件キーとしてクエリー結果キャッシュ部１１４に格納されているか問い合わせる（ステップ１４０４）。いずれかの組み合わせが格納されていない場合（ステップ１４０４の「いいえ」）、以下の処理を行わず終了する（ステップ１４０６）。【００８４】
すべての組み合わせがクエリー結果キャッシュ部１１４に格納されている場合（ステップ１４０４の「はい」）、Ｐ（ｃ（太字））（ｃ（太字）はそれぞれの確率変数に対応する状態値集合）がδ未満となるかを判断する（ステップ１４０８）。δ未満である場合（ステップ１４０８の「はい」）、クエリー管理部１１２に条件付き相互情報量の成分の計算を行わせない。δ以上である場合（ステップ１４０８の「いいえ」）、このときの確率変数を検索条件キーとし、検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部１１４に記憶する（ステップ１４１０）。また、確率変数と状態の集合を、確率変数の数ｎに等しいサイズの多頻度アイテム集合Ｆｎに追加する。【００８５】
次に、Ｐ（ｘ｜ｃ（太字））が０となるかを判断する（ステップ１４１２）。０である場合（ステップ１４１２の「はい」）、条件付き相互情報量の成分を計算しない。０でない場合（ステップ１４１２の「いいえ」）、Ｐ（ｙ｜ｃ（太字））が０となるかを判断する（ステップ１４１４）。０である場合（ステップ１４１４の「はい」）、条件付き相互情報量の成分を計算しない。【００８６】
０でない場合（ステップ１４１４の「いいえ」）、現在の確率変数ペアを構成する２つの確率変数と現在の条件集合とからなる集合から得られる、その集合よりサイズを１だけ小さくした部分集合のすべてを考慮し（ステップ１４１６）、そのすべての部分集合が多頻度アイテム集合（Ｆ１、Ｆ２、・・・）に含まれるかを判断する（ステップ１４１８）。含まれない場合（ステップ１４１８の「いいえ」）、条件付き相互情報量の成分を計算しない。含まれる場合（ステップ１４１８の「はい」）、Ｐ（ｘ,ｙ,ｃ（太字））がδ未満となるかを判断する（ステップ１４２０）。δ未満の場合（ステップ１４２０の「はい」）、条件付き相互情報量の成分を計算しない。δ以上の場合（ステップ１４２０の「いいえ」）、このときの確率変数を検索条件キーとし、検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部１１４に記憶する（ステップ１４２２）。また、確率変数と状態の集合を、確率変数の数ｎに等しいサイズの多頻度アイテム集合Ｆｎに追加する。【００８７】
次に、現在の確率変数及び状態の組について、条件付き相互情報量の成分を計算する（ステップ１４２４）。さらに、現在の確率変数ペアのうち一方の確率変数（Ｘ）の状態を固定し、他方の確率変数（Ｙ）のとり得るすべての状態についてステップ１４１４から１４２４を繰り返す（ステップ１４２６）。また、固定していた確率変数（Ｘ）のとり得るすべての状態についてステップ１４１２から１４２６を繰り返す（ステップ１４２８）。最後に、これまでに計算した条件付き相互情報量の成分をすべて足し合わせて、条件付き相互情報量を得る（ステップ１４３０）。【００８８】
図１３及び図１４の処理に用いられるcalcConditionalMIルーチン及びhaveValidCandidateルーチンの一例をそれぞれ図１５及び図１６に示す。【００８９】
図３に戻り、情報処理装置１００は、ステップ３１４においてエッジ削減処理を行う。
詳細な処理を図１７に示す。【００９０】
構造学習部１１０は、無向エッジを有する各確率変数ペアについて、当該確率変数ペア間に別のパスが存在するかをグラフ構造構築部１１８に問い合わせる（ステップ１７０２）。別のパスがない旨の通知をグラフ構造構築部１１８から受けると（ステップ１７０２の「いいえ」）、別の確率変数ペアについてのステップ１７０２の処理に移る。別のパスがある旨の通知をグラフ構造構築部１１８から受けると（ステップ１７０２の「はい」）、構造学習部１１０は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する（ステップ１７０４）。そして、当該確率変数ペアについて図９及び図１０に示した処理を実行し、この確率変数ペア間にエッジが必要であるか否かを判断する（ステップ１７０６）。エッジが必要である場合（ステップ１７０６の「はい」）、構造学習部１１０は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するよう指示する（ステップ１７０８）。エッジが不要である場合（ステップ１７０６の「いいえ」）、構造学習部１１０はそのような指示を行わず、当該無向エッジは削除されたままとなる。エッジ増加処理３１２を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ１７０２から１７０８の処理を繰り返す（ステップ１７１０）。【００９１】
続いて、構造学習部１１０は、現時点で無向エッジを有している各確率変数ペアについて、当該ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有するかについてグラフ構造構築部１１８に問い合わせる（ステップ１７１２）。ペアを構成するいずれの確率変数ノードもペアの相手以外に３つ以上の隣接ノードを有しない旨の通知をグラフ構造構築部１１８から受けると（ステップ１７１２の「いいえ」）、構造学習部１１０は別の確率変数ペアについてのステップ１７１２の処理に移る。ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有する旨の通知をグラフ構造構築部１１８から受けると（ステップ１７１２の「はい」）、構造学習部１１０は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する（ステップ１７１４）。そして、当該確率変数ペアを構成する２つの確率変数ノード間のパス上にある、それら２つの確率変数ノードのいずれかに隣接するノードと、さらに当該隣接ノードに隣接するノードとを含む集合を、最終的な条件集合に設定する（ステップ１７１６）。そして、当該確率変数ペア及び最終的な条件集合について、図９のステップ９０４以降の処理及び図１０の処理が実行され、この確率変数ペア間にエッジが必要であるか否かが判断される（ステップ１７１８）。エッジが必要である場合（ステップ１７１８の「はい」）、構造学習部１１０は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するよう指示する（ステップ１７２０）。エッジが不要である場合（ステップ１７１８の「いいえ」）、構造学習部１１０はそのような指示を行わず、当該無向エッジは削除されたままとなる。ステップ１７０２から１７１０の処理を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ１７１２から１７２０の処理を繰り返す（ステップ１７２２）。【００９２】
上述のように、ステップ３１４においては、ステップ３１２による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、必要である場合にエッジを追加する。その際、無向エッジを有する確率変数ペアについて、該無向エッジ以外のパスが存在する場合、該無向エッジを一時的に削除し、該確率変数ペアについて、ステップ３１２と同様にして、必要である場合に上記一時的に削除した無向エッジを追加する。さらに、無向エッジを有する確率変数ペアの少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有する場合、該無向エッジを一時的に削除する。そして、該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノード及び該隣接するノードにさらに隣接するノードを含む集合を最終的な条件集合として、ステップ３１２の場合と同様にして、必要である場合に上記一時的に削除した無向エッジを追加している。【００９３】
Thinning（エッジ削減）ルーチンの一例を図１８に示し、当該ルーチンで呼び出されるedgeNeededルーチンの一例を図１９に示す。【００９４】
図３に戻り、情報処理装置１００は、エッジ削減処理３１４までの作業によりグラフ構造構築部１１８に生成されているグラフ構造に含まれる無向エッジにつき、その方向付け処理を実行する（ステップ３１６）。詳細な処理を図２０に示す。【００９５】
ＸとＹとの間及びＹとＺとの間にそれぞれ直接接続する無向エッジが存在し、且つ、ＸとＺとの間には直接接続の無向エッジが存在しないような３つの確率変数の組（ここでは、Ｘ、Ｙ及びＺ）に着目する。構造学習部１１０は、このような確率変数の組について、切断集合保持部１１６に問い合わせ、１）｛Ｘ，Ｚ｝をレコードとする要素（例えば、＜｛Ｘ，Ｚ｝，Ｃ＞）がグローバルな切断集合に含まれており且つ当該要素に｛Ｘ，Ｚ｝とともに含まれる条件部分の変数集合（上記例ではＣ）にＹが含まれないか、又は２）（｛Ｘ，Ｚ｝をレコードとする要素（例えば、＜｛Ｘ，Ｚ｝，Ｃ＞）がグローバルな切断集合に含まれないか、のいずれかの条件が満たされるかを問い合わせる（ステップ２００２）。条件が満たされる場合（ステップ２００２の「はい」）、構造学習部１１０は、Ｘ及びＺがＹの親となるよう当該無向エッジに方向付けを行うよう、グラフ構造構築部１１８に指示する（ステップ２００４）。条件が満たされない場合（ステップ２００２の「いいえ」）、上記の関係を満たす別の３つの確率変数の組についてステップ２００２の処理を行う。【００９６】
上記の関係を満たす確率変数の組のすべてについてステップ２００２及び２００４の処理を実行した後（ステップ２００６）、構造学習部１１０は、現在の頂点集合に含まれる３つの確率変数の組（ここでは、Ｘ、Ｙ及びＺ）に着目する。構造学習部１１０は、グラフ構造構築部１１８に問い合わせて、１）ＸがＹの親であること、２）ＹとＺが隣接していること、３）ＸとＺが隣接していないこと、及び４）ＹとＺとの間のエッジが無向エッジであること、のすべての条件が満たされているかについて問い合わせる（ステップ２００８）。条件が満たされる場合（ステップ２００８の「はい」）、構造学習部１１０は、ＹがＺの親となるようにエッジの方向付けを行うよう、グラフ構造構築部１１８に指示する（ステップ２０１０）。条件が満たされない場合（ステップ２００８の「いいえ」）、頂点集合に含まれる別の３つの確率変数の組についてステップ２００８の処理を実行する。頂点集合に含まれる３つの確率変数の組のすべてについてステップ２００８及び２０１０の処理を行う（ステップ２０１２）。【００９７】
さらに、構造学習部１１０は、現時点で無向エッジを有する確率変数ペアについて、当該確率変数ペア間に有効なパスが存在するかについてグラフ構造構築部１１８に問い合わせる（ステップ２０１４）。存在する場合（ステップ２０１４の「はい」）、構造学習部１１０は、ＸがＹの親となるようにエッジの方向付けを行うよう、グラフ構造構築部１１８に指示する（ステップ２０１６）。すべての無向エッジについてステップ２０１４及び２０１６の処理を行う（ステップ２０１８）。【００９８】
エッジの方向付けに用いられるorientEdgeルーチンの一例を図２１に示す。【００９９】
図３のステップ３１６の実行後にグラフ構造構築部１１８が保持しているグラフ構造は、本実施例の一連の処理を経て学習されたベイジアンネットワーク構造を表している。情報処理装置１００は、これをベイジアンネットワーク構造記述ファイル１２０として出力し（ステップ３１８）、処理を完了する（ステップ３２０）。【０１００】
ここで説明された情報処理装置１００は図１に示す複数の構成要素からなるが、このよ
うな構成は一例にすぎない。すなわち、本発明の学習装置は、制御部１０２、データ仕様解析部１０４、構造学習部１１０、クエリー管理部１１２、クエリー結果キャッシュ部１１４、切断集合保持部１１６及びグラフ構造構築部１１８のうち複数の機能を単一の構成要素において実行するように構成されてもよい。また、これらの機能すべてを単一の構成要素（例えば、コンピュータのプロセッサ）において実行してもよい。情報処理装置１００は、データベース１０６を含んでもよい。【０１０１】
上述の実施例において、本発明は情報処理装置１００として実施されるものとして説明された。しかし、本発明は、コンピュータを図１に示す構成要素として動作させるプログラムとして実現することができる。また、本発明は、図３に記載の各ステップをコンピュータに実行させるプログラムとして実現することも可能である。【０１０２】
本実施例は、制約ベースの学習アルゴリズムに多頻度アイテム集合抽出アルゴリズムを組み合わせた新しいアルゴリズムを用いてベイジアンネットワーク構造学習を行うことを特徴とする。本実施例においては、具体的な説明のため、特定の制約ベース学習アルゴリズム及び多頻度アイテム集合抽出アルゴリズムを利用して本発明の技術的思想を説明した。しかし、本発明の技術的思想は、その他の制約ベース学習アルゴリズムや多頻度アイテム集合抽出アルゴリズムを用いても実現できるものである。【０１０３】
本実施例による情報処理装置及びプログラムは、上記アルゴリズムの双方を単に組み合わせて使用するものではない。すなわち、多頻度アイテム集合抽出アルゴリズムを用いて得られた出力を当該アルゴリズムにより抽出した同時確率分布とし、これをそのまま制約ベースの学習アルゴリズムに入力として渡すだけ、といった単純な組み合わせで動作するものではない。既に述べたとおり、本発明は、制約ベースの学習アルゴリズムの内部に多頻度アイテム集合抽出アルゴリズムを組み込んだ独自のアルゴリズムを用いる。そして、本発明は、構造学習時に処理が必要になる同時確率変数値のパターンに限って多頻度アイテム集合抽出の対象となるように動作する。また、制約ベース学習アルゴリズムを用いる場合、条件付き相互情報量の条件として所与とされる確率変数の数は、アルゴリズムが進行するに従って単調に増加するとは限らない。一方、多頻度アイテム集合抽出アルゴリズムは、扱うアイテム（本発明においては、確率変数とその取る値の組）の数がアルゴリズムの進行に伴って単調に増加する。本発明は、扱う確率変数の数が局所的に単調増加を保つよう制約ベース学習アルゴリズムを変更することにより、多頻度アイテム集合抽出アルゴリズムの効果的な組み込みを実現するものである。【０１０４】
本実施例によるベイジアンネットワーク構造学習の高速化及び処理時間の安定化の効果を確認するために実験を行った。実験の基礎となるベイジアンネットワークとしては、ベイジアンネットワーク学習の例題として頻繁に用いられるベイジアンネットワークリポジトリ（http://compbio.cs.huji.ac.il/Repository）からAlarmと呼ばれる３７ノード、４６エッジのネットワークを使用した。実験に使用したベイジアンネットワークを図２２に示す。当該ネットワークについてそれぞれ５０００件、１５０００件、３００００件及び５００００件のデータを生成し、これらデータを入力として用いて従来のＴＰＤＡアルゴリズム及び本実施例のアルゴリズムに従ってコンピュータを本実施例の情報処理装置として動作させることにより、ベイジアンネットワーク構造学習を行った。【０１０５】
上記のそれぞれのデータ件数について５データセットずつ実行したときの平均値等を表す実験結果を表１から表４に示す。Ｍｉｓｓｉｎｇ  Ｅｄｇｅ及びＥｘｔｒａ  Ｅｄｇｅは、それぞれ、正しいベイジアンネットワークと比較した場合の、推定されたベイジアンネットワークにおいて失われたエッジの数及び追加された余分なエッジの数を示す。各表においては、さらに、従来のＴＰＤＡアルゴリズムを使用した場合の実行時間を１としたときの各アルゴリズムについての実行時間と標準偏差、及び各アルゴリズムについてのデータ件数５０００件の場合の実行時間を１としたときの実行時間を示した。【０１０６】
【表１】
0005555238.tif 000012
【０１０７】
【表２】
0005555238.tif 000013
【０１０８】
【表３】
0005555238.tif 000014
【０１０９】
【表４】
0005555238.tif 000015
【０１１０】
実験結果から、本実施例により、従来のＴＰＤＡアルゴリズムを使用した場合と比較してベイジアンネットワーク構造学習を大幅に高速化できること、実行時間のばらつきを大幅に低減できることが分かる。また、Ｍｉｓｓｉｎｇ  Ｅｄｇｅ及びＥｘｔｒａ  Ｅｄｇｅにより示される正しいネットワークからの誤差についても、従来技術と遜色のないレベルに抑えられていることが分かる。このように、本実施例は、従来技術と比較して、推定されるベイジアンネットワークの精度を犠牲にすることなく、構造学習の高速化及び実行時間の安定化を実現できるという優れた効果を奏する。
【実施例２】
【０１１１】
続いて、切断集合の探索や切断集合の存在判定を行う際、条件変数集合の部分集合サイズが昇順となる順に条件付き相互情報量の計算を行いかつＭＤＦの仮定を最大限早期に用いること、すなわち２つの条件変数を所与とした場合と当該条件変数集合中の単一の各条件変数を所与とした場合の条件付き相互情報量とを比較し、切断集合に含まれない変数を２段階目ですべて探索対象から削除することにより、最大でもわずか３つの段階からなる処理を可能とし、ベイジアンネットワーク構造学習の高速化を可能とする、本発明の別の実施例につき以下に詳細に説明する。【０１１２】
本実施例の情報処理装置１００の構成は図１に示されている。また、本実施例における情報処理装置１００による基本的な処理は図３に示すとおりである。ベイジアンネットワーク構造学習を実行すべき旨の命令を受信すると、情報処理装置１００は処理を開始する（ステップ３０２）。当該命令は、ベイジアンネットワーク構造学習の基礎となるデータを格納するデータベース１０６にアクセスするための接続情報及びデータ仕様記述ファイル名を含むように構成される。当該動作パラメータは、上記のほか、ベイジアンネットワーク構造学習において使用される相互情報量及び条件付き相互情報量の閾値ε（一例として、０．０１）を含む。さらに、出力となるベイジアンネットワーク構造記述ファイルのファイル名を含んでもよい。【０１１３】
情報処理装置１００は初期処理を行う。制御部１０２は、上記動作パラメータが正常であるか否かをチェックして（ステップ３０４）、エラーがあれば処理を終了し（ステップ３２０）、正常であればデータ仕様解析部１０４にデータ仕様を解析させる（ステップ３０６）。データ仕様解析部１０４は、データ仕様記述ファイル１０８を読み取り、データに含まれる各確率変数の名前、確率変数の数、各確率変数が取り得るすべての状態の名前及び状態数を保持する。次に、データ仕様解析部１０４は、データベース接続情報を用いてデータベース１０６に接続し、全データの件数を取得してこれを保持する（ステップ３０８）。ステップ３０８の後、制御部１０２は制御を構造学習部１１０に移す。【０１１４】
構造学習部１１０は木構造準備処理を行い、与えられたデータについて木構造を生成する（ステップ３１０）。ステップ３１０の処理を図２３においてさらに詳細に示す。【０１１５】
クエリー管理部１１２は、すべての確率変数ペアについて相互情報量を計算する（ステップ２３０２）。構造学習部１１０は、相互情報量がε以上の場合、その確率変数ペアを、情報処理装置１００内の記憶部（図示せず）等に格納される確率変数ペア配列に追加する。【０１１６】
続いて、構造学習部１１０は、確率変数ペア配列内に格納された確率変数ペアを、相互情報量の大きい順にソートする（ステップ２３０４）。そして、相互情報量の大きい確率変数ペアの順に、当該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままであるか否かをグラフ構造構築部１１８に問い合わせる（ステップ２３０６）。グラフ構造構築部１１８は、エッジを追加すると閉路が発生する場合、木構造とならなくなる旨を構造学習部１１０に通知する（ステップ２３０６の「いいえ」）。一方、エッジを追加しても木構造が保たれる旨がグラフ構造構築部１１８から通知されると（ステップ２３０６の「はい」）、構造学習部１１０は、現在着目している確率変数ペア間に無向エッジを追加するようグラフ構造構築部１１８に指示し、確率変数ペア配列から当該確率変数ペアを削除する（ステップ２３０８）。確率変数ペア配列内のすべての確率変数ペアについてステップ２３０６及び２３０８が繰り返される（ステップ２３１０）。【０１１７】
上述のように、ステップ３１０の処理においては、相互情報量がε以上である確率変数ペアの各々について、その確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加するようにして、木構造のグラフ構造を生成する。生成されたグラフ構造は、グラフ構造構築部１１８、情報処理装置１００内の記憶部（図示せず）、あるいは構造学習部１１０等に記憶されてもよい。【０１１８】
再び図３に戻り、構造学習部１１０は、ステップ３１２においてエッジ増加処理を実行する。構造学習部１１０は、相互情報量がε以上であるにもかかわらず、無向エッジを追加すると木構造にならなくなるために木構造準備処理において無向エッジが追加されなかった確率変数ペア（すなわち、確率変数ペア配列に残っている確率変数ペア）について、実際にエッジが必要であるか否かを条件付き相互情報量を用いることにより判定し、必要であると判定される場合には当該確率変数ペア間に無向エッジを追加する。このときのThickening（エッジ増加）ルーチンの一例を図２４に示す。【０１１９】
本実施例においてThickeningルーチン内で実行される主要な処理の詳細を図２５に示す。構造学習部１１０は、相互情報量がε以上であるが無向エッジを有していない各確率変数ペア（すなわち、確率変数ペア配列に残っている確率変数ペア）について、当該ペアを構成する２つの確率変数（例えば、Ｘ、Ｙ）ノードの一方のノードを始点とし他方のノードを終点とするパス上に存在しそれら２つの確率変数ノードの何れかに隣接するノードの集合を最終的な条件集合（ConditionSet、本実施例においてはＺ（太字）と表す）として設定する（ステップ２４０２）。また、当該最終的な条件集合と同じ確率変数集合を有する候補条件集合Ｚｃ（太字）を生成する。【０１２０】
構造学習部１１０は、上記最終的な条件集合（例えば、｛Ｚ１，Ｚ２，Ｚ３，Ｚ４，・・・｝）に含まれるある１つの確率変数（すなわち、ＸとＹとの間のパス上に存在し、Ｘ又はＹに隣接する確率変数のうちの１つ）について、クエリー管理部１１２に条件付き相互情報量を計算させる。【０１２１】
クエリー管理部１１２は、まず、最終的な条件集合Ｚ（太字）に含まれる確率変数のうちある１つの確率変数（例えば、Ｚ１）のみが条件集合に含まれるとした場合について、条件付き相互情報量Ｉ（Ｘ，Ｙ｜Ｚ（太字））を計算する（ステップ２４０４）。計算された条件付き相互情報量は、その計算に使用された条件集合（ここではＺ１のみを含む）と関連付けて、クエリー管理部１１２や情報処理装置１００の記憶部（図示せず）などに格納されてもよい。【０１２２】
構造学習部１１０は、ステップ２４０４において計算された条件付き相互情報量につき、ε未満であるかを判定する（ステップ２４０６）。ε未満の場合（ステップ２４０６の「はい」）、このときの確率変数ペア（｛Ｘ,Ｙ｝）と条件集合（例えば、｛Ｚ１｝）との組を切断集合保持部１１６内に記憶されるグローバルな切断集合に格納する。そして当該確率変数ペア間にエッジが不要であると判断する（ステップ２４０８）。【０１２３】
一方、ステップ２４０４においてある１つの確率変数を条件集合として計算された条件付き相互情報量がε以上である場合（ステップの２４０６の「いいえ」）、処理はステップ２４０４に戻り、別の１つの確率変数（例えば、Ｚ２）のみが条件集合に含まれる場合について条件付き相互情報量が計算される。以下同様にしてステップ２４０４及び２４０６が繰り返される。すなわち、最終的な条件集合Ｚ（太字）に含まれるある１つの確率変数を所与とした条件付き相互情報量の計算が繰り返される。計算された条件付き相互情報量は、その計算に使用された条件集合と関連付けて、クエリー管理部１１２や情報処理装置１００の記憶部（図示せず）などに格納されてもよい。この過程において条件付き相互情報量がε未満となる確率変数が見つかれば（ステップ２４０６の「はい」）、処理はステップ２４０８に移る。【０１２４】
一方、ステップ２４０４及び２４０６の実行により計算されたいずれの条件付き相互情報量もε以上であった場合、処理はステップ２４１０に移る。クエリー管理部１１２は、最終的な条件集合Ｚ（太字）に含まれる確率変数のうちある２つの確率変数（例えば、Ｚ１及びＺ２）が条件集合に含まれるとした場合について、条件付き相互情報量Ｉ（Ｘ，Ｙ｜Ｚ（太字））を計算する（ステップ２４１０）。計算された条件付き相互情報量は、その計算に使用された条件集合（ここでは｛Ｚ１，Ｚ２｝）と関連付けて、クエリー管理部１１２や情報処理承知１００の記憶部（図示せず）などに格納されてもよい。【０１２５】
構造学習部１１０は、ステップ２４１０において計算された条件付き相互情報量につき、ε未満であるかを判定する（ステップ２４１２）。これがε未満である場合（ステップ２４１２の「はい」）、このときの確率変数ペア（｛Ｘ,Ｙ｝）と条件集合（例えば、｛Ｚ１，Ｚ２｝）との組を切断集合保持部１１６内のグローバルな切断集合に格納する。そして、当該確率変数ペア（ここでは、Ｘ及びＹ）間にエッジが不要であると判断される（ステップ２４０８）。【０１２６】
一方、ステップ２４１０において計算された条件付き相互情報量がε以上である場合（ステップの２４１２の「いいえ」）、構造学習部１１０は、当該条件付き相互情報量が、ステップ２４１０の計算において使用された条件集合に含まれる２つの確率変数のうちの一方（例えば、Ｚ１）を条件集合としてステップ２４０４において既に計算された条件付き相互情報量よりも大きいか否かを判定する（ステップ２４１４）。大きい場合（ステップ２４１４の「はい」）、構造学習部１１０は、記憶部（図示せず）などに格納されている候補条件集合Ｚｃ（太字）から当該一方の確率変数（ここでは、Ｚ１）を削除する。構造学習部１１０は、ステップ２４１０の計算において使用された条件集合に含まれる２つの確率変数のうちの他方（例えば、Ｚ２）についても同様の処理を行う（ステップ２４１８及び２４２０）。【０１２７】
その後、構造学習部１１０は、候補条件集合Ｚｃ（太字）に残るすべての確率変数につき、ステップ２４１０〜２４２０を繰り返す（ステップ２４２２）。例えば、当初の候補条件集合Ｚｃ（太字）にＺ１〜Ｚ６の６つの確率変数が含まれていた場合において、ステップ２４１４〜２４２０の処理を通じて候補条件集合Ｚｃ（太字）からＺ１及びＺ２が削除された場合には、残されたＺ３〜Ｚ６についてステップ２４１０〜２４２０の処理が再び実行される。【０１２８】
続いて、クエリー管理部１１２は、上述の処理の結果として候補条件集合Ｚｃ（太字）に残ったすべての確率変数を条件集合として条件付き相互情報量を計算する（ステップ２４２４）。構造学習部１１０は、ステップ２４２４において計算された条件付き相互情報量がε未満であるかを判定する（ステップ２４２６）。これがε未満である場合（ステップ２４２６の「はい」）、このときの確率変数ペア（｛Ｘ,Ｙ｝）と候補条件集合との組を切断集合保持部１１６内のグローバルな切断集合に格納する。そして、当該確率変数ペア（ここでは、Ｘ及びＹ）間にエッジが不要であると判断される（ステップ２４０８）。一方、ステップ２４２４において計算された条件付き相互情報量がε未満でない場合（ステップ２４２６の「いいえ」）、構造学習部１１０は、当該確率変数ペア間にエッジが必要であると判断し、グラフ構造構築部１１８にその旨の指示を行う（ステップ２４２８）。このようにして、エッジが必要であると判断された場合に確率変数ペア間にエッジが追加される。生成されたグラフ構造は、グラフ構造構築部１１８、情報処理装置１００内の記憶部（図示せず）、あるいは構造学習部１１０等に記憶されてもよい。【０１２９】
図２５に示すように、本実施例は、切断集合の探索や切断集合の存在判定に際して、最大でも、条件変数集合のサイズが１である場合の処理（第１段階、ステップ２４０４、２４０６及び２４０８）、条件変数集合のサイズが２である場合の処理（第２段階、ステップ２４１０〜２４２２及び２４０８）、及び第１段階及び第２段階の後に候補条件集合に残されたすべての確率変数に対する処理（第３段階、ステップ２４２４〜２４２８及び２４０８）の３つの段階のみを必要とする。これに対して、従来のＴＰＤＡは、与えられた条件変数集合の部分集合サイズが大きい方から（すなわち、降順に）切断集合を探索し、結果として最大でＮ−２（Ｎは確率変数の数）段階の探索を必要とする。したがって、多数の確率変数が存在する状況下でのベイジアンネットワーク構造学習に際して、本実施例は従来のＴＰＤＡと比較して、処理を格段に高速化することができる。【０１３０】
図２４のThickeningルーチンにおいて呼び出され、図２５の処理に用いられるedgeNeeded_Hルーチンの一例を図２６に示し、edgeNeeded_Hルーチンにおいて呼び出されるSearchCutSetルーチンの一例を図２７に示す。図２７のルーチンの詳細については既に図２５に関連して説明した。【０１３１】
図３に戻り、情報処理装置１００は、ステップ３１４においてエッジ削減処理を行う。詳細な処理を図２８に示す。【０１３２】
構造学習部１１０は、無向エッジを有する各確率変数ペアについて、当該確率変数ペア間に別のパスが存在するかをグラフ構造構築部１１８に問い合わせる（ステップ２７０２）。別のパスがない旨の通知をグラフ構造構築部１１８から受けると（ステップ２７０２の「いいえ」）、別の確率変数ペアについてのステップ２７０２の処理に移る。別のパスがある旨の通知をグラフ構造構築部１１８から受けると（ステップ２７０２の「はい」）、構造学習部１１０は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部１１８に指示する（ステップ２７０４）。そして、当該確率変数ペアについて図２５に示した処理を実行し、この確率変数ペア間にエッジが必要であるか否かを判断する（ステップ２７０６）。既に述べたように、本実施例においてステップ２７０６の処理は最大でもわずか３段階で実行することができるため、ここにおいても、従来のＴＰＤＡと比較して処理の高速化が可能である。エッジが必要である場合（ステップ２７０６の「はい」）、構造学習部１１０は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するようグラフ構造構築部１１８に指示する（ステップ２７０８）。エッジが不要である場合（ステップ２７０６の「いいえ」）、構造学習部１１０はそのような指示を行わず、当該無向エッジは削除されたままとなる。エッジ増加処理３１２を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ２７０２から２７０８の処理を繰り返す（ステップ２７１０）。【０１３３】
続いて、構造学習部１１０は、現時点で無向エッジを有している各確率変数ペアについて、当該ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有するかについてグラフ構造構築部１１８に問い合わせる（ステップ２７１２）。ペアを構成するいずれの確率変数ノードもペアの相手以外に３つ以上の隣接ノードを有しない旨の通知をグラフ構造構築部１１８から受けると（ステップ２７１２の「いいえ」）、構造学習部１１０は別の確率変数ペアについてのステップ２７１２の処理に移る。ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有する旨の通知をグラフ構造構築部１１８から受けると（ステップ２７１２の「はい」）、構造学習部１１０は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する（ステップ２７１４）。そして、当該確率変数ペアを構成する２つの確率変数ノード間のパス上にある、それら２つの確率変数ノードのいずれかに隣接するノードと、さらに当該隣接ノードに隣接するノードとを含む集合を、最終的な条件集合に設定する（ステップ２７１６）。そして、当該確率変数ペア及び最終的な条件集合について、図２５のステップ２４０４以降の処理が実行され、この確率変数ペア間にエッジが必要であるか否かが判断される（ステップ２７１８）。既に述べたように、本実施例によれば、この処理においても高速化が期待できる。エッジが必要である場合（ステップ２７１８の「はい」）、構造学習部１１０は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するようグラフ構造構築部１１８に指示する（ステップ２７２０）。エッジが不要である場合（ステップ２７１８の「いいえ」）、構造学習部１１０はそのような指示を行わず、当該無向エッジは削除されたままとなる。ステップ２７０２から２７１０の処理を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ２７１２から２７２０の処理を繰り返す（ステップ２７２２）。【０１３４】
上述のように、ステップ３１４においては、ステップ３１２による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、必要である場合にエッジを追加する。その際、無向エッジを有する確率変数ペアについて、該無向エッジ以外のパスが存在する場合、該無向エッジを一時的に削除し、該確率変数ペアについて、ステップ３１２と同様にして、必要であると判断される場合に上記一時的に削除した無向エッジを再び追加する。さらに、無向エッジを有する確率変数ペアの少なくとも一方の確率変数ノードが他方のノード以外に３つ以上の隣接ノードを有する場合、該無向エッジを一時的に削除する。そして、該確率変数ペアを構成する２つの確率変数ノードについて、その間のパス上にあり該２つの確率変数ノードのいずれかに隣接するノード及び該隣接するノードにさらに隣接するノードを含む集合を最終的な条件集合として、ステップ３１２の場合と同様にして、必要であると判断される場合に上記一時的に削除した無向エッジを再び追加している。【０１３５】
本実施例におけるThinning（エッジ削減）ルーチンの一例を図２９に示す。また、本実施例において当該ルーチンで呼び出されるedgeNeededルーチンの一例を図３０に示す。【０１３６】
図３に戻り、情報処理装置１００は、エッジ削減処理３１４までの作業によりグラフ構造構築部１１８において生成されたグラフ構造に含まれる無向エッジにつき、その方向付け処理を実行する（ステップ３１６）。詳細な処理については図２０に関連して既に説明されており、エッジの方向付けに用いられるルーチンの一例を図３１に示す。【０１３７】
図３のステップ３１６の実行後にグラフ構造構築部１１８が保持している（又は、情報処理装置１００内の記憶部（図示せず）等に格納されている）グラフ構造は、本実施例の一連の処理を経て学習されたベイジアンネットワーク構造を表している。情報処理装置１００は、これをベイジアンネットワーク構造記述ファイル１２０として出力し（ステップ３１８）、処理を完了する（ステップ３２０）。【０１３８】
本実施例に関して説明された情報処理装置１００は図１に示す複数の構成要素からなるが、このような構成は一例にすぎない。すなわち、本実施例の情報処理装置は、制御部１０２、データ仕様解析部１０４、構造学習部１１０、クエリー管理部１１２、クエリー結果キャッシュ部１１４、切断集合保持部１１６及びグラフ構造構築部１１８のうち複数の機能を単一の構成要素において実行するように構成されてもよい。また、これらの機能すべてを単一の構成要素（例えば、コンピュータのプロセッサ）において実行してもよい。情報処理装置１００は、データベース１０６を含んでもよい。【０１３９】
本実施例による計算量の低減及び処理の高速化について考察する。まず、本実施例の手法による、切断集合探索テストにおける最大計算量につき検討する。切断集合探索テストの第１段階（図２５におけるステップ２４０４及び２４０６に相当）では、条件変数集合サイズは１であるため、ＣＩテスト（条件付き相互情報量がε未満となるか否かの判定）において扱われる変数の数はＸ及びＹを含めて３である。したがって、第１段階におけるＣＩテストのパターン数は、ｒを変数の状態数の最大値とするとｒ３である。同様に、第２段階（図２５におけるステップ２４１０〜２４２２に相当）においては、パターン数はｒ４となる。第３段階（図２５におけるステップ２４２４〜２４２８に相当）においては、計算量が最大となる場合、ＣＩテストですべての変数を扱うことになるため、パターン数はｒＮである。各段階のＣＩテストの回数とパターン数を乗じてその和を取ることにより、本実施例において、最大計算量はＯ（ｒＮ＋Ｎ２ｒ４）となる。【０１４０】
次に、従来のＴＰＤＡによる、切断集合探索テストにおける最大計算量につき検討する。Ｚ（太字）を所与としたＸとＹの切断集合探索テストを行うこと、すなわち、Ｚ（太字）’⊆Ｚ（太字）を列挙して、それぞれについてＣＩテストを行うことを考える。変数が取りうる状態の最大値をｒとすると、条件変数集合サイズ｜Ｚ（太字）’|は、最大でＮ−２であり、ＣＩテストのパターン数はｒＮである．ＴＰＤＡでは、条件変数集合のサイズは第１段階目の｜Ｚ（太字）’|＝Ｎ−２から１ずつ減少し、最後のＮ−２段階目において、条件変数集合サイズは｜Ｚ（太字）’|＝１となる。したがって、ＴＰＤＡのＣＩテストのパターン数は、切断集合探索テストの第１、２、・・・Ｎ−２段階において、それぞれ、ｒＮ、ｒＮ−１、・・・ｒ３となる。よって、ＴＰＤＡによる最大計算量は、各段階のＣＩテスト数にパターン数を乗じてその和を取ることにより、
【数１１】
0005555238.tif 000016
となる。【０１４１】
本実施例による最大計算量Ｏ（ｒＮ＋Ｎ２ｒ４）とＴＰＤＡによる上記式（９）で表される最大計算量とを比較すると、その差分はそれぞれの計算量から両手法に共通な項であるｒＮを除くことにより分析できる。すなわち、当該共通項を除くと、ＴＰＤＡにおいては
【数１２】
0005555238.tif 000017
となり、本実施例ではＯ（Ｎ２ｒ４）となる。このように、ＴＰＤＡにおいて計算量の差分Ｏ（ｒＮ−１）はＮについて指数オーダーであるのに対し、本実施例ではＮ及びｒのいずれについても多項式オーダーである。したがって、本実施例によれば、ＴＰＤＡの場合と比較して切断集合探索テストにおける最大計算量を低減できることが確認された。【０１４２】
一方、本実施例において、ＣＩテストごとの最小計算量はＯ（ｒ３）である。なぜなら、本実施例によれば、第１段階の最初のＣＩテストにおいて切断集合が発見されれば、第２段階及び第３段階の処理は不要であり、当該ＣＩテストでｒ３のパターンを計算すれば良いからである。【０１４３】
これに対し、ＴＰＤＡでは、変数ＸとＹの切断集合を条件変数集合Ｚ（太字）から探索する際、条件変数集合の部分集合Ｚ（太字）’⊆Ｚ（太字）を部分集合のサイズの降順に列挙して、着目する部分集合が切断集合であるか否かをＣＩテストにより調べる。ＣＩテストの計算量は所与とする変数集合サイズの指数オーダーであるから、変数の取る状態数の最大値をｒ、所与とする変数集合サイズ｜Ｚ（太字）’|を最大の場合のＮ−２とすると、当該計算量はＯ（ｒＮ）となる。したがって、ＴＰＤＡによれば、切断集合探索テストごとの最小計算量はＯ（ｒＮ）である。したがって、本実施例によれば、切断集合探索テストにおける最小計算量に関しても、確率変数の数が増大するほど、ＴＰＤＡと比較して計算量を低減できることが確認された。【０１４４】
以上のように、本実施例による手法は、ＴＰＤＡと比較して最大計算量及び最小計算量の双方を低減できるという顕著な効果を奏することが理解される。【０１４５】
本実施例において、本発明は情報処理装置１００として実施されるものとして説明された。しかし、コンピュータを図１に示す構成要素の一部または全部として動作させるプログラムとして本発明を実現することができることは当業者にとって明らかであろう。また、図３に記載のステップの一部又は全部をコンピュータに実行させるプログラムとして本発明を実現し得ることも当業者にとって明らかであろう。【０１４６】
本実施例は、図２５及び図２７に関連して説明されたように、切断集合の探索や切断集合の存在の判定に際して、条件変数集合のサイズが１である場合の処理、条件変数集合のサイズが２である場合の処理、及びこれらの処理の後に候補条件集合に残されたすべての確率変数に対する処理、という最大でも３つの段階のみからなる手続きを実行することにより、多数の確率変数が存在する状況下でのベイジアンネットワーク構造学習における切断集合の探索を高速化することができる。この結果、従来のＴＰＤＡと比較してさらに高速なベイジアンネットワーク構造学習が可能となる。【０１４７】
本実施例によるベイジアンネットワーク構造学習の高速化及び処理時間の安定化の効果を確認するために実験を行った。実験に際して、アルゴリズムをＪａｖａ（登録商標）実験に用いた環境は、Ｉｎｔｅｌ  Ｃｏｒｅ  ２プロセッサ２．６７ＧＨｚの４ＧＢ  ＲＡＭ上で動作するＷｉｎｄｏｗｓ（登録商標）  Ｖｉｓｔａ  Ｂｕｓｉｎｅｓｓ  ＳＰ２であり、Ｊａｖａ（登録商標）仮想マシンには最大５１２ＭＢのメモリを割り当てた。【０１４８】
実施例１と同様、図２２に示すベイジアンネットワークを実験の基礎として使用した。当該ネットワークについてそれぞれ５０００件、１５０００件、３００００件及び５００００件のデータを生成し、これらデータを入力として用いて従来のＴＰＤＡアルゴリズム及び本実施例のアルゴリズムに従ってコンピュータを本実施例の情報処理装置として動作させることにより、ベイジアンネットワーク構造学習を行った。【０１４９】
上記のそれぞれのデータ件数について１０データセットずつ実行したときの平均値等を表す実験結果を表１から表４に示す。従来のＴＰＤＡを使用した場合の結果を「ＴＰＤＡ」の行に示し、本実施例による結果を「ＴＳ（Ｔｈｒｅｅ−Ｓｔａｇｅｄ）−ＴＰＤＡ」の行に示した。Ｍｉｓｓｉｎｇ  Ｅｄｇｅ及びＥｘｔｒａ  Ｅｄｇｅは、それぞれ、正しいベイジアンネットワークと比較した場合の、推定されたベイジアンネットワークにおいて失われたエッジの数及び追加された余分なエッジの数を示す。【０１５０】
【表５】
0005555238.tif 000018
【０１５１】
【表６】
0005555238.tif 000019
【０１５２】
【表７】
0005555238.tif 000020
【０１５３】
【表８】
0005555238.tif 000021
【０１５４】
実験結果から、本実施例により、従来のＴＰＤＡアルゴリズムを使用した場合と比較してベイジアンネットワーク構造学習を極めて大幅に高速化できること、実行時間のばらつきを極めて大幅に低減できることが分かる。また、Ｍｉｓｓｉｎｇ  Ｅｄｇｅ及びＥｘｔｒａ  Ｅｄｇｅにより示される正しいネットワークからの誤差についても、従来技術と遜色のないレベルに抑えられていることが分かる。このように、本実施例は、従来技術と比較して、推定されるベイジアンネットワークの精度を犠牲にすることなく、構造学習の大幅な高速化及び実行時間の安定化を実現できるという優れた効果を奏する。
【図１】
0005555238.tif 000022
【図２】
0005555238.tif 000023
【図３】
0005555238.tif 000024
【図４】
0005555238.tif 000025
【図５】
0005555238.tif 000026
【図６】
0005555238.tif 000027
【図７】
0005555238.tif 000028
【図８】
0005555238.tif 000029
【図９】
0005555238.tif 000030
【図１０】
0005555238.tif 000031
【図１１】
0005555238.tif 000032
【図１２Ａ】
0005555238.tif 000033
【図１２Ｂ】
0005555238.tif 000034
【図１３】
0005555238.tif 000035
【図１４】
0005555238.tif 000036
【図１５】
0005555238.tif 000037
【図１６】
0005555238.tif 000038
【図１７】
0005555238.tif 000039
【図１８】
0005555238.tif 000040
【図１９】
0005555238.tif 000041
【図２０】
0005555238.tif 000042
【図２１】
0005555238.tif 000043
【図２２】
0005555238.tif 000044
【図２３】
0005555238.tif 000045
【図２４】
0005555238.tif 000046
【図２５】
0005555238.tif 000047
【図２６】
0005555238.tif 000048
【図２７】
0005555238.tif 000049
【図２８】
0005555238.tif 000050
【図２９】
0005555238.tif 000051
【図３０】
0005555238.tif 000052
【図３１】
0005555238.tif 000053