制御部102は、情報処理装置100全体の処理の流れを制御する部分である。制御部102は、前処理として、構造学習の開始に際して指定される引数やパラメータが正常であるか否かをチェックする。制御部102は、これらが正常である場合にデータ仕様解析部104にデータ仕様を解析させる。制御部102は、その後、引き続き構造学習部110にアルゴリズムの主処理を実行させる。データ仕様解析部104は、データ仕様記述ファイル108を読み込み、主たる入力となるデータを分析する準備を行う。ここで、主たる入力となるデータは、例えば、CSV形式、リレーショナルデータベースにおけるリレーションなどで表現されている表形式のデータである。当該データは、例えば、ユーザにより情報処理装置100に入力され、情報処理装置100内のデータベース106に格納される。このほか、当該データは、情報処理装置100と有線又は無線により通信可能に接続された通信ネットワーク上のデータベースに格納されていてもよく、ベイジアンネットワーク構造学習を要求するコマンドの受信に応じて情報処理装置100が当該データベースにアクセスしてデータを受け取ってもよい。データを格納するデータストアは、ファイル、リレーショナルデータベース、メモリ上の2次元配列のいずれであってもよい。本実施例では、リレーショナルデータベースであるとして以下の説明を行う。
このようなデータに含まれる情報の例を図2に示す。各列は,「ID」及び「各確率変数名」で構成され、各行は、対応する「ID」及び「各確率変数の状態(実現値)」で構成されている。図2の例は、A、B、C及びDの4つの商品を取り扱っている店舗において、顧客が使用するクーポン券の種類をT1及びT2の2種類(これらは併用不可とする。)とし、クーポン券が使用されなかった場合をnで表し、顧客が購入した商品をy、購入しなかった商品をnと表すこととした場合における、顧客6人分の購買データを表している。
データ仕様記述ファイル108は、上記データに含まれる確率変数及び各確率変数の状態(実現値)についての情報を含むファイルである。データ仕様記述ファイル108は、例えばCSV形式のファイルであり、確率変数の状態数がn個である場合、各行に、確率変数名、状態1、状態2、・・・、状態nというように記述される。例えば、先の図2の例の場合、顧客の購買行動履歴データを表す確率変数及びその実現値は、データ仕様記述ファイル108に次のように記述される。
クーポン, T1, T2, n
A, y, n
B, y, n
C, y, n
D, y, n
再び図1に戻り、データ仕様解析部104は、データ仕様記述ファイル108を読み込み、各確率変数の名前、確率変数の数、各確率変数の状態名、各確率変数の状態の数、全体のデータ件数についての情報を保持し、他の構成要素にこれらの情報を提供する。
構造学習部110は、本出願において提案されるベイジアンネットワーク構造学習アルゴリズムを実行する部分であり、その具体的な動作については以下に詳細に説明する。
クエリー管理部112は、入力されたデータから相互情報量および条件付き相互情報量を計算する。これらの計算に必要な確率分布の算出のためには、条件に該当するデータの件数を数えるデータベースクエリーをデータベース106に対して発行する必要がある。以下に詳細に述べるが、本発明は、一実施例において、相互情報量及び条件付き相互情報量の計算の際に、多頻度アイテム集合抽出アルゴリズムを用いて必要性が低い計算を行わないようにして、全体の処理を高速化する点を特徴とする。また、本アルゴリズム実行中は、同一条件のデータ件数が複数回参照されるが,クエリー結果の取得は比較的時間のかかる処理であるため、そのたびにクエリーを発行していては効率が悪い。そこで、クエリー管理部112は、一度取得したクエリー結果と対応する条件をクエリー結果キャッシュ部114に渡して保持させる。クエリー管理部112は、データ件数を取得する必要が生じたときには、クエリー結果キャッシュ部114に問合せ,すでに結果を取得済みであればその結果を利用し、まだ結果を得ていなければクエリーを発行してデータベース106からデータ件数を取得する。
クエリー結果キャッシュ部114は、クエリーの検索条件をキーとし、クエリー結果たる該当データ件数を値としたハッシュテーブルを内部データ構造として持ち、クエリー結果を保持する。クエリー結果キャッシュ部114は、検索条件に該当するクエリー結果をすでに保持しているか否かについてのクエリー管理部112からの問合せに応答する機能と、新規のキー及び値のペアを保持する機能とを持つ。
切断集合保持部116は、確率変数ペア間の条件付き相互情報量を計算した際に、当該確率変数ペアと、条件付き相互情報量が閾値ε未満となる条件部分の変数集合とをレコードとし、要素として有するグローバルな切断集合を保持する機能を具備する。当該切断集合は、無向エッジの方向付けの際に必要とされる。
グラフ構造構築部118は、構造学習部110において推定されたベイジアンネットワークのグラフ構造を構築する機能を持つ部分である。他の構成要素と共有するデータ構造として、1)確率変数を表すノードの配列、及び2)確率変数ペア間の依存関係を表す有向または無向エッジの配列の構築と管理を行う。
図1の各構成要素による動作の結果、情報処理装置100は、ベイジアンネットワーク構造記述ファイル120を出力する。ベイジアンネットワーク構造記述ファイル120は、情報処理装置100により推定されたベイジアンネットワークの構造の情報を有するファイルである。例えば、推定されたエッジが向きを検出されて有向エッジとなった場合、「親変数名→子変数名」のように表され、エッジの向きを検出することができずに無向エッジとなった場合には、「変数名1−変数名2」のように表される。例えば、図2の例において、情報処理装置100による構造学習の結果、クーポンがA及びDの親変数であり、AがBの親変数であり、B及びCはどちらが親かは不明であるがこれらの間にエッジが存在することが推定された場合、出力されるベイジアンネットワーク構造記述ファイル120は次のような内容を含む。
クーポン→A
クーポン→D
A→B
B−C
制約ベース学習アルゴリズムに多頻度アイテム集合抽出アルゴリズムを組み込むことにより、従来のTPDAと比較してさらに高速且つ処理時間のばらつきの少ないベイジアンネットワーク構造学習を可能とする本発明の一実施例につき、以下に詳細に説明する。
本実施例の情報処理装置100による処理を示す流れ図を図3に示す。ベイジアンネットワーク構造学習を実行すべき旨の命令を受信すると、情報処理装置100は処理を開始する(ステップ302)。当該命令は、構造学習の基礎となるデータを格納するデータベース106にアクセスするための接続情報及びデータ仕様記述ファイル名を含む所定の動作パラメータを含むように構成される。当該動作パラメータは、上記のほか、構造学習において使用される相互情報量及び条件付き相互情報量の閾値ε(一例として、0.01)及び多頻度アイテム集合抽出において使用される最小支持度δ(0≦δ≦ε、一例として、0.0005)を含む。さらに、出力となるベイジアンネットワーク構造記述ファイルのファイル名を含んでもよい。
情報処理装置100は初期処理を行う。制御部102は、上記動作パラメータが正常であるか否かをチェックして(ステップ304)、エラーがあれば処理を終了し(ステップ320)、正常であればデータ仕様解析部104にデータ仕様を解析させる(ステップ306)。データ仕様解析部104は、データ仕様記述ファイル108を読み取り、データに含まれる各確率変数の名前、確率変数の数、各確率変数が取りうるすべての状態の名前及び状態数を保持する。次に、データ仕様解析部104は、データベース接続情報を用いてデータベース106に接続し、全データの件数を取得してこれを保持する(ステップ308)。ステップ308の後、制御部102は制御を構造学習部110に移す。
構造学習部110は木構造準備処理を行い、与えられたデータについて木構造を生成する(ステップ310)。ステップ310の処理を図4においてさらに詳細に示す。
図4の処理中では、確率変数のペアについて相互情報量(式(2))を計算する必要がある。本実施例は、多頻度アイテム集合抽出アルゴリズムの概念を取り入れることにより、以下に述べるようにここでの相互情報量の計算を高速化する。
多頻度アイテム集合抽出アルゴリズムは、データ中に出現するアイテム集合のうち、支持度(すなわち、あるアイテム集合が出現する同時確率)が最小支持度δ以上となるアイテム集合を高速に抽出するためのデータマイニングアルゴリズムの総称である。多頻度アイテム集合抽出アルゴリズムは、アイテム集合の支持度の逆単調性、すなわち、A及びBをそれぞれアイテム集合としたとき、
ならば、(Aの支持度)≧(Bの支持度)である(つまり、Aが多頻度アイテム集合でなければ、Aを含む集合Bも多頻度アイテム集合ではない)という性質を利用して枝狩りを行うことにより、効率的に多頻度アイテム集合を抽出するアルゴリズムである。
多頻度アイテム集合抽出アルゴリズムの一例として、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の擬似コードを図5に示す。
本実施例においては、多頻度アイテム集合抽出アルゴリズムを用いて相互情報量の計算を高速化するために、確率変数とその値の組をアイテム集合と見なし、相互情報量を表す式(2)の右辺を構成する成分のうち、最小支持度δ未満の同時確率変数とその値との組に関連する成分を計算対象から除外する。
例えば、確率変数Xのとる状態がx
1,x
2,・・・,x
n(すなわち、X={x
1,x
2,・・・,x
n})であり、確率変数Yのとる状態がy
1,y
2,・・・,y
m(すなわち、Y={y
1,y
2,・・・,y
m})であるとする。この場合、互いに異なる確率変数X及びYの相互情報量I(X,Y)は、次の式で表される。
ここで、P(x)もしくはP(y)が最小支持度δ未満であれば、P(x,y)もまた最小支持度δ未満となる。既に述べたとおり、0≦δ≦εであるから、このとき、
が成立する。したがって、P(x)もしくはP(y)が最小支持度δ未満であることを判断することにより、式(4)の右辺において足し合わされる成分(式(5)の左辺)について直接計算しなくとも、当該成分がε未満となることが分かる。
図4に戻り、クエリー管理部112は、ステップ402において、各確率変数につき、とり得る状態のすべてについて周辺確率を計算する。周辺確率が最小支持度δ以上となるような確率変数と状態の集合(<X,x>、<Y,y>等として表される)をサイズ1の多頻度アイテム集合F1に加える。また、そのときの確率変数及び状態を検索条件キーとし、当該検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部114に記憶する。クエリー管理部112においてこの手続を行うgenFreqItemSet1ルーチンの一例を図6に示す。
クエリー管理部112は、すべての確率変数ペアについて相互情報量を計算し、相互情報量がε以上となる確率変数のペアを確率変数ペア配列に追加する。この際、クエリー管理部112は、上述の多頻度アイテム集合抽出アルゴリズムを利用することにより、計算処理を高速化する。
具体的には、クエリー管理部112は、各確率変数ペアを構成する確率変数(ここではX及びYとする)の各々と取る状態との組(例えば、<X,x
1>,<Y,y
1>)のすべてについて、各組の要素(ここでは、<X,x
1>及び<Y,y
1>)の両方が上記多頻度アイテム集合F
1に含まれる(すなわち、このときの周辺確率がいずれも最小支持度δ以上である)かどうかを判定する(ステップ404)。少なくとも一方が集合F
1に含まれない(最小支持度δ未満である)場合(ステップ404の「いいえ」)、式(4)の右辺における
(相互情報量の成分)の計算を行わない。
一方、いずれも含まれる場合(ステップ404の「はい」)、このときの同時確率P(x,y)がδ以上となるかを判定する(ステップ406)。同時確率がδ以上となる場合(ステップ406の「はい」)、このときの相互情報量の成分(式(6))の計算を行う(ステップ408)。さらに、現在の確率変数及び状態の組(例えば、<X,x1>,<Y,y1>)を検索条件キーとし、当該検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部114に記憶する。また、上記現在の確率変数と状態の集合をサイズ2の多頻度アイテム集合F2に加える。
クエリー管理部112は、ステップ404からステップ408をすべての組について繰り返した後(ステップ410)、これまでに計算した相互情報量の成分を足し合わせることにより、現在着目している確率変数ペアについての相互情報量を得る(ステップ412)。構造学習部110は、相互情報量がε以上の場合、その確率変数ペアを確率変数ペア配列に追加する。ステップ404から412をすべての確率変数ペアについて繰り返し、すべての確率変数ペアについて相互情報量を計算する(ステップ414)。
続いて、構造学習部110は、確率変数ペア配列内に格納された確率変数ペアを、相互情報量の大きい順にソートする(ステップ416)。そして、相互情報量の大きい確率変数ペアの順に、当該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままか否かをグラフ構造構築部118に問い合わせる(ステップ418)。グラフ構造構築部118は、エッジを追加すると閉路が発生する場合、木構造とならなくなる旨を構造学習部110に通知する(ステップ418の「いいえ」)。一方、木構造のままである旨がグラフ構造構築部118から通知されると(ステップ418の「はい」)、構造学習部110は、現在着目している確率変数ペア間に無向エッジを追加するようグラフ構造構築部118に指示し、確率変数ペア配列から当該確率変数ペアを削除する(ステップ420)。確率変数ペア配列内のすべての確率変数ペアについてステップ418及び420が繰り返される(ステップ422)。
上述のように、ステップ310の処理においては、相互情報量がε以上である確率変数ペアの各々について、その確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加するようにして、木構造のグラフ構造を生成する。そして、その際、入力データに含まれる各確率変数の周辺確率を計算し、確率変数ペアを構成するいずれかの確率変数がある状態を取る周辺確率がδ未満である場合には、関連する相互情報量の成分の計算を省略することにより、各確率変数ペアの相互情報量を計算している。
多頻度アイテム集合抽出アルゴリズムの一例としてAprioriを採用し、これを組み込んだ場合の本実施例における相互情報量計算のためのcalcMutualInformationルーチンの一例を図7に示す。
再び図3に戻り、構造学習部110は、ステップ312においてエッジ増加処理を実行する。構造学習部110は、相互情報量がε以上であるにもかかわらず、無向エッジを追加すると木構造にならなくなるために木構造準備処理において無向エッジが追加されなかった確率変数ペア(すなわち、確率変数ペア配列に残っている確率変数ペア)について、実際にエッジが必要であるか否かを条件付き相互情報量を用いることにより判定し、必要であると判定される場合には無向エッジを追加する。このときのThickening(エッジ増加)ルーチンの一例を図8に示す。
Thickeningルーチンにおいて実行される主要な処理の詳細を図9に示す。構造学習部110は、相互情報量がε以上であるが無向エッジを有していない各確率変数ペア(すなわち、確率変数ペア配列に残っている確率変数ペア)について、当該ペアを構成する2つの確率変数(例えば、X,Y)ノードの一方のノードを始点とし他方のノードを終点とするパス上に存在しそれら2つの確率変数ノードの何れかに隣接するノードの集合を最終的な条件集合(ConditionSet、C(太字))として設定する(ステップ902)。また、当該最終的な条件集合と同じ確率変数集合を有する候補条件集合C’(太字)を生成する。
構造学習部110は、上記最終的な条件集合(例えば、{C1,C2,C3,C4,・・・})に含まれるある1つの確率変数(すなわち、XとYとの間のパス上に存在し、X又はYに隣接する確率変数のうちの1つ)について、クエリー管理部112に条件付き相互情報量を計算させる。
クエリー管理部112は、まず、最終的な条件集合に含まれる確率変数のうちある1つの確率変数(例えば、C1)のみが条件集合に含まれるとした場合について、条件付き相互情報量I(X,Y|C(太字))を計算する(ステップ904)。これを仮に最小の条件付き相互情報量として記憶し、このときの条件集合{C1}を仮に条件付き相互情報量が最小となる条件集合として記憶する。
クエリー管理部112は、次に、条件集合に上記1つの確率変数(ここでは、C1)と別の1つの確率変数(C2、C3、C4・・・のうちの1つ)とが含まれる場合について、条件付き相互情報量を計算する(ステップ906)。
構造学習部110は、計算された条件付き相互情報量がε未満であるかを判定する(ステップ908)。ε未満の場合(ステップ908の「はい」)、このときの確率変数ペア({X,Y})と条件集合(例えば、{C1,C2})との組を切断集合保持部116内のグローバルな切断集合に格納する。そして当該確率変数ペア間にエッジが不要であると判断する(ステップ910)。ε以上である場合(ステップ908の「いいえ」)、計算された条件付き相互情報量が現在の最小の条件付き相互情報量よりも大きいかを判定する(ステップ912)。大きい場合(ステップ912の「はい」)、構造学習部110は、候補条件集合C’(太字)から上記別の1つの確率変数を削除する(ステップ914)。小さい場合(ステップ912の「いいえ」)、構造学習部110は、このときの条件付き相互情報量を最小の相互情報量として記憶し、また、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する(ステップ916)。
続いて、クエリー管理部112は、候補条件集合に残っている確率変数のうち、上記の既に着目した1つの確率変数(上述の例ではC1)以外の確率変数のうちの1つのみが条件集合に含まれる場合について、条件付き相互情報量を計算する(ステップ918)。計算された条件付き相互情報量が現在の最小の条件付き相互情報量より小さい場合、このときの条件付き相互情報量を最小の相互情報量として記憶する。また、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する(ステップ920)。
クエリー管理部112は、現在着目している1つの確率変数と、候補条件集合に残っているその他の確率変数のうちの1つとが条件集合に含まれる場合について、条件付き相互情報量を計算する(ステップ922)。構造学習部110は、計算された条件付き相互情報量がε未満の場合(ステップ924の「はい」)、このときの確率変数ペアと条件集合との組を切断集合保持部116内のグローバルな切断集合に記憶する。そして、当該確率変数ペア間にエッジが不要であると判断する(ステップ910)。計算された条件付き相互情報量がε以上の場合(ステップ924の「いいえ」)、その値がステップ918で計算された値より大きいかを判定する(ステップ926)。大きい場合(ステップ926の「はい」)、候補条件集合から上記その他の1つの確率変数を削除する(ステップ928)。小さい場合(ステップ926の「いいえ」)、このときの条件付き相互情報量を最小の相互情報量として記憶し、このときの条件集合を条件付き相互情報量が最小となる条件集合として記憶する(ステップ930)。
処理は図10に続く。ステップ918から930を候補条件集合に残っているすべての確率変数について繰り返した後(ステップ1002)、クエリー管理部112は、候補条件集合に残っているすべての確率変数を条件集合として条件付き相互情報量を計算する(ステップ1004)。計算された条件付き相互情報量がε未満であるかを判定する(ステップ1006)。ε未満である場合(ステップ1006の「はい」)、構造学習部110は、このときの確率変数ペアと条件集合との組を切断集合保持部116内のグローバルな切断集合に格納し(ステップ1008)、当該確率変数ペア間にエッジが不要であると判断する。ε以上である場合(ステップ1006の「いいえ」)、構造学習部110は、当該確率変数ペア間にエッジが必要であると判断する(ステップ1010)。
図9及び図10の例においては、条件集合のサイズを1から2へと大きくしながら条件付き相互情報量の計算を行い、それでもなおε未満となる条件付き相互情報量が得られない場合には、候補集合に残っているすべての確率変数を条件集合として条件付き相互情報量を計算し、これがε未満となるかを判断した。しかし、同様の考え方により、条件集合のサイズをさらに3、4、と大きくしていき、最終的な条件集合のサイズ以下のサイズまでについて図9のように処理を行ってもよい。
上述のように、ステップ312においては、相互情報量がε以上でありながらステップ310においてエッジが追加されなかった各確率変数ペアについて、エッジが必要である場合にこれを追加する。その際、該確率変数ペアを構成する2つの確率変数ノードについて、その間のパス上にあり該2つの確率変数ノードのいずれかに隣接するノードの集合に含まれる確率変数の組を条件集合として条件付き相互情報量を計算し、その値がε未満となる組が見つかった場合には、該2つの確率変数間にエッジを追加せず、そうでなければエッジを追加する。より具体的には、該2つの確率変数ノード間のパス上にあり該2つの確率変数ノードのいずれかに隣接するノードの集合を最終的な条件集合として、該2つの確率変数ノード及び条件集合C(太字)についての条件付き相互情報量を、条件集合C(太字)のサイズが1である場合から上記最終的な条件集合のサイズとなる場合までサイズを大きくしながら計算していき、その過程でε未満となる条件付相互情報量が得られた場合には、該2つの確率変数間にエッジを追加せず、そうでなければ必要と判断してエッジを追加している。そして、条件付き相互情報量の計算においては、2つの確率変数の状態とそれぞれの確率変数に対応する状態集合とについての同時確率分布がδ未満となる場合には、関連する成分の計算を省略する。
図7のThickeningルーチンにおいて呼び出され、図9及び図10の処理に用いられるedgeNeeded_Hルーチンの一例を図11に示し、edgeNeeded_Hルーチンにおいて呼び出されるedgeNeededBodyルーチンの一例を図12A及び図12Bに示す。図12Aのルーチンは、条件集合C(太字)のサイズを1から2へと順に大きくして条件付き相互情報量の計算をするように構成されている。図12Bのルーチンは、条件集合のサイズを1から最終的な条件集合のサイズまで順に大きくしながら計算を行うように構成されている。
図9のステップ904、906、918及び922並びに図10のステップ1004においては、様々な確率変数の組を条件集合として条件付き相互情報量を計算する。本実施例においては、その過程において、条件集合のサイズが小さい(サイズが1)場合の条件付き相互情報量を計算し、次いで条件集合のサイズを大きくしながら条件付き相互情報量を計算している。そして、条件付き相互情報量が閾値ε未満となる条件集合が見つかるまで計算を繰り返し、見つかった場合には着目している確率変数ペア間にエッジは不要であると判断し、見つからなかった場合にはエッジが必要であると判断している。
本実施例によれば、図9及び図10において実行される条件付き相互情報量の計算においても、多頻度アイテム集合抽出アルゴリズムを用いて計算を高速化するために、確率変数とその値の組をアイテム集合と見なし、最小支持度δ未満の同時確率変数とその値の組に関連する成分を計算対象から除外する。例えば、X={x
1,x
2,・・・,x
n}及びY={y
1,y
2,・・・,y
m}である場合、互いに異なる確率変数X及びYの条件付き相互情報量I(X,Y|C(太字))は、次の式で表される。
ここでP(x,y,c(太字))が最小支持度δ未満であれば、式(7)の右辺を構成する成分もまたδ未満となる。既に述べたとおり、0≦δ≦εであるから、このとき、当該成分について、
が成立する。したがって、式(7)の右辺の各成分を直接計算することなく、その値がε未満となることが分かる。
このように多頻度アイテム集合抽出アルゴリズムを用いて処理を高速化した本実施例における条件付き相互情報量の計算過程を以下に説明する。この計算においては、与えられた条件集合(式(7)におけるC(太字))に含まれるすべての確率変数がとり得る状態パターンの集合(Q)中のすべての状態パターン(q)について、以下の処理を実行する。
与えられた条件集合に含まれる確率変数の数(|q|)が1の場合の処理のフローを図13に示す。クエリー管理部112は、P(c(太字))(c(太字)は確率変数に対応する状態集合)を計算する。この値がδ未満となるかが判定され(ステップ1102)、δ未満となる場合(ステップ1102の「はい」)、クエリー管理部112は、条件付き相互情報量の成分(式(7)の右辺を構成する成分)の計算を行わない。δ以上となる場合(ステップ1102の「いいえ」)、P(x|c(太字))が0となるかを判断する(ステップ1104)。0となる場合(ステップ1104の「はい」)、条件付き相互情報量の成分の計算を行わない。0でない場合(ステップ1104の「いいえ」)、P(y|c(太字))が0となるかを判断する(ステップ1106)。0となる場合(ステップ1106の「はい」)、条件付き相互情報量の成分の計算を行わない。0でない場合(ステップ1106の「いいえ」)、構造学習部110は、現在の確率変数ペアを構成する2つの確率変数と現在の条件集合とからなる集合から得られる、当該集合よりサイズを1だけ小さくした部分集合のすべてを考慮し(ステップ1108)、そのすべての部分集合が多頻度アイテム集合(F1、F2、・・・)に含まれるかを判断する(ステップ1110)。含まれない場合(ステップ1110の「いいえ」)、クエリー管理部112は、条件付き相互情報量の成分の計算を行わない。含まれる場合(ステップ1110の「はい」)、P(x,y,c(太字))がδ未満となるかを判断する(ステップ1112)。δ未満となる場合(ステップ1112の「はい」)、条件付き相互情報量の成分の計算を行わない。δ以上となる場合(ステップ1112の「いいえ」)、クエリー管理部112は、現在の確率変数及び状態の組について、条件付き相互情報量の成分を計算する(ステップ1114)。
現在の確率変数ペアのうち一方の確率変数(例えば、X)の状態を固定し、他方の確率変数(例えば、Y)のとり得るすべての状態についてステップ1106から1114を繰り返す(ステップ1116)。さらに、固定していた確率変数(X)のとり得るすべての状態についてステップ1104から1116を繰り返した後(ステップ1118)、これまでに計算した成分を足し合わせて条件付き相互情報量を得る(ステップ1120)。
与えられた条件集合に含まれる確率変数の数(|q|)が2以上の場合の処理のフローを図14に示す。まず、条件集合から|q|―1個の変数を含むすべての組み合わせを生成する(ステップ1402)。クエリー管理部112は、すべての組み合わせについて、その組み合わせが検索条件キーとしてクエリー結果キャッシュ部114に格納されているか問い合わせる(ステップ1404)。いずれかの組み合わせが格納されていない場合(ステップ1404の「いいえ」)、以下の処理を行わず終了する(ステップ1406)。
すべての組み合わせがクエリー結果キャッシュ部114に格納されている場合(ステップ1404の「はい」)、P(c(太字))(c(太字)はそれぞれの確率変数に対応する状態値集合)がδ未満となるかを判断する(ステップ1408)。δ未満である場合(ステップ1408の「はい」)、クエリー管理部112に条件付き相互情報量の成分の計算を行わせない。δ以上である場合(ステップ1408の「いいえ」)、このときの確率変数を検索条件キーとし、検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部114に記憶する(ステップ1410)。また、確率変数と状態の集合を、確率変数の数nに等しいサイズの多頻度アイテム集合Fnに追加する。
次に、P(x|c(太字))が0となるかを判断する(ステップ1412)。0である場合(ステップ1412の「はい」)、条件付き相互情報量の成分を計算しない。0でない場合(ステップ1412の「いいえ」)、P(y|c(太字))が0となるかを判断する(ステップ1414)。0である場合(ステップ1414の「はい」)、条件付き相互情報量の成分を計算しない。
0でない場合(ステップ1414の「いいえ」)、現在の確率変数ペアを構成する2つの確率変数と現在の条件集合とからなる集合から得られる、その集合よりサイズを1だけ小さくした部分集合のすべてを考慮し(ステップ1416)、そのすべての部分集合が多頻度アイテム集合(F1、F2、・・・)に含まれるかを判断する(ステップ1418)。含まれない場合(ステップ1418の「いいえ」)、条件付き相互情報量の成分を計算しない。含まれる場合(ステップ1418の「はい」)、P(x,y,c(太字))がδ未満となるかを判断する(ステップ1420)。δ未満の場合(ステップ1420の「はい」)、条件付き相互情報量の成分を計算しない。δ以上の場合(ステップ1420の「いいえ」)、このときの確率変数を検索条件キーとし、検索条件に該当するデータ件数を値としてクエリー結果キャッシュ部114に記憶する(ステップ1422)。また、確率変数と状態の集合を、確率変数の数nに等しいサイズの多頻度アイテム集合Fnに追加する。
次に、現在の確率変数及び状態の組について、条件付き相互情報量の成分を計算する(ステップ1424)。さらに、現在の確率変数ペアのうち一方の確率変数(X)の状態を固定し、他方の確率変数(Y)のとり得るすべての状態についてステップ1414から1424を繰り返す(ステップ1426)。また、固定していた確率変数(X)のとり得るすべての状態についてステップ1412から1426を繰り返す(ステップ1428)。最後に、これまでに計算した条件付き相互情報量の成分をすべて足し合わせて、条件付き相互情報量を得る(ステップ1430)。
図13及び図14の処理に用いられるcalcConditionalMIルーチン及びhaveValidCandidateルーチンの一例をそれぞれ図15及び図16に示す。
図3に戻り、情報処理装置100は、ステップ314においてエッジ削減処理を行う。
詳細な処理を図17に示す。
構造学習部110は、無向エッジを有する各確率変数ペアについて、当該確率変数ペア間に別のパスが存在するかをグラフ構造構築部118に問い合わせる(ステップ1702)。別のパスがない旨の通知をグラフ構造構築部118から受けると(ステップ1702の「いいえ」)、別の確率変数ペアについてのステップ1702の処理に移る。別のパスがある旨の通知をグラフ構造構築部118から受けると(ステップ1702の「はい」)、構造学習部110は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する(ステップ1704)。そして、当該確率変数ペアについて図9及び図10に示した処理を実行し、この確率変数ペア間にエッジが必要であるか否かを判断する(ステップ1706)。エッジが必要である場合(ステップ1706の「はい」)、構造学習部110は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するよう指示する(ステップ1708)。エッジが不要である場合(ステップ1706の「いいえ」)、構造学習部110はそのような指示を行わず、当該無向エッジは削除されたままとなる。エッジ増加処理312を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ1702から1708の処理を繰り返す(ステップ1710)。
続いて、構造学習部110は、現時点で無向エッジを有している各確率変数ペアについて、当該ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有するかについてグラフ構造構築部118に問い合わせる(ステップ1712)。ペアを構成するいずれの確率変数ノードもペアの相手以外に3つ以上の隣接ノードを有しない旨の通知をグラフ構造構築部118から受けると(ステップ1712の「いいえ」)、構造学習部110は別の確率変数ペアについてのステップ1712の処理に移る。ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有する旨の通知をグラフ構造構築部118から受けると(ステップ1712の「はい」)、構造学習部110は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する(ステップ1714)。そして、当該確率変数ペアを構成する2つの確率変数ノード間のパス上にある、それら2つの確率変数ノードのいずれかに隣接するノードと、さらに当該隣接ノードに隣接するノードとを含む集合を、最終的な条件集合に設定する(ステップ1716)。そして、当該確率変数ペア及び最終的な条件集合について、図9のステップ904以降の処理及び図10の処理が実行され、この確率変数ペア間にエッジが必要であるか否かが判断される(ステップ1718)。エッジが必要である場合(ステップ1718の「はい」)、構造学習部110は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するよう指示する(ステップ1720)。エッジが不要である場合(ステップ1718の「いいえ」)、構造学習部110はそのような指示を行わず、当該無向エッジは削除されたままとなる。ステップ1702から1710の処理を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ1712から1720の処理を繰り返す(ステップ1722)。
上述のように、ステップ314においては、ステップ312による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、必要である場合にエッジを追加する。その際、無向エッジを有する確率変数ペアについて、該無向エッジ以外のパスが存在する場合、該無向エッジを一時的に削除し、該確率変数ペアについて、ステップ312と同様にして、必要である場合に上記一時的に削除した無向エッジを追加する。さらに、無向エッジを有する確率変数ペアの少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有する場合、該無向エッジを一時的に削除する。そして、該確率変数ペアを構成する2つの確率変数ノードについて、その間のパス上にあり該2つの確率変数ノードのいずれかに隣接するノード及び該隣接するノードにさらに隣接するノードを含む集合を最終的な条件集合として、ステップ312の場合と同様にして、必要である場合に上記一時的に削除した無向エッジを追加している。
Thinning(エッジ削減)ルーチンの一例を図18に示し、当該ルーチンで呼び出されるedgeNeededルーチンの一例を図19に示す。
図3に戻り、情報処理装置100は、エッジ削減処理314までの作業によりグラフ構造構築部118に生成されているグラフ構造に含まれる無向エッジにつき、その方向付け処理を実行する(ステップ316)。詳細な処理を図20に示す。
XとYとの間及びYとZとの間にそれぞれ直接接続する無向エッジが存在し、且つ、XとZとの間には直接接続の無向エッジが存在しないような3つの確率変数の組(ここでは、X、Y及びZ)に着目する。構造学習部110は、このような確率変数の組について、切断集合保持部116に問い合わせ、1){X,Z}をレコードとする要素(例えば、<{X,Z},C>)がグローバルな切断集合に含まれており且つ当該要素に{X,Z}とともに含まれる条件部分の変数集合(上記例ではC)にYが含まれないか、又は2)({X,Z}をレコードとする要素(例えば、<{X,Z},C>)がグローバルな切断集合に含まれないか、のいずれかの条件が満たされるかを問い合わせる(ステップ2002)。条件が満たされる場合(ステップ2002の「はい」)、構造学習部110は、X及びZがYの親となるよう当該無向エッジに方向付けを行うよう、グラフ構造構築部118に指示する(ステップ2004)。条件が満たされない場合(ステップ2002の「いいえ」)、上記の関係を満たす別の3つの確率変数の組についてステップ2002の処理を行う。
上記の関係を満たす確率変数の組のすべてについてステップ2002及び2004の処理を実行した後(ステップ2006)、構造学習部110は、現在の頂点集合に含まれる3つの確率変数の組(ここでは、X、Y及びZ)に着目する。構造学習部110は、グラフ構造構築部118に問い合わせて、1)XがYの親であること、2)YとZが隣接していること、3)XとZが隣接していないこと、及び4)YとZとの間のエッジが無向エッジであること、のすべての条件が満たされているかについて問い合わせる(ステップ2008)。条件が満たされる場合(ステップ2008の「はい」)、構造学習部110は、YがZの親となるようにエッジの方向付けを行うよう、グラフ構造構築部118に指示する(ステップ2010)。条件が満たされない場合(ステップ2008の「いいえ」)、頂点集合に含まれる別の3つの確率変数の組についてステップ2008の処理を実行する。頂点集合に含まれる3つの確率変数の組のすべてについてステップ2008及び2010の処理を行う(ステップ2012)。
さらに、構造学習部110は、現時点で無向エッジを有する確率変数ペアについて、当該確率変数ペア間に有効なパスが存在するかについてグラフ構造構築部118に問い合わせる(ステップ2014)。存在する場合(ステップ2014の「はい」)、構造学習部110は、XがYの親となるようにエッジの方向付けを行うよう、グラフ構造構築部118に指示する(ステップ2016)。すべての無向エッジについてステップ2014及び2016の処理を行う(ステップ2018)。
エッジの方向付けに用いられるorientEdgeルーチンの一例を図21に示す。
図3のステップ316の実行後にグラフ構造構築部118が保持しているグラフ構造は、本実施例の一連の処理を経て学習されたベイジアンネットワーク構造を表している。情報処理装置100は、これをベイジアンネットワーク構造記述ファイル120として出力し(ステップ318)、処理を完了する(ステップ320)。
ここで説明された情報処理装置100は図1に示す複数の構成要素からなるが、このよ
うな構成は一例にすぎない。すなわち、本発明の学習装置は、制御部102、データ仕様解析部104、構造学習部110、クエリー管理部112、クエリー結果キャッシュ部114、切断集合保持部116及びグラフ構造構築部118のうち複数の機能を単一の構成要素において実行するように構成されてもよい。また、これらの機能すべてを単一の構成要素(例えば、コンピュータのプロセッサ)において実行してもよい。情報処理装置100は、データベース106を含んでもよい。
上述の実施例において、本発明は情報処理装置100として実施されるものとして説明された。しかし、本発明は、コンピュータを図1に示す構成要素として動作させるプログラムとして実現することができる。また、本発明は、図3に記載の各ステップをコンピュータに実行させるプログラムとして実現することも可能である。
本実施例は、制約ベースの学習アルゴリズムに多頻度アイテム集合抽出アルゴリズムを組み合わせた新しいアルゴリズムを用いてベイジアンネットワーク構造学習を行うことを特徴とする。本実施例においては、具体的な説明のため、特定の制約ベース学習アルゴリズム及び多頻度アイテム集合抽出アルゴリズムを利用して本発明の技術的思想を説明した。しかし、本発明の技術的思想は、その他の制約ベース学習アルゴリズムや多頻度アイテム集合抽出アルゴリズムを用いても実現できるものである。
本実施例による情報処理装置及びプログラムは、上記アルゴリズムの双方を単に組み合わせて使用するものではない。すなわち、多頻度アイテム集合抽出アルゴリズムを用いて得られた出力を当該アルゴリズムにより抽出した同時確率分布とし、これをそのまま制約ベースの学習アルゴリズムに入力として渡すだけ、といった単純な組み合わせで動作するものではない。既に述べたとおり、本発明は、制約ベースの学習アルゴリズムの内部に多頻度アイテム集合抽出アルゴリズムを組み込んだ独自のアルゴリズムを用いる。そして、本発明は、構造学習時に処理が必要になる同時確率変数値のパターンに限って多頻度アイテム集合抽出の対象となるように動作する。また、制約ベース学習アルゴリズムを用いる場合、条件付き相互情報量の条件として所与とされる確率変数の数は、アルゴリズムが進行するに従って単調に増加するとは限らない。一方、多頻度アイテム集合抽出アルゴリズムは、扱うアイテム(本発明においては、確率変数とその取る値の組)の数がアルゴリズムの進行に伴って単調に増加する。本発明は、扱う確率変数の数が局所的に単調増加を保つよう制約ベース学習アルゴリズムを変更することにより、多頻度アイテム集合抽出アルゴリズムの効果的な組み込みを実現するものである。
本実施例によるベイジアンネットワーク構造学習の高速化及び処理時間の安定化の効果を確認するために実験を行った。実験の基礎となるベイジアンネットワークとしては、ベイジアンネットワーク学習の例題として頻繁に用いられるベイジアンネットワークリポジトリ(http://compbio.cs.huji.ac.il/Repository)からAlarmと呼ばれる37ノード、46エッジのネットワークを使用した。実験に使用したベイジアンネットワークを図22に示す。当該ネットワークについてそれぞれ5000件、15000件、30000件及び50000件のデータを生成し、これらデータを入力として用いて従来のTPDAアルゴリズム及び本実施例のアルゴリズムに従ってコンピュータを本実施例の情報処理装置として動作させることにより、ベイジアンネットワーク構造学習を行った。
上記のそれぞれのデータ件数について5データセットずつ実行したときの平均値等を表す実験結果を表1から表4に示す。Missing Edge及びExtra Edgeは、それぞれ、正しいベイジアンネットワークと比較した場合の、推定されたベイジアンネットワークにおいて失われたエッジの数及び追加された余分なエッジの数を示す。各表においては、さらに、従来のTPDAアルゴリズムを使用した場合の実行時間を1としたときの各アルゴリズムについての実行時間と標準偏差、及び各アルゴリズムについてのデータ件数5000件の場合の実行時間を1としたときの実行時間を示した。
実験結果から、本実施例により、従来のTPDAアルゴリズムを使用した場合と比較してベイジアンネットワーク構造学習を大幅に高速化できること、実行時間のばらつきを大幅に低減できることが分かる。また、Missing Edge及びExtra Edgeにより示される正しいネットワークからの誤差についても、従来技術と遜色のないレベルに抑えられていることが分かる。このように、本実施例は、従来技術と比較して、推定されるベイジアンネットワークの精度を犠牲にすることなく、構造学習の高速化及び実行時間の安定化を実現できるという優れた効果を奏する。
続いて、切断集合の探索や切断集合の存在判定を行う際、条件変数集合の部分集合サイズが昇順となる順に条件付き相互情報量の計算を行いかつMDFの仮定を最大限早期に用いること、すなわち2つの条件変数を所与とした場合と当該条件変数集合中の単一の各条件変数を所与とした場合の条件付き相互情報量とを比較し、切断集合に含まれない変数を2段階目ですべて探索対象から削除することにより、最大でもわずか3つの段階からなる処理を可能とし、ベイジアンネットワーク構造学習の高速化を可能とする、本発明の別の実施例につき以下に詳細に説明する。
本実施例の情報処理装置100の構成は図1に示されている。また、本実施例における情報処理装置100による基本的な処理は図3に示すとおりである。ベイジアンネットワーク構造学習を実行すべき旨の命令を受信すると、情報処理装置100は処理を開始する(ステップ302)。当該命令は、ベイジアンネットワーク構造学習の基礎となるデータを格納するデータベース106にアクセスするための接続情報及びデータ仕様記述ファイル名を含むように構成される。当該動作パラメータは、上記のほか、ベイジアンネットワーク構造学習において使用される相互情報量及び条件付き相互情報量の閾値ε(一例として、0.01)を含む。さらに、出力となるベイジアンネットワーク構造記述ファイルのファイル名を含んでもよい。
情報処理装置100は初期処理を行う。制御部102は、上記動作パラメータが正常であるか否かをチェックして(ステップ304)、エラーがあれば処理を終了し(ステップ320)、正常であればデータ仕様解析部104にデータ仕様を解析させる(ステップ306)。データ仕様解析部104は、データ仕様記述ファイル108を読み取り、データに含まれる各確率変数の名前、確率変数の数、各確率変数が取り得るすべての状態の名前及び状態数を保持する。次に、データ仕様解析部104は、データベース接続情報を用いてデータベース106に接続し、全データの件数を取得してこれを保持する(ステップ308)。ステップ308の後、制御部102は制御を構造学習部110に移す。
構造学習部110は木構造準備処理を行い、与えられたデータについて木構造を生成する(ステップ310)。ステップ310の処理を図23においてさらに詳細に示す。
クエリー管理部112は、すべての確率変数ペアについて相互情報量を計算する(ステップ2302)。構造学習部110は、相互情報量がε以上の場合、その確率変数ペアを、情報処理装置100内の記憶部(図示せず)等に格納される確率変数ペア配列に追加する。
続いて、構造学習部110は、確率変数ペア配列内に格納された確率変数ペアを、相互情報量の大きい順にソートする(ステップ2304)。そして、相互情報量の大きい確率変数ペアの順に、当該確率変数ペア間にエッジを追加してもグラフ構造が木構造のままであるか否かをグラフ構造構築部118に問い合わせる(ステップ2306)。グラフ構造構築部118は、エッジを追加すると閉路が発生する場合、木構造とならなくなる旨を構造学習部110に通知する(ステップ2306の「いいえ」)。一方、エッジを追加しても木構造が保たれる旨がグラフ構造構築部118から通知されると(ステップ2306の「はい」)、構造学習部110は、現在着目している確率変数ペア間に無向エッジを追加するようグラフ構造構築部118に指示し、確率変数ペア配列から当該確率変数ペアを削除する(ステップ2308)。確率変数ペア配列内のすべての確率変数ペアについてステップ2306及び2308が繰り返される(ステップ2310)。
上述のように、ステップ310の処理においては、相互情報量がε以上である確率変数ペアの各々について、その確率変数ペア間にエッジを追加してもグラフ構造が木構造のままである場合にエッジを追加するようにして、木構造のグラフ構造を生成する。生成されたグラフ構造は、グラフ構造構築部118、情報処理装置100内の記憶部(図示せず)、あるいは構造学習部110等に記憶されてもよい。
再び図3に戻り、構造学習部110は、ステップ312においてエッジ増加処理を実行する。構造学習部110は、相互情報量がε以上であるにもかかわらず、無向エッジを追加すると木構造にならなくなるために木構造準備処理において無向エッジが追加されなかった確率変数ペア(すなわち、確率変数ペア配列に残っている確率変数ペア)について、実際にエッジが必要であるか否かを条件付き相互情報量を用いることにより判定し、必要であると判定される場合には当該確率変数ペア間に無向エッジを追加する。このときのThickening(エッジ増加)ルーチンの一例を図24に示す。
本実施例においてThickeningルーチン内で実行される主要な処理の詳細を図25に示す。構造学習部110は、相互情報量がε以上であるが無向エッジを有していない各確率変数ペア(すなわち、確率変数ペア配列に残っている確率変数ペア)について、当該ペアを構成する2つの確率変数(例えば、X、Y)ノードの一方のノードを始点とし他方のノードを終点とするパス上に存在しそれら2つの確率変数ノードの何れかに隣接するノードの集合を最終的な条件集合(ConditionSet、本実施例においてはZ(太字)と表す)として設定する(ステップ2402)。また、当該最終的な条件集合と同じ確率変数集合を有する候補条件集合Zc(太字)を生成する。
構造学習部110は、上記最終的な条件集合(例えば、{Z1,Z2,Z3,Z4,・・・})に含まれるある1つの確率変数(すなわち、XとYとの間のパス上に存在し、X又はYに隣接する確率変数のうちの1つ)について、クエリー管理部112に条件付き相互情報量を計算させる。
クエリー管理部112は、まず、最終的な条件集合Z(太字)に含まれる確率変数のうちある1つの確率変数(例えば、Z1)のみが条件集合に含まれるとした場合について、条件付き相互情報量I(X,Y|Z(太字))を計算する(ステップ2404)。計算された条件付き相互情報量は、その計算に使用された条件集合(ここではZ1のみを含む)と関連付けて、クエリー管理部112や情報処理装置100の記憶部(図示せず)などに格納されてもよい。
構造学習部110は、ステップ2404において計算された条件付き相互情報量につき、ε未満であるかを判定する(ステップ2406)。ε未満の場合(ステップ2406の「はい」)、このときの確率変数ペア({X,Y})と条件集合(例えば、{Z1})との組を切断集合保持部116内に記憶されるグローバルな切断集合に格納する。そして当該確率変数ペア間にエッジが不要であると判断する(ステップ2408)。
一方、ステップ2404においてある1つの確率変数を条件集合として計算された条件付き相互情報量がε以上である場合(ステップの2406の「いいえ」)、処理はステップ2404に戻り、別の1つの確率変数(例えば、Z2)のみが条件集合に含まれる場合について条件付き相互情報量が計算される。以下同様にしてステップ2404及び2406が繰り返される。すなわち、最終的な条件集合Z(太字)に含まれるある1つの確率変数を所与とした条件付き相互情報量の計算が繰り返される。計算された条件付き相互情報量は、その計算に使用された条件集合と関連付けて、クエリー管理部112や情報処理装置100の記憶部(図示せず)などに格納されてもよい。この過程において条件付き相互情報量がε未満となる確率変数が見つかれば(ステップ2406の「はい」)、処理はステップ2408に移る。
一方、ステップ2404及び2406の実行により計算されたいずれの条件付き相互情報量もε以上であった場合、処理はステップ2410に移る。クエリー管理部112は、最終的な条件集合Z(太字)に含まれる確率変数のうちある2つの確率変数(例えば、Z1及びZ2)が条件集合に含まれるとした場合について、条件付き相互情報量I(X,Y|Z(太字))を計算する(ステップ2410)。計算された条件付き相互情報量は、その計算に使用された条件集合(ここでは{Z1,Z2})と関連付けて、クエリー管理部112や情報処理承知100の記憶部(図示せず)などに格納されてもよい。
構造学習部110は、ステップ2410において計算された条件付き相互情報量につき、ε未満であるかを判定する(ステップ2412)。これがε未満である場合(ステップ2412の「はい」)、このときの確率変数ペア({X,Y})と条件集合(例えば、{Z1,Z2})との組を切断集合保持部116内のグローバルな切断集合に格納する。そして、当該確率変数ペア(ここでは、X及びY)間にエッジが不要であると判断される(ステップ2408)。
一方、ステップ2410において計算された条件付き相互情報量がε以上である場合(ステップの2412の「いいえ」)、構造学習部110は、当該条件付き相互情報量が、ステップ2410の計算において使用された条件集合に含まれる2つの確率変数のうちの一方(例えば、Z1)を条件集合としてステップ2404において既に計算された条件付き相互情報量よりも大きいか否かを判定する(ステップ2414)。大きい場合(ステップ2414の「はい」)、構造学習部110は、記憶部(図示せず)などに格納されている候補条件集合Zc(太字)から当該一方の確率変数(ここでは、Z1)を削除する。構造学習部110は、ステップ2410の計算において使用された条件集合に含まれる2つの確率変数のうちの他方(例えば、Z2)についても同様の処理を行う(ステップ2418及び2420)。
その後、構造学習部110は、候補条件集合Zc(太字)に残るすべての確率変数につき、ステップ2410〜2420を繰り返す(ステップ2422)。例えば、当初の候補条件集合Zc(太字)にZ1〜Z6の6つの確率変数が含まれていた場合において、ステップ2414〜2420の処理を通じて候補条件集合Zc(太字)からZ1及びZ2が削除された場合には、残されたZ3〜Z6についてステップ2410〜2420の処理が再び実行される。
続いて、クエリー管理部112は、上述の処理の結果として候補条件集合Zc(太字)に残ったすべての確率変数を条件集合として条件付き相互情報量を計算する(ステップ2424)。構造学習部110は、ステップ2424において計算された条件付き相互情報量がε未満であるかを判定する(ステップ2426)。これがε未満である場合(ステップ2426の「はい」)、このときの確率変数ペア({X,Y})と候補条件集合との組を切断集合保持部116内のグローバルな切断集合に格納する。そして、当該確率変数ペア(ここでは、X及びY)間にエッジが不要であると判断される(ステップ2408)。一方、ステップ2424において計算された条件付き相互情報量がε未満でない場合(ステップ2426の「いいえ」)、構造学習部110は、当該確率変数ペア間にエッジが必要であると判断し、グラフ構造構築部118にその旨の指示を行う(ステップ2428)。このようにして、エッジが必要であると判断された場合に確率変数ペア間にエッジが追加される。生成されたグラフ構造は、グラフ構造構築部118、情報処理装置100内の記憶部(図示せず)、あるいは構造学習部110等に記憶されてもよい。
図25に示すように、本実施例は、切断集合の探索や切断集合の存在判定に際して、最大でも、条件変数集合のサイズが1である場合の処理(第1段階、ステップ2404、2406及び2408)、条件変数集合のサイズが2である場合の処理(第2段階、ステップ2410〜2422及び2408)、及び第1段階及び第2段階の後に候補条件集合に残されたすべての確率変数に対する処理(第3段階、ステップ2424〜2428及び2408)の3つの段階のみを必要とする。これに対して、従来のTPDAは、与えられた条件変数集合の部分集合サイズが大きい方から(すなわち、降順に)切断集合を探索し、結果として最大でN−2(Nは確率変数の数)段階の探索を必要とする。したがって、多数の確率変数が存在する状況下でのベイジアンネットワーク構造学習に際して、本実施例は従来のTPDAと比較して、処理を格段に高速化することができる。
図24のThickeningルーチンにおいて呼び出され、図25の処理に用いられるedgeNeeded_Hルーチンの一例を図26に示し、edgeNeeded_Hルーチンにおいて呼び出されるSearchCutSetルーチンの一例を図27に示す。図27のルーチンの詳細については既に図25に関連して説明した。
図3に戻り、情報処理装置100は、ステップ314においてエッジ削減処理を行う。詳細な処理を図28に示す。
構造学習部110は、無向エッジを有する各確率変数ペアについて、当該確率変数ペア間に別のパスが存在するかをグラフ構造構築部118に問い合わせる(ステップ2702)。別のパスがない旨の通知をグラフ構造構築部118から受けると(ステップ2702の「いいえ」)、別の確率変数ペアについてのステップ2702の処理に移る。別のパスがある旨の通知をグラフ構造構築部118から受けると(ステップ2702の「はい」)、構造学習部110は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部118に指示する(ステップ2704)。そして、当該確率変数ペアについて図25に示した処理を実行し、この確率変数ペア間にエッジが必要であるか否かを判断する(ステップ2706)。既に述べたように、本実施例においてステップ2706の処理は最大でもわずか3段階で実行することができるため、ここにおいても、従来のTPDAと比較して処理の高速化が可能である。エッジが必要である場合(ステップ2706の「はい」)、構造学習部110は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するようグラフ構造構築部118に指示する(ステップ2708)。エッジが不要である場合(ステップ2706の「いいえ」)、構造学習部110はそのような指示を行わず、当該無向エッジは削除されたままとなる。エッジ増加処理312を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ2702から2708の処理を繰り返す(ステップ2710)。
続いて、構造学習部110は、現時点で無向エッジを有している各確率変数ペアについて、当該ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有するかについてグラフ構造構築部118に問い合わせる(ステップ2712)。ペアを構成するいずれの確率変数ノードもペアの相手以外に3つ以上の隣接ノードを有しない旨の通知をグラフ構造構築部118から受けると(ステップ2712の「いいえ」)、構造学習部110は別の確率変数ペアについてのステップ2712の処理に移る。ペアを構成する少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有する旨の通知をグラフ構造構築部118から受けると(ステップ2712の「はい」)、構造学習部110は、当該確率変数ペア間の無向エッジを一時的に削除するようグラフ構造構築部に指示する(ステップ2714)。そして、当該確率変数ペアを構成する2つの確率変数ノード間のパス上にある、それら2つの確率変数ノードのいずれかに隣接するノードと、さらに当該隣接ノードに隣接するノードとを含む集合を、最終的な条件集合に設定する(ステップ2716)。そして、当該確率変数ペア及び最終的な条件集合について、図25のステップ2404以降の処理が実行され、この確率変数ペア間にエッジが必要であるか否かが判断される(ステップ2718)。既に述べたように、本実施例によれば、この処理においても高速化が期待できる。エッジが必要である場合(ステップ2718の「はい」)、構造学習部110は、一時的に削除した無向エッジを当該確率変数ペア間に再び追加するようグラフ構造構築部118に指示する(ステップ2720)。エッジが不要である場合(ステップ2718の「いいえ」)、構造学習部110はそのような指示を行わず、当該無向エッジは削除されたままとなる。ステップ2702から2710の処理を終えた時点で無向エッジを有しているすべての確率変数ペアについてステップ2712から2720の処理を繰り返す(ステップ2722)。
上述のように、ステップ314においては、ステップ312による処理後にエッジを有する各確率変数ペアにつき、エッジが必要であるか否かを判断し、必要である場合にエッジを追加する。その際、無向エッジを有する確率変数ペアについて、該無向エッジ以外のパスが存在する場合、該無向エッジを一時的に削除し、該確率変数ペアについて、ステップ312と同様にして、必要であると判断される場合に上記一時的に削除した無向エッジを再び追加する。さらに、無向エッジを有する確率変数ペアの少なくとも一方の確率変数ノードが他方のノード以外に3つ以上の隣接ノードを有する場合、該無向エッジを一時的に削除する。そして、該確率変数ペアを構成する2つの確率変数ノードについて、その間のパス上にあり該2つの確率変数ノードのいずれかに隣接するノード及び該隣接するノードにさらに隣接するノードを含む集合を最終的な条件集合として、ステップ312の場合と同様にして、必要であると判断される場合に上記一時的に削除した無向エッジを再び追加している。
本実施例におけるThinning(エッジ削減)ルーチンの一例を図29に示す。また、本実施例において当該ルーチンで呼び出されるedgeNeededルーチンの一例を図30に示す。
図3に戻り、情報処理装置100は、エッジ削減処理314までの作業によりグラフ構造構築部118において生成されたグラフ構造に含まれる無向エッジにつき、その方向付け処理を実行する(ステップ316)。詳細な処理については図20に関連して既に説明されており、エッジの方向付けに用いられるルーチンの一例を図31に示す。
図3のステップ316の実行後にグラフ構造構築部118が保持している(又は、情報処理装置100内の記憶部(図示せず)等に格納されている)グラフ構造は、本実施例の一連の処理を経て学習されたベイジアンネットワーク構造を表している。情報処理装置100は、これをベイジアンネットワーク構造記述ファイル120として出力し(ステップ318)、処理を完了する(ステップ320)。
本実施例に関して説明された情報処理装置100は図1に示す複数の構成要素からなるが、このような構成は一例にすぎない。すなわち、本実施例の情報処理装置は、制御部102、データ仕様解析部104、構造学習部110、クエリー管理部112、クエリー結果キャッシュ部114、切断集合保持部116及びグラフ構造構築部118のうち複数の機能を単一の構成要素において実行するように構成されてもよい。また、これらの機能すべてを単一の構成要素(例えば、コンピュータのプロセッサ)において実行してもよい。情報処理装置100は、データベース106を含んでもよい。
本実施例による計算量の低減及び処理の高速化について考察する。まず、本実施例の手法による、切断集合探索テストにおける最大計算量につき検討する。切断集合探索テストの第1段階(図25におけるステップ2404及び2406に相当)では、条件変数集合サイズは1であるため、CIテスト(条件付き相互情報量がε未満となるか否かの判定)において扱われる変数の数はX及びYを含めて3である。したがって、第1段階におけるCIテストのパターン数は、rを変数の状態数の最大値とするとr3である。同様に、第2段階(図25におけるステップ2410〜2422に相当)においては、パターン数はr4となる。第3段階(図25におけるステップ2424〜2428に相当)においては、計算量が最大となる場合、CIテストですべての変数を扱うことになるため、パターン数はrNである。各段階のCIテストの回数とパターン数を乗じてその和を取ることにより、本実施例において、最大計算量はO(rN+N2r4)となる。
次に、従来のTPDAによる、切断集合探索テストにおける最大計算量につき検討する。Z(太字)を所与としたXとYの切断集合探索テストを行うこと、すなわち、Z(太字)’⊆Z(太字)を列挙して、それぞれについてCIテストを行うことを考える。変数が取りうる状態の最大値をrとすると、条件変数集合サイズ|Z(太字)’|は、最大でN−2であり、CIテストのパターン数はr
Nである.TPDAでは、条件変数集合のサイズは第1段階目の|Z(太字)’|=N−2から1ずつ減少し、最後のN−2段階目において、条件変数集合サイズは|Z(太字)’|=1となる。したがって、TPDAのCIテストのパターン数は、切断集合探索テストの第1、2、・・・N−2段階において、それぞれ、r
N、r
N−1、・・・r
3となる。よって、TPDAによる最大計算量は、各段階のCIテスト数にパターン数を乗じてその和を取ることにより、
となる。
本実施例による最大計算量O(r
N+N
2r
4)とTPDAによる上記式(9)で表される最大計算量とを比較すると、その差分はそれぞれの計算量から両手法に共通な項であるr
Nを除くことにより分析できる。すなわち、当該共通項を除くと、TPDAにおいては
となり、本実施例ではO(N
2r
4)となる。このように、TPDAにおいて計算量の差分O(r
N−1)はNについて指数オーダーであるのに対し、本実施例ではN及びrのいずれについても多項式オーダーである。したがって、本実施例によれば、TPDAの場合と比較して切断集合探索テストにおける最大計算量を低減できることが確認された。
一方、本実施例において、CIテストごとの最小計算量はO(r3)である。なぜなら、本実施例によれば、第1段階の最初のCIテストにおいて切断集合が発見されれば、第2段階及び第3段階の処理は不要であり、当該CIテストでr3のパターンを計算すれば良いからである。
これに対し、TPDAでは、変数XとYの切断集合を条件変数集合Z(太字)から探索する際、条件変数集合の部分集合Z(太字)’⊆Z(太字)を部分集合のサイズの降順に列挙して、着目する部分集合が切断集合であるか否かをCIテストにより調べる。CIテストの計算量は所与とする変数集合サイズの指数オーダーであるから、変数の取る状態数の最大値をr、所与とする変数集合サイズ|Z(太字)’|を最大の場合のN−2とすると、当該計算量はO(rN)となる。したがって、TPDAによれば、切断集合探索テストごとの最小計算量はO(rN)である。したがって、本実施例によれば、切断集合探索テストにおける最小計算量に関しても、確率変数の数が増大するほど、TPDAと比較して計算量を低減できることが確認された。
以上のように、本実施例による手法は、TPDAと比較して最大計算量及び最小計算量の双方を低減できるという顕著な効果を奏することが理解される。
本実施例において、本発明は情報処理装置100として実施されるものとして説明された。しかし、コンピュータを図1に示す構成要素の一部または全部として動作させるプログラムとして本発明を実現することができることは当業者にとって明らかであろう。また、図3に記載のステップの一部又は全部をコンピュータに実行させるプログラムとして本発明を実現し得ることも当業者にとって明らかであろう。
本実施例は、図25及び図27に関連して説明されたように、切断集合の探索や切断集合の存在の判定に際して、条件変数集合のサイズが1である場合の処理、条件変数集合のサイズが2である場合の処理、及びこれらの処理の後に候補条件集合に残されたすべての確率変数に対する処理、という最大でも3つの段階のみからなる手続きを実行することにより、多数の確率変数が存在する状況下でのベイジアンネットワーク構造学習における切断集合の探索を高速化することができる。この結果、従来のTPDAと比較してさらに高速なベイジアンネットワーク構造学習が可能となる。
本実施例によるベイジアンネットワーク構造学習の高速化及び処理時間の安定化の効果を確認するために実験を行った。実験に際して、アルゴリズムをJava(登録商標)実験に用いた環境は、Intel Core 2プロセッサ2.67GHzの4GB RAM上で動作するWindows(登録商標) Vista Business SP2であり、Java(登録商標)仮想マシンには最大512MBのメモリを割り当てた。
実施例1と同様、図22に示すベイジアンネットワークを実験の基礎として使用した。当該ネットワークについてそれぞれ5000件、15000件、30000件及び50000件のデータを生成し、これらデータを入力として用いて従来のTPDAアルゴリズム及び本実施例のアルゴリズムに従ってコンピュータを本実施例の情報処理装置として動作させることにより、ベイジアンネットワーク構造学習を行った。
上記のそれぞれのデータ件数について10データセットずつ実行したときの平均値等を表す実験結果を表1から表4に示す。従来のTPDAを使用した場合の結果を「TPDA」の行に示し、本実施例による結果を「TS(Three−Staged)−TPDA」の行に示した。Missing Edge及びExtra Edgeは、それぞれ、正しいベイジアンネットワークと比較した場合の、推定されたベイジアンネットワークにおいて失われたエッジの数及び追加された余分なエッジの数を示す。
実験結果から、本実施例により、従来のTPDAアルゴリズムを使用した場合と比較してベイジアンネットワーク構造学習を極めて大幅に高速化できること、実行時間のばらつきを極めて大幅に低減できることが分かる。また、Missing Edge及びExtra Edgeにより示される正しいネットワークからの誤差についても、従来技術と遜色のないレベルに抑えられていることが分かる。このように、本実施例は、従来技術と比較して、推定されるベイジアンネットワークの精度を犠牲にすることなく、構造学習の大幅な高速化及び実行時間の安定化を実現できるという優れた効果を奏する。