(57)【特許請求の範囲】
【請求項１】
コンピュータに、
複数のグラフから、所定数のノードを含む複数の部分グラフを抽出し、
前記複数の部分グラフそれぞれを対象とし、対象の部分グラフに含まれる複数のノードに順番を設定し、該複数のノード間の接続関係、および該複数のノードのいずれかと接続関係を有する隣接ノードと該複数のノードとの接続関係を表す接続関係行列を生成し、
前記複数の部分グラフごとの複数の接続関係行列に基づいて、前記複数の部分グラフそれぞれのうちでの順番が同じノードの接続関係の特徴を示す照合行列を生成し、
前記複数の部分グラフそれぞれを操作対象とし、操作対象の部分グラフに含まれる複数のノード間の接続関係を示す部分行列と前記照合行列との類似度が高くなるように、該複数のノード間の順番の入れ替え、または該複数のノードの隣接ノードと該複数のノードとの入れ替え操作を行う、
処理を実行させるグラフ処理プログラム。
【請求項２】
前記入れ替え操作が行われると、前記入れ替え操作後の前記複数の部分グラフに対して、前記複数の接続関係行列の生成、前記照合行列の生成、および前記入れ替え操作を再度実行する、
請求項１記載のグラフ処理プログラム。
【請求項３】
前記入れ替え操作において類似度が高くなるような入れ替えが存在しなくなったとき、最後に生成した前記照合行列を出力する、
請求項２記載のグラフ処理プログラム。
【請求項４】
前記照合行列の出力後に新たなグラフが入力されると、前記新たなグラフから新たな部分グラフを抽出し、前記新たな部分グラフに対して、出力された前記照合行列を用いて、前記入れ替え操作を実行する、
請求項３記載のグラフ処理プログラム。
【請求項５】
前記照合行列の生成では、前記複数の部分グラフそれぞれのうちでの順番が同じノードの平均的な接続関係を、該順番のノードの接続関係の特徴とする、
請求項１乃至４のいずれかに記載のグラフ処理プログラム。
【請求項６】
コンピュータに、
複数のグラフそれぞれについて、部分グラフの構成ノードとして所定数のノードを順番に選択する場合の各ノードの選択確率を示す確率行列を生成し、
前記複数のグラフそれぞれを第１期待値行列生成対象とし、前記第１期待値行列生成対象のグラフの確率行列に示された確率で該グラフから前記所定数のノードが順番に選択されるときに、該グラフ内の各ノードの、選択されたノードとの接続関係の有無の期待値を示す第１期待値行列を生成し、
前記複数のグラフそれぞれを第２期待値行列生成対象とし、前記第２期待値行列生成対象のグラフの確率行列に示された確率で、該グラフから部分グラフの構成ノードとして前記所定数のノードが順番に選択されるときに、選択されたノード間の接続関係の有無の期待値を示す第２期待値行列を生成し、
前記複数のグラフそれぞれの複数の第２期待値行列に基づいて、前記複数のグラフそれぞれから抽出される複数の部分グラフにおける、選択される順番が同じノード間の接続関係の特徴を示す照合行列を生成し、
前記複数のグラフそれぞれを補正対象とし、補正対象のグラフの前記第１期待値行列と前記照合行列との類似度が高くなるように、該フラグの確率行列に示される選択確率を補正する、
処理を実行させるグラフ処理プログラム。
【請求項７】
コンピュータが、
複数のグラフから、所定数のノードを含む複数の部分グラフを抽出し、
前記複数の部分グラフそれぞれを対象とし、対象の部分グラフに含まれる複数のノードに順番を設定し、該複数のノード間の接続関係、および該複数のノードのいずれかと接続関係を有する隣接ノードと該複数のノードとの接続関係を表す接続関係行列を生成し、
前記複数の部分グラフごとの複数の接続関係行列に基づいて、前記複数の部分グラフそれぞれのうちでの順番が同じノードの接続関係の特徴を示す照合行列を生成し、
前記複数の部分グラフそれぞれを操作対象とし、操作対象の部分グラフに含まれる複数のノード間の接続関係を示す部分行列と前記照合行列との類似度が高くなるように、該複数のノード間の順番の入れ替え、または該複数のノードの隣接ノードと該複数のノードとの入れ替え操作を行う、
グラフ処理方法。
【請求項８】
複数のグラフを記憶する記憶部と、
前記複数のグラフから、所定数のノードを含む複数の部分グラフを抽出し、前記複数の部分グラフそれぞれを対象とし、対象の部分グラフに含まれる複数のノードに順番を設定し、該複数のノード間の接続関係、および該複数のノードのいずれかと接続関係を有する隣接ノードと該複数のノードとの接続関係を表す接続関係行列を生成し、前記複数の部分グラフごとの複数の接続関係行列に基づいて、前記複数の部分グラフそれぞれのうちでの順番が同じノードの接続関係の特徴を示す照合行列を生成し、前記複数の部分グラフそれぞれを操作対象とし、操作対象の部分グラフに含まれる複数のノード間の接続関係を示す部分行列と前記照合行列との類似度が高くなるように、該複数のノード間の順番の入れ替え、または該複数のノードの隣接ノードと該複数のノードとの入れ替え操作を行う演算部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、グラフ処理プログラム、グラフ処理方法、および情報処理装置に関する。
【背景技術】
【０００２】
コンピュータシステムでは、様々なデータ処理の結果が、ログとして記録される。ログの中には、２つの要素間の関係を示すログがある。例えばサーバ間の通信ログには、通信元と通信先との間で情報が受け渡されたことが示されている。また銀行の口座間の取引ログには、２つの口座間で取引が行われたことが示されている。２つの要素間の関係を示すログに基づいて、所定の期間内におけるシステム内での複数の要素が関連する処理を、グラフで表すことができる。グラフでは、例えばシステム内の要素がノードで表され、要素間の関連性が、要素に対応するノード間を接続するエッジで表される。
【０００３】
通信における攻撃や、取引における犯罪などの不正行為があったとき、不正行為の存在がグラフ中に、特徴的な部分グラフとして現れることがある。そこで、不正行為があった日のログに基づくグラフに高頻度で現れる部分グラフの探索が行われる。以下、複数のグラフに高頻度で現れる部分グラフを、多頻度グラフと呼ぶ。不正行為があった日の多頻度グラフを特定しておくことで、以後の、ログを用いて生成したグラフ内に同じ多頻度グラフが存在するとき、不正行為が行われた可能性が高いと判断できる。
【０００４】
多数のグラフからの多頻度グラフの探索技術としては、例えば列挙した小規模な多頻度グラフに、出現頻度が閾値以下になるまでノードを追加していき、より大きな多頻度グラフを探索する技術がある。また多頻度グラフを探索する方法として、隣接するノードのペアのうち頻度の高いペアを１ノードに統合する処理を繰り返し、多頻度グラフを抽出する方法もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−６３２７７号公報
【特許文献２】特開２０１４−２２５１１７号公報
【非特許文献１】Felipe Llinares-Lopez, Mahito Sugiyama, Laetitia Papaxanthos, Karsten M. Borgwardt, "Fast and Memory-Efficient Significant Pattern Mining via Permutation Testing" KDD '15 Proceedings of the 21th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, August 2015, Pages 725-734.
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかし、従来の多頻度グラフの探索は、ＮＰ（Non-deterministic Polynomial time）完全であり、ノード数の増加に伴い組み合わせが爆発する。例えば、小規模な多頻度グラフにノードを追加していく手法では、ノードを追加するごとに、他の生成可能な部分グラフすべてと同型かどうかを判定することになる。このようなグラフの同型判定をする問題はＮＰ完全であり、ノード数の増加に伴い組み合わせが爆発する。そのため、現実的には、数１００ノード程度のグラフにしか適用できない。
【０００７】
ここで、元のグラフからサンプリングにより、例えば数１００ノードの探索対象部分グラフを生成し、その探索対象部分グラフ内で多頻度グラフを探索する方法が考えられる。探索対象部分グラフ内で多頻度グラフであれば、その多頻度グラフは、探索対象部分グラフを拡大した場合にも多頻度グラフと判定される。そこで、小さい探索対象部分グラフで探索した多頻度グラフを、サイズを拡大した探索対象部分グラフにおける多頻度グラフの候補として利用することで、サイズを拡大しながら多頻度グラフを探索することができる。しかしながら、この場合においてもやはりＮＰ完全性による組み合せ爆発が発生し、探索対象部分グラフのサイズを数１００ノード以上まで拡大するのは困難である。
【０００８】
１つの側面では、本件は、多頻度グラフを効率的に抽出することを目的とする。
【課題を解決するための手段】
【０００９】
１つの案では、コンピュータに、以下の処理を実行させるグラフ処理プログラムが提供される。
コンピュータは、該グラフ処理プログラムに基づいて、まず、複数のグラフから、所定数のノードを含む複数の部分グラフを抽出する。次にコンピュータは、複数の部分グラフそれぞれを対象とし、対象の部分グラフに含まれる複数のノードに順番を設定し、該複数のノード間の接続関係、および該複数のノードのいずれかと接続関係を有する隣接ノードと該複数のノードとの接続関係を表す接続関係行列を生成する。さらにコンピュータは、複数の部分グラフごとの複数の接続関係行列に基づいて、複数の部分グラフそれぞれのうちでの順番が同じノードの接続関係の特徴を示す照合行列を生成する。そしてコンピュータは、複数の部分グラフそれぞれを操作対象とし、操作対象の部分グラフに含まれる複数のノード間の接続関係を示す部分行列と照合行列との類似度が高くなるように、該複数のノード間の順番の入れ替え、または該複数のノードの隣接ノードと該複数のノードとの入れ替え操作を行う。
【発明の効果】
【００１０】
１態様によれば、多頻度グラフを効率的に抽出することができる。
【図面の簡単な説明】
【００１１】
【図１】第１の実施の形態に係る情報処理装置の構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】第２の実施の形態に用いる監視装置のハードウェアの一構成例を示す図である。
【図４】不正の発生の有無によるグラフの違いを示す図である。
【図５】照合パタンの抽出例を示す図である。
【図６】監視装置の機能を示すブロック図である。
【図７】ログの一例を示す図である。
【図８】グラフ情報の一例を示す図である。
【図９】照合パタンの一例を示す図である。
【図１０】監視装置における処理の手順を示すフローチャートである。
【図１１】部分グラフのノード入れ替えと照合パタンの接続関係の存在確率再計算との一例を示す図である。
【図１２】行列を用いた部分グラフ抽出例を示す図である。
【図１３】照合パタンの生成例を示す図である。
【図１４】類似度の計算例を示す図である。
【図１５】ベクトル間の類似度の計算方法を示す図である。
【図１６】ノードの入れ替え例を示す図である。
【図１７】照合パタン生成処理の手順の一例を示すフローチャートである。
【図１８】ノードの順番を固定しても多頻度グラフの探索が容易な場合の例を示す図である。
【図１９】ノードの順番を固定すると多頻度グラフの探索が困難になる場合の例を示す図である。
【図２０】ノード対応確率表と接続関係の期待値との一例を示す図である。
【図２１】部分グラフの接続関係期待値の算出例を示す図である。
【図２２】照合パタンの生成例を示す図である。
【図２３】類似度の計算例を示す図である。
【図２４】ノード対応確率の補正例を示す図である。
【図２５】第３の実施の形態における照合パタン生成処理の手順の一例を示すフローチャートである。
【図２６】既存の照合パタンを流用する例を示す図である。
【発明を実施するための形態】
【００１２】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず、第１の実施の形態について説明する。
【００１３】
図１は、第１の実施の形態に係る情報処理装置の構成例を示す図である。第１の実施の形態に係る情報処理装置１０は、記憶部１１と演算部１２とを有する。
記憶部１１は、複数のグラフ１ａ，１ｂ，・・・を記憶する。グラフ１ａ，１ｂ，・・・は、例えば他のコンピュータシステムにおける情報処理のログに基づいて、情報処理の実施状況をグラフ化したものである。例えばグラフ１ａ，１ｂ，・・・によって、サーバ間の通信発生状況や、銀行の口座間の送金発生状況などが表されている。
【００１４】
演算部１２は、グラフ１ａ，１ｂ，・・・を処理し、グラフ１ａ，１ｂ，・・・に含まれる多頻度グラフ６を探索する。具体的には、演算部１２は、以下の処理を行う。
演算部１２は、まず、複数のグラフ１ａ，１ｂ，・・・から、所定数のノードを含む複数の部分グラフ２ａ，２ｂ，・・・を抽出する。例えば演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれから、１または複数の部分グラフ２ａ，２ｂ，・・・を、サンプリングによって抽出する。
【００１５】
次に演算部１２は、複数の部分グラフ２ａ，２ｂ，・・・それぞれを、接続関係行列の対象とし、対象の部分グラフに含まれる複数のノードに順番を設定する。さらに演算部１２は、対象の部分グラフ内の複数のノード間の接続関係、および複数のノードのいずれかと接続関係を有する隣接ノードと該複数のノードとの接続関係を表す接続関係行列３ａ，３ｂ，・・・を生成する。
【００１６】
接続関係行列３ａ，３ｂ，・・・の各行には、部分グラフ２ａ，２ｂ，・・・の抽出元のグラフ１ａ，１ｂ，・・・のノードが対応付けられている。接続関係行列３ａ，３ｂ，・・・の各列には、部分グラフ２ａ，２ｂ，・・・内での順番が設定されている。図１の例では、「Ｑ１」が１番目、「Ｑ２」が２番目、「Ｑ３」が３番目である。接続関係行列３ａ，３ｂ，・・・内の行と列との交差する位置に、列に対応するノードが、行に対応する順番の部分グラフ内のノードと接続関係を有するか否かを示す値が設定されている。例えば接続関係があれば「１」が設定され、接続関係がなければ「０」が設定される。
【００１７】
接続関係行列３ａ，３ｂ，・・・の生成後、演算部１２は、複数の部分グラフ２ａ，２ｂ，・・・ごとの複数の接続関係行列に基づいて、複数の部分グラフ２ａ，２ｂ，・・・それぞれのうちでの順番が同じノードの接続関係の特徴を示す照合行列４ａを生成する。例えば演算部１２は、複数の部分グラフ２ａ，２ｂ，・・・それぞれのうちでの順番が同じノードの平均的な接続関係を、その順番のノードの接続関係の特徴とする。例えば各接続関係行列３ａ，３ｂ，・・・それぞれにおいて、部分グラフ２ａ，２ｂ，・・・の１番目（Ｑ１）のノードの行に設定されている成分ごとの平均値が、照合行列４ａの１番目（Ｑ１）の行の成分として設定される。
【００１８】
そして演算部１２は、複数の部分グラフ２ａ，２ｂ，・・・それぞれを操作対象とし、操作対象の部分グラフ２ａ，２ｂ，・・・に含まれる複数のノード間の接続関係を示す部分行列と照合行列４ａとの類似度が高くなるように、ノードの入れ替え操作を行う。ノードの入れ替えは、例えば、部分グラフ２ａ，２ｂ，・・・に含まれる複数のノード間の順番の入れ替え、または該複数のノードの隣接ノードと該複数のノードとの入れ替えである。
【００１９】
入れ替えを行う場合、例えば演算部１２は、接続関係行列３ａ，３ｂ，・・・の各行の複数の成分と、照合行列４ａの各行の成分との類似度を計算する。類似度としては、例えばベクトル間のコサイン類似度を用いることができる。そして演算部１２は、例えば部分グラフ２ａ内の１番目（Ｐ１）のノードに対応する接続関係行列３ａの行と、照合行列４ａ内の１番目（Ｑ１）の行との類似度よりも、照合行列４ａ内の１番目（Ｑ１）の行との類似度が高い他の行の有無を判断する。類似度が高い行があれば、その行に対応するノードと、部分グラフ２ａ内の１番目（Ｑ１）のノードとを入れ替える。この場合、入れ替えによって新たに部分グラフ２ａに含まれることとなったノードの順番は１番目となる。図１の例では、部分グラフ２ａ内の１番目のノード「Ｐ１」が、グラフ１ａ内のノード「Ｐ４」と入れ替えられている。
【００２０】
演算部１２は、いずれかの部分グラフ２ａ，２ｂ，・・・においてノードの入れ替え操作が行われると、接続関係行列の生成、照合行列の生成、および入れ替え操作を再度実行する。すると、再度の接続関係行列の生成により、新たな接続関係行列５ａ，５ｂ，・・・が得られる。再度の照合行列の生成により、接続関係行列５ａ，５ｂ，・・・に基づいて、新たな照合行列４ｂが得られる。このような処理の再実行は、例えば入れ替え操作において類似度が高くなるような入れ替えが存在しなくなるまで繰り返される。
【００２１】
演算部１２は、入れ替え操作において類似度が高くなるような入れ替えが存在しなくなったとき、最後に生成した照合行列４ｂを出力する。出力された照合行列４ｂは、多頻度グラフ６の接続関係を表している。すなわち、入れ替え操作において類似度が高くなるような入れ替えが存在しなくなったとき、その時点での部分グラフ２ａ，２ｂ，・・・は、いずれもノード間の接続関係が照合行列４ｂと類似している。すると、照合行列４ｂと類似する接続関係を有する部分グラフが多数存在することとなり、照合行列４ｂで接続関係が表されたグラフは、多頻度グラフ６である。
【００２２】
このように情報処理装置１０によれば、部分グラフ２ａ，２ｂ，・・・のノードに順番を設定し、同じ順番のノードの接続関係に基づいて、照合行列４ａを生成するため、ノード間の順番の入れ替えを考慮せずに照合行列４ａを生成できる。これにより、部分グラフ２ａ，２ｂ，・・・の平均的な接続関係を効率的に求めることができる。しかも、部分グラフ２ａ，２ｂ，・・・内のノードが、部分グラフ２ａ，２ｂ，・・・内の他のノード、または部分グラフ２ａ，２ｂ，・・・の隣接ノードと入れ替えられる。これにより、最初の部分グラフ２ａ，２ｂ，・・・の抽出時には、多頻度グラフ６と異なる接続関係を有していても、複数の部分グラフ２ａ，２ｂ，・・・の接続関係を徐々に多頻度グラフ６に近づけていくことができる。その結果、多頻度グラフ６を効率的に探索可能となる。
【００２３】
なお、このような多頻度グラフ６の探索は、例えば新たなグラフが記憶部１１に追加格納されるごとに実行される。その場合、演算部１２は、照合行列４ｂの出力後に新たなグラフが入力されると、新たなグラフから新たな部分グラフを抽出し、新たな部分グラフに対して、出力時の照合行列４ｂを用いて、入れ替え操作を実行する。これにより、新たな部分グラフを多頻度グラフ６に近づけるためのノードの入れ替えを容易に行うことができる。
【００２４】
また、演算部１２は、各ノードが部分グラフ２ａ，２ｂ，・・・に含まれるかどうかを確率的に表すことで、多頻度グラフの検出漏れを抑止することもできる。
例えば演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれについて、部分グラフ２ａ，２ｂ，・・・の構成ノードとして所定数のノードを順番に選択する場合の各ノードの選択確率を示す確率行列を生成する。選択確率は、例えば０〜１の範囲のランダムな値である。次に演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれを第１期待値行列生成対象とする。そして演算部１２は、第１期待値行列生成対象のグラフの確率行列に示された確率で該グラフから所定数のノードが順番に選択されるときに、該グラフ内の各ノードの、選択されたノードとの接続関係の有無の期待値を示す第１期待値行列を生成する。
【００２５】
また演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれを第２期待値行列生成対象とする。そして演算部１２は、第２期待値行列生成対象のグラフの確率行列に示された確率で、該グラフから部分グラフ２ａ，２ｂ，・・・の構成ノードとして所定数のノードが順番に選択されるときに、選択されたノード間の接続関係の有無の期待値を示す第２期待値行列を生成する。
【００２６】
さらに、演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれの複数の第２期待値行列に基づいて、複数のグラフそれぞれから抽出される複数の部分グラフ２ａ，２ｂ，・・・における、選択される順番が同じノード間の接続関係の特徴を示す照合行列を生成する。そして、演算部１２は、複数のグラフ１ａ，１ｂ，・・・それぞれを補正対象とし、補正対象のグラフの第１期待値行列と照合行列との類似度が高くなるように、該グラフの確率行列に示される選択確率を補正する。
【００２７】
演算部１２は、例えば選択確率の補正量が閾値以下となるまで、第１期待値行列の生成、第２期待値行列を生成、照合行列の生成、および選択確率の補正を繰り返す。そして演算部１２は、選択確率の補正量が閾値以下となったときの照合行列で表されている接続関係のグラフを、多頻度グラフとする。
【００２８】
このように部分グラフに含まれるノードを確率的に表すことで、グラフ１ａ，１ｂ，・・・内のすべてのノードを考慮にいれた探索を行うことができ、多頻度グラフの検出漏れを抑止できる。
【００２９】
なお、演算部１２は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば情報処理装置１０が有するメモリまたはストレージ装置により実現することができる。
【００３０】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。第２の実施の形態は、第１の実施の形態に示したような多頻度グラフ探索技術を利用して、コンピュータシステムに対して行われた不正行為を容易に検知できるようにしたものである。
【００３１】
図２は、第２の実施の形態のシステム構成例を示す図である。第２の実施の形態では、例えば、多数のサーバ３１，３２，３３，・・・が、ネットワーク２０を介して接続されている。またサーバ３１，３２，３３，・・・は、互いに連携して様々な処理を実行する。そして、各サーバ３１，３２，３３，・・・は、実行した処理内容をログとして記録する。
【００３２】
またネットワーク２０には、監視装置１００が接続されている。監視装置１００は、サーバ３１，３２，３３，・・・からログを収集し、ログ内容からサーバ３１，３２，３３，・・・で実行された処理に、不正な処理が含まれていないかどうかを監視する。例えば監視装置１００は、サーバ３１，３２，３３，・・・間の通信ログに基づいて、不正な取引が行われた可能性の有無を判断する。またサーバ３１，３２，３３，・・・が銀行の取引システムであれば、監視装置１００は、口座間の取引ログに基づいて、不正な取引が行われた可能性の有無を判断することもできる。
【００３３】
図３は、第２の実施の形態に用いる監視装置のハードウェアの一構成例を示す図である。監視装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００３４】
メモリ１０２は、監視装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００３５】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３６】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００３７】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３８】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３９】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４０】
機器接続インタフェース１０７は、監視装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００４１】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４２】
以上のようなハードウェア構成によって、第２の実施の形態の監視装置１００の処理機能を実現することができる。なお、サーバ３１，３２，３３，・・・も、監視装置１００と同様のハードウェアにより実現することができる。また第１の実施の形態に示した情報処理装置１０も、監視装置１００と同様のハードウェアにより実現することができる。
【００４３】
監視装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。監視装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、監視装置１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また監視装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４４】
次に、グラフを用いた不正検出処理の概要について説明する。
図４は、不正の発生の有無によるグラフの違いを示す図である。例えば、監視装置１００が、１日ごとのログから、その日の取引パタンを表すグラフ４１，４２，４３，・・・を生成する。また１日ごとに、その日に不正な取引があったかどうかについて、日報として報告されているものとする。監視装置１００は、生成したグラフ４１，４２，４３，・・・に、日報で示される内容を、ラベル４１ａ，４２ａ，４３ａ，・・・として関連付ける。
【００４５】
このとき、「不正発生」のラベル４１ａ，４３ａが付与されたグラフ４１，４３には、共通の部分グラフ４１ｂ，４３ｂが高頻度で含まれていることがある。例えばグラフ４１，４２，４３，・・・が、サーバ間の通信ログから生成されていれば、「不正発生」のラベル４１ａ，４３ａが付与されたグラフ４１，４３は、ＤＤｏＳ攻撃や標的型攻撃などに特有の通信パタン（数十件程度）を含む場合がある。また例えばグラフ４１，４２，４３，・・・が、銀行の取引ログから生成されていれば、「不正発生」のラベル４１ａ，４３ａが付与されたグラフ４１，４３は、マネーロンダリングや振込詐欺に特有の取引パタン（数十件程度）を含む場合がある。このように、「不正発生」のラベル４１ａ，４３ａが付与されたグラフ４１，４３内に高頻度で含まれる部分グラフ４１ｂ，４３ｂは多頻度グラフと呼ばれ、不正が発生した日のグラフ４１，４３の特徴を表している。
【００４６】
そこで、監視装置１００は、このような部分グラフ４１ｂ，４３ｂを用いて、不正の検出用の多頻度グラフを探索する。
図５は、照合パタンの抽出例を示す図である。図５の例では、不正が発生した日のグラフ４１，４３，４４，・・・から多頻度グラフを探索し、見つかった多頻度グラフを照合パタン５１としている。このようにして生成した照合パタン５１を用いれば、不正の発生が報告されていない日において、不正が発生している可能性を評価できる。例えば、監視装置１００は、不正の発生が報告されていない日であっても、その日の取引パタンを示すグラフに照合パタンに対応する部分グラフが所定数以上含まれていれば、その日に不正な取引が行われた可能性があると判定する。
【００４７】
ここで、グラフ４１，４２，４３，・・・がサーバ間の通信ログから生成されている場合、各グラフ４１，４２，４３，・・・のノードは、例えばサーバのＩＰアドレスに対応する。またノード間を接続するエッジは、サーバ間で通信が発生したことを表している。またグラフ４１，４２，４３，・・・が銀行の取引ログから生成されている場合、各グラフ４１，４２，４３，・・・のノードは、例えば銀行に開設されている各口座の口座番号に対応する。またノード間を接続するエッジは、口座間でのお金の振り込みが行われたことを表している。
【００４８】
例えば銀行の取引における不正の検出を行う場合、生成するグラフのノード数は１０，０００以上となる。この場合、従来の多頻度グラフ探索手法では、計算量が過大となり、多頻度グラフを探索できない。そこで第２の実施の形態では、監視装置１００は、少ない計算量で多頻度グラフの抽出を可能とする。
【００４９】
図６は、監視装置の機能を示すブロック図である。監視装置１００は、記憶部１１０、ログ収集部１２０、グラフ作成部１３０、照合パタン生成部１４０、および照合部１５０を有する。
【００５０】
記憶部１１０は、ログ１１１ａ，１１１ｂ，・・・、グラフ情報１１２ａ，１１２ｂ，・・・、および照合パタン１１３ａ，１１３ｂ，・・・を記憶する。ログ１１１ａ，１１１ｂ，・・・は、サーバ３１，３２，３３，・・・における、日々の処理の履歴を表す情報である。グラフ情報１１２ａ，１１２ｂ，・・・は、日々の取引パタンまたは通信パタンを示すグラフの構造を示す情報である。照合パタン１１３ａ，１１３ｂ，・・・は、不正検出用のグラフである。記憶部１１０としては、例えばメモリ１０２またはストレージ装置１０３の記憶領域の一部が使用される。
【００５１】
ログ収集部１２０は、各サーバ３１，３２，３３，・・・からログを収集し、記憶部１１０に格納する。例えばログ収集部１２０は、毎日の所定の時刻に、一日分のログをサーバ３１，３２，３３，・・・から収集する。
【００５２】
グラフ作成部１３０は、記憶部１１０に格納されたログ１１１ａ，１１１ｂ，・・・から、日付ごとのグラフを作成する。例えばグラフ作成部１３０は、記憶部１１０から、同じ日に取得されたログの集合を取得する。グラフ作成部１３０は、取得したログから、グラフのノードとする要素を抽出する。ノードとする要素は、例えば、ＩＰアドレスや口座番号である。グラフ作成部１３０は、抽出した要素に対応するノードを作成する。
【００５３】
次にグラフ作成部１３０は、ノードとなる要素間の関連性の有無を、ログを解析して判断する。例えばグラフ作成部１３０は、ノードがＩＰアドレスであれば、２つのノードそれぞれのＩＰアドレスで示されたサーバ間で通信が行われたことを示す情報がログに含まれていれば、そのノードに対応する要素間に関連性があると判断する。またグラフ作成部１３０は、ノードが口座番号であれば、２つのノードそれぞれの口座番号で示された口座間でお金の振り込みが行われたことを示す情報がログに含まれていれば、そのノードに対応する要素間に関連性があると判断する。２つの要素間に関連性がある場合、グラフ作成部１３０は、それらの要素それぞれに対応するノード間を接続するエッジを作成する。
【００５４】
このように、ノードとエッジを作成することで、グラフが作成される。グラフ作成部１３０は、作成したグラフを記憶部１１０に格納する。なお、記憶部１１０に格納されたグラフ情報１１２ａ，１１２ｂ，・・・には、監視装置１００の運用者による入力により、ラベルを設定することができる。例えば不正の有無を識別するラベルが設定される。
【００５５】
照合パタン生成部１４０は、同じラベルが付与されたグラフに基づいて、照合パタンを生成する。例えば照合パタン生成部１４０は、「不正発生」のグラフに共通に発生する多頻度グラフを探索し、その多頻度グラフを照合パタンとする。照合パタン生成部１４０は、生成した照合パタンを、記憶部１１０に格納する。
【００５６】
照合部１５０は、グラフ作成部１３０によって新たに作成されたグラフを、照合パタン１１３ａ，１１３ｂ，・・・と照合する。そして照合部１５０は、照合結果を出力する。例えば照合パタン１１３ａ，１１３ｂ，・・・が、不正が発生した日のグラフの特徴を示しているものとする。この場合、照合部１５０は、照合対象のグラフ内に、照合パタン１１３ａ，１１３ｂ，・・・に対応する部分グラフを所定数以上検出した場合、不正が行われた可能性を示すメッセージをモニタ２１に表示する。
【００５７】
なお、図６に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図６に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５８】
次に、記憶部１１０に格納され情報について詳細に説明する。
図７は、ログの一例を示す図である。ログ１１１ａ，１１１ｂ，・・・には、例えば、取得元サーバのサーバ名、取得日、および時刻情報が付与されたログメッセージが格納される。銀行取引のログであれば、ログメッセージには、振り込み元口座番号、振り込み先口座番号、振り込み金額などが含まれる。
【００５９】
図８は、グラフ情報の一例を示す図である。グラフ情報１１２ａ，１１２ｂ，・・・には、そのグラフ情報の生成元となったログの取得日を示す日付と、その日に不正があったか否かを示すラベルとが含まれる。そしてグラフ情報１１２ａ，１１２ｂ，・・・には、行列によって、グラフの構造が定義されている。行列の各行および各列には、グラフ内のノードが対応付けられている。図８の例では、グラフ内に識別子「Ｐ１」〜「Ｐ６」の６つのノードが存在する。特定の行と列との交差する位置に、行に示されるノードと列に示されるノードとの間の接続関係（エッジ）の有無が設定されている。例えば接続関係がある場合「１」が設定され、接続関係がない場合「０」が設定されている。このようなグラフ情報１１２ａ，１１２ｂ，・・・に基づいて、例えば日付ごとのグラフが定義される。
【００６０】
図９は、照合パタンの一例を示す図である。照合パタン１１３ａ，１１３ｂ，・・・には、その照合パタン１１３ａ，１１３ｂ，・・・の生成元になったグラフ情報と同じラベルが設定されている。そして照合パタン１１３ａ，１１３ｂ，・・・には、ノード間の接続関係の存在割合が、行列で表されている。行列の各行および各列には、照合パタンに含まれるノードが対応付けられている。図９の例では、照合パタン内に識別子「Ｑ１」〜「Ｑ３」の３つのノードが存在する。特定の行と列との交差する位置に、行に示されるノードと列に示されるノードとの間の接続関係の存在確率が設定される。
【００６１】
以上のような監視装置１００により、照合パタン生成処理と、照合パタンを用いた照合処理が行われる。以下、監視装置１００で実行させる処理を詳細に説明する。
図１０は、監視装置における処理の手順を示すフローチャートである。以下、図１０に示す処理をステップ番号に沿って説明する。
【００６２】
［ステップＳ１０１］ログ収集部１２０は、サーバ３１，３２，３３，・・・からログ１１１ａ，１１１ｂ，・・・を収集する。ログ収集部１２０は、収集したログ１１１ａ，１１１ｂ，・・・を、記憶部１１０に格納する。
【００６３】
［ステップＳ１０２］グラフ作成部１３０は、所定期間（例えば１日）ごとに、その期間内のログに示される処理パタン（サーバ間の通信パタン、または銀行口座間の取引パタン）を表すグラフを作成する。グラフ作成部１３０は、作成したグラフを表すグラフ情報１１２ａ，１１２ｂ，・・・を、記憶部１１０に格納する。
【００６４】
［ステップＳ１０３］照合パタン生成部１４０は、監視装置１００の動作モードが学習モードか否かを判断する。動作モードには、例えば学習モードと不正検出モードとがある。学習モードは、生成したグラフを用いて照合パタンを生成するモードである。不正検出モードは、生成したグラフを、既に生成されている照合パタンと照合し、不正が行われた可能性があるか否かを判断するモードである。動作モードは、監視装置１００の管理者によって、予め設定されている。
【００６５】
動作モードが学習モードであれば、処理がステップＳ１０４に進められる。動作モードが不正検出モードであれば、処理がステップＳ１０９に進められる。
［ステップＳ１０４］照合パタン生成部１４０は、管理者からの入力に基づいて、生成したグラフ情報１１２ａ，１１２ｂ，・・・に、不正の有無を示すラベルを付与する。
【００６６】
［ステップＳ１０５］照合パタン生成部１４０は、照合パタン生成条件を取得する。例えば照合パタン生成部１４０は、管理者によって入力された照合パタン生成条件を取得する。照合パタン生成条件には、照合パタンの生成対象とするラベル、生成する照合パタンに含まれるノード数、生成する照合パタン数などが含まれる。照合パタン生成条件において、例えばノード数が３個の照合パタンを、複数生成するように指定することもできる。また、照合パタン生成条件において、例えばノード数が異なる複数の照合パタンを生成するように指定することもできる。
【００６７】
［ステップＳ１０６］照合パタン生成部１４０は、照合パタン生成条件に従った照合パタンの生成処理を実行する。照合パタン生成処理の詳細は後述する（図１７参照）。
［ステップＳ１０７］照合パタン生成部１４０は、生成した照合パタンにラベルを付けて記憶部１１０に格納する。この際、照合パタン生成部１４０は、照合パタンの生成に用いられた部分グラフを示す部分グラフ情報を記憶部１１０に格納することもできる。
【００６８】
［ステップＳ１０８］照合パタン生成部１４０は、照合パタン生成条件において生成することが要求されている全照合パタンを生成したか否かを判断する。未生成の照合パタンがあれば、処理がステップＳ１０６に進められる。すべての照合パタンの生成が完了していれば、処理が終了する。
【００６９】
［ステップＳ１０９］動作モードが不正検出モードの場合、照合部１５０は、生成されたグラフと、「不正発生」のラベルが付与された照合パタンとを照合する。例えば照合部１５０は、グラフ内から、「不正発生」のラベルが付与された照合パタンのいずれかとの類似度が所定値以内の部分グラフを探索する。なお、類似度の計算方法としては、例えばコサイン類似度を用いることができる。
【００７０】
［ステップＳ１１０］照合部１５０は、照合結果から、照合対象のグラフの生成元となったログが取得された日に、不正が行われた可能性があるか否かを判断する。例えば、照合部１５０は、照合パタンに類似する部分グラフが所定数以上存在する場合、不正が行われた可能性があると判断する。不正の可能性がある場合、処理がステップＳ１１１に進められる。不正の可能性がなければ、処理が終了する。
【００７１】
［ステップＳ１１１］照合部１５０は、不正が行われた可能性がある旨のメッセージを出力し、処理を終了する。
このようにして、監視装置１００により、照合パタンの生成と照合パタンを用いた不正検出が行われる。しかも監視装置１００は、作成されたグラフのノード数が例えば１０，０００個以上であっても、実用的な時間内で照合パタンを生成できる。
【００７２】
監視装置１００の照合パタン生成部１４０は、複数のグラフから効率的に多頻度グラフを特定し、その多頻度グラフを照合パタンとする。そのために照合パタン生成部１４０は、複数のグラフそれぞれからサンプリングにより、生成する照合パタンと同じノード数の部分グラフを複数抽出する。照合パタン生成部１４０は、抽出した部分グラフの並び順を固定して、平均的な接続関係を表すグラフを、照合パタンの初期値として生成する。そして、照合パタン生成部１４０は、部分グラフが照合パタンに類似するように、複数の部分グラフに属するノードの入れ替えと、照合パタンにおける接続関係の存在確率の再計算とを繰り返す。
【００７３】
図１１は、部分グラフのノード入れ替えと照合パタンの接続関係の存在確率再計算との一例を示す図である。図１１には、ノード数が「４」の照合パタンを生成する場合の例が示されている。グラフ５２，５３，・・・それぞれからは、生成する照合パタン５１ａと同じノード数の部分グラフが抽出される。例えばグラフ５２とグラフ５３とから、部分グラフ５２ａ，５３ａが抽出されている。部分グラフ５２ａ，５３ａに含まれるノードには、並び順が設定されている。図１１において、ノードを示す丸の中に、並び順を示す番号が示されている。なお、１つのグラフから複数の部分グラフを抽出してもよい。
【００７４】
グラフ５２，５３，・・・それぞれから抽出された部分グラフに基づいて照合パタン５１ａが生成される。照合パタン５１ａに含まれるノードにも、並び順が存在する。例えばノードの識別子「Ｑ１」〜「Ｑ４」に含まれる数字が並び順を示す。照合パタン５１ａのノード間を接続するエッジには、そのエッジの両端のノードに対応する部分グラフ内のノード間に接続関係が存在する確率が設定されている。例えば識別子「Ｑ１」のノードと識別子「Ｑ２」のノードとの間のエッジには「０．６」の確率が設定されている。これは部分グラフの並び順で１番目のノードと２番目のノードとの間には、６０％の確率で接続関係が存在することを表している。
【００７５】
照合パタン生成部１４０は、初期状態の照合パタン５１ａを生成すると、各部分グラフ５２ａ，５３ａについて、照合パタン５１ａと類似するように、ノードの入れ替えを行う。例えば照合パタン生成部１４０は、部分グラフ５２ａ，５３ａ内の１つのノードを選択し、選択したノードを他のノードと入れ替えたときに、部分グラフ５２ａ，５３ａと照合パタン５１ａとの類似度が向上するか否かを判断する。そしてノードを入れ替えることで部分グラフと照合パタン５１ａとの類似度が向上するのであれば、照合パタン生成部１４０は、部分グラフ内のノードの入れ替えを行う。なお入れ替えの対象は、例えば、選択したノードと同じ部分グラフ内の他のノード、またはその部分グラフ内のいずれか１つのノードと接続関係を有する部分グラフ外のノードである。なお、入れ替えることで類似度が向上するノードが複数ある場合、例えば、最も類似度が高くなるノードとの入れ替えが行われる。
【００７６】
例えば部分グラフ５３ａの１番目のノード５３−１が選択されたものとする。このノード５３−１と、部分グラフ５３ａ内の他のノードとの接続関係をベクトルで表すと、（０，１，０）となる。このベクトルは、２番目のノードとの接続関係がなく、３番目のノードとの接続関係があり、４番目のノードとの接続関係がないことを表している。
【００７７】
照合パタン５１ａにおける１番目のノードは、識別子「Ｑ１」のノードである。このノードと、照合パタン５１ａ内の他のノードとの接続関係をベクトルで表すと、（０．６，０．６，０．０）である。このベクトルは、２番目のノードとの接続関係の存在確率が「０．６」であり、３番目のノードとの接続関係の存在確率が「０．６」であり、４番目のノードとの接続関係の存在確率が「０．０」であることを表している。
【００７８】
部分グラフ５３ａの１番目のノード５３−１のベクトルと、照合パタン５１ａの１番目のノードのベクトルとの類似度により、部分グラフ５３ａの１番目のノードが照合パタン５１ａの１番目のノードに類似する度合いが示される。ベクトル間の類似度は、例えばコサイン類似度が用いられる。
【００７９】
このとき照合パタン生成部１４０は、部分グラフ５３ａにおける現在の１番目のノード５３−１を、２番目のノードと３番目のノードとの両方と接続関係を有する部分グラフ５３ａ外のノード５３−２と入れ替えたときに、類似度が向上するかを検討する。入れ替え検討対象のノード５３−２が部分グラフ５３ａの１番目のノードとなった場合、部分グラフ５３ａ内の他のノードとの接続関係を示すベクトルは、（１，１，０）となる。
【００８０】
ノード５３−１のベクトル（０，１，０）と、ノード５３−２のベクトル（１，１，０）とにおいて、異なるのは最初の成分の値（２番目のノードとの接続関係の有無）である。照合パタン５１ａの１番目のノードのベクトルは（０．６，０．６，０．０）である。最初の成分の値は「０．６」であり、ノード５３−２のベクトル（１，１，０）の方が値が近い。するとノード５３−２の方が、より類似していると判断できる。この場合、照合パタン生成部１４０は、ノード５３−１に代えてノード５３−２を１番目のノードとすることで、部分グラフ５３ａを更新する。
【００８１】
同様に他の部分グラフ５２ａについても、照合パタン５１ａとより類似するように、ノードの入れ替えが行われる。部分グラフにおいてノードの入れ替えが行われると、照合パタン５１ａにおけるノード間の接続関係の存在確率が再計算される。図１１の例では、部分グラフ５２，５３の１番目のノードが、２番目と３番目のノードと接続関係を有し、４番目のノードと接続関係を有していないノードに入れ替えられる。このようなノードの入れ替えを繰り返すと、照合パタン５１ａにおいて、１番目のノードと２番目のノードとの接続関係の存在確率はほぼ「１」となり、１番目のノードと３番目のノードとの接続関係の存在確率もほぼ「１」となる。
【００８２】
このように、照合パタン生成部１４０は、部分グラフ５２ａ，５３ａの各ノードについて、部分グラフ５２ａ，５３ａの平均的な接続パタン（照合パタン）の並び順が同じノードと比較したときの接続関係の類似度が向上するようにノードの入れ替えを繰り返す。これにより、照合パタン５１ａにおけるノード間の接続関係の存在確率は、「０」または「１」に近づいていく。そして、類似度を向上させることができる入れ替え対象のノードが存在しなくなったときの照合パタン５１ａが、最終的な照合パタン５１ａとして記憶部１１０に格納される。
【００８３】
照合パタン生成部１４０は、部分グラフ５２ａ，５３ａ内のノードの入れ替えと照合パタン５１ａのノード間の接続関係の存在確率の再計算とを、例えば行列を用いて行う。その場合、部分グラフ５２ａ，５３ａも行列で表される。
【００８４】
図１２は、行列を用いた部分グラフ抽出例を示す図である。グラフ５４は、記憶部１１０内に、ノード間の接続関係を行列で表したグラフ情報５５で保存される。照合パタン生成部１４０は、グラフ５４から部分グラフ５４ａを抽出する。そして照合パタン生成部１４０は、抽出した部分グラフ５４ａ内のノードに順番を設定し、各ノードと照合パタンとのノード間の対応付けを行う。図１２の例では、部分グラフ５４ａの識別子「Ｐ１」のノードが１番、識別子「Ｐ２」のノードが２番、識別子「Ｐ３」のノードが３番となるように、ノードの順番が設定されている。
【００８５】
照合パタン生成部１４０は、各部分グラフ５４ａに含まれるノードと、それらのノードの順番とに基づいて、ノード対応表５６を作成する。ノード対応表５６では、各行にグラフ５４内のノードの識別子が設定され、各列に照合パタンの識別子が設定されている。そして、行と列との交差する位置に、対応関係の有無を示す値が設定されている。図１２の例では、対応関係がある場合「１」、対応関係がない場合「０」が設定される。
【００８６】
例えばノード対応表５６では、部分グラフ５４ａの１番目のノードの識別子「Ｐ１」が設定された行と、照合パタンの１番目のノードの識別子「Ｑ１」が設定された列が交差する位置に「１」が設定されている。部分グラフ５４ａの２番目のノードの識別子「Ｐ２」が設定された行と、照合パタンの２番目のノードの識別子「Ｑ２」が設定された列が交差する位置に「１」が設定されている。部分グラフ５４ａの３番目のノードの識別子「Ｐ３」が設定された行と、照合パタンの３番目のノードの識別子「Ｑ３」が設定された列が交差する位置に「１」が設定されている。他の位置には「０」が設定されている。
【００８７】
照合パタン生成部１４０は、ノード対応表５６に基づいて、部分グラフ５４ａと照合パタンとのノード間の対応関係、および部分グラフ５４ａのノード間の接続関係の有無を示す部分グラフ情報５７を生成する。部分グラフ情報５７の各行と各列とに、部分グラフ５４ａに含まれるノードの識別子、およびそのノードに対応する照合パタン内のノードの識別子が設定されている。そして部分グラフ情報５７の行と列とが交差する位置に、その行に対応する部分グラフ５４ａ内のノードと、その列に対応する部分グラフ５４ａ内のノードとの接続関係の有無を示す値が設定されている。例えば接続関係があれば「１」が設定され、接続関係がなければ「０」が設定される。
【００８８】
図１２に示したような部分グラフ情報が、照合パタン生成条件で示される対象ラベルを有するすべてのグラフから抽出された部分グラフごとに生成される。そして複数の部分グラフ情報に基づいて、照合パタンが生成される。
【００８９】
図１３は、照合パタンの生成例を示す図である。例えばラベル「不正発生」の複数のグラフ５２，５３，・・・それぞれから、部分グラフ５２ａ，５２ｂ，・・・，５３ａ，５３ｂ，・・・が抽出される。抽出された部分グラフ内のノードに順番が設定され、部分グラフそれぞれに対応する部分グラフ情報５７ａ，５７ｂ，・・・が生成される。複数の部分グラフ情報５７ａ，５７ｂ，・・・それぞれの同じ位置に設定されるノード間の接続関係の値の平均値が、照合パタン５８の対応する位置に設定される。
【００９０】
照合パタン５８が生成されると、照合パタン生成部１４０は、グラフ情報５５とノード対応表５６とに基づいて生成された接続関係表と照合パタン５８とを比較し、元のグラフに含まれる各ノードと、照合パタン５８に含まれる各ノードとの類似度を計算する。
【００９１】
図１４は、類似度の計算例を示す図である。グラフ情報５５から、ノード対応表５６において、照合パタン５８のノードに対応付けられているノード（Ｐ１，Ｐ２，Ｐ３）の列が抽出される。そして抽出された列に、照合パタン５８に対応するノードの識別子（Ｑ１，Ｑ２，Ｑ３）を設定した接続関係表５９が生成される。
【００９２】
そして接続関係表５９の各行と照合パタン５８の各行との、ベクトルの類似度が計算される。算出された類似度が、類似度表６０に設定される。なお、図１４の例では、グラフ情報５５に示されるノードのうち、識別子「Ｐ５」と「Ｐ６」のノードは、現在の部分グラフからの入れ替え対象外である。すなわち、これらのノードは、部分グラフに含まれるいずれのノードに対しても、接続関係を有していない。そこで、識別子「Ｐ５」と「Ｐ６」のノードは、類似度の計算対象から除外されている。
【００９３】
なお、２つのベクトル間の類似度は、例えばコサイン類似度によって計算される。
図１５は、ベクトル間の類似度の計算方法を示す図である。例えば、照合パタン５８の識別子「Ｑ１」のノードと、部分グラフの識別子「Ｐ４」のノードとの類似度を計算する場合を考える。
【００９４】
照合パタン５８の識別子「Ｑ１」のノードの、他のノードとの接続関係を示すベクトルは、ベクトルｖ1＝（ｖ11，ｖ12，・・・）である。また接続関係表５９に基づいて、部分グラフの識別子「Ｐ４」のノードの、識別子「Ｑ１」のノード以外のノードとの接続関係を示すベクトルｖ2＝（ｖ21，ｖ22，・・・）が得られる。これらの２つのベクトルの類似度は、以下の式で表される。
類似度＝ｖ1・ｖ2／（||ｖ1||×||ｖ2||）    ・・・（１）
式（１）において、「・」はベクトルの内積であり、「ｖ1・ｖ2」は以下の式で表される。
ｖ1・ｖ2＝ｖ11×ｖ21＋ｖ12×ｖ22＋...    ・・・（２）
また||ｖ1||と||ｖ2||は、それぞれベクトルの長さであり、以下の式で表される。
||ｖ1||＝（ｖ112＋ｖ122＋...）1/2    ・・・（３）
||ｖ2||＝（ｖ212＋ｖ222＋...）1/2    ・・・（４）
ただし、||ｖ1||＝０または||ｖ2||＝０の場合、類似度は未定義となる。||ｖ1||＝０または||ｖ2||＝０となるのは、対応するノードが他のノードとの接続関係を有していない場合である。
【００９５】
類似度の計算結果が設定された類似度表６０に基づいて、部分グラフ内の各ノードと、他のノードとの入れ替えの適否が判断できる。
図１６は、ノードの入れ替え例を示す図である。例えば照合パタン５８の識別子「Ｑ１」のノードに対応する部分グラフ５４ａの識別子「Ｐ１」のノードの、他のノードとの入れ替えの適否を検討する。図１６に示す類似度表６０によれば、識別子「Ｐ１」のノードの、照合パタン５８の識別子「Ｑ１」のノードとの間の類似度は、「０．８」である。それに対して、識別子「Ｐ４」のノードの、照合パタン５８の識別子「Ｑ１」のノードとの間の類似度は、「１．０」である。すると、識別子「Ｐ１」のノードを識別子「Ｐ４」のノードと入れ替えた方が、照合パタン５８の識別子「Ｑ１」のノードとの間の類似度が高くなる。
【００９６】
そこで、照合パタン生成部１４０は、部分グラフ５４ａの１番目のノードを、識別子「Ｐ１」のノードから、識別子「Ｐ４」のノードに入れ替える。具体的には、照合パタン生成部１４０は、ノード対応表５６の「Ｐ１」行「Ｑ１」列の値を「０」に変更し、「Ｐ４」行「Ｑ１」列の値を「１」に変更する。その結果、部分グラフ５４ａに含まれるノードは、識別子「Ｐ４」、「Ｐ２」、「Ｐ３」のノードとなる。これに応じて、部分グラフ情報５７ａや接続関係表５９の内容も更新される。
【００９７】
図１３に示したように、照合パタン５８に示されるノード間の接続関係の存在確率は、部分グラフ情報５７ａ，５７ｂ，・・・に基づいて算出される。そのため、部分グラフ情報５７ａ，５７ｂ，・・・のうちの１つでも接続関係を示す値が変更されれば、照合パタン５８におけるノード間の接続関係の存在確率も再計算される。存在確率が再計算されると、図１４に示したような、部分グラフの各ノードと照合パタン５８の各ノードとの類似度も再計算される。
【００９８】
このような、部分グラフのノードの入れ替えと照合パタン５８の更新とを交互に行うことで、複数の部分グラフが同じ接続関係に近づいていき、照合パタン５８におけるノード間の接続関係の存在確率は、「０」または「１」に近づく。そして、類似度を向上させるような部分グラフのノードの入れ替えが存在しなくなったとき、照合パタン５８の内容が確定する。
【００９９】
このような照合パタン生成処理の手順を以下に示す。
図１７は、照合パタン生成処理の手順の一例を示すフローチャートである。以下、図１７に示す処理をステップ番号に沿って説明する。
【０１００】
［ステップＳ１２１］照合パタン生成部１４０は、所定のラベルが設定された複数のノードそれぞれからのランダムサンプリングにより、複数の部分グラフを生成する。
［ステップＳ１２２］照合パタン生成部１４０は、複数の部分グラフに基づいて、照合パタンを算出する。
【０１０１】
［ステップＳ１２３］照合パタン生成部１４０は、部分グラフを１つ選択する。
［ステップＳ１２４］照合パタン生成部１４０は、選択した部分グラフ内のノードを１つ取得する。そして照合パタン生成部１４０は、取得したノードと、そのノードの対応する照合パタン内のノードとの類似度ｓを算出する。
【０１０２】
［ステップＳ１２５］照合パタン生成部１４０は、選択した部分グラフの生成元のグラフからノードを抽出する。そして照合パタン生成部１４０は、抽出したノードと、ステップＳ１２４で取得したノードに対応する照合パタン内のノードとの類似度を算出する。
【０１０３】
［ステップＳ１２６］照合パタン生成部１４０は、抽出したノードと照合パタン内のノードとの類似度が、ステップＳ１２４で求めた類似度ｓより大きいか否かを判断する。類似度ｓより大きな類似度が得られた場合、処理がステップＳ１２７に進められる。類似度ｓより大きな類似度が得られなかった場合、処理がステップＳ１２８に進められる。
【０１０４】
［ステップＳ１２７］照合パタン生成部１４０は、ステップＳ１２３で選択した部分グラフにおけるステップＳ１２４で取得したノードを、ステップＳ１２５で抽出したノードと入れ替える。
【０１０５】
［ステップＳ１２８］照合パタン生成部１４０は、選択した部分グラフの生成元のグラフ内のすべてのノードを抽出したか否かを判断する。未抽出のノードがあれば、処理がステップＳ１２５に進められる。すべてのノードが抽出されていれば、処理がステップＳ１２９に進められる。
【０１０６】
［ステップＳ１２９］照合パタン生成部１４０は、ステップＳ１２３で選択した部分グラフ内のすべてのノードが取得済みか否かを判断する。未取得のノードがあれば、処理がステップＳ１２４に進められる。すべてのノードが取得済みであれば、処理がステップＳ１３０に進められる。
【０１０７】
［ステップＳ１３０］照合パタン生成部１４０は、すべての部分グラフを選択したか否かを判断する。未選択の部分グラフがあれば、処理がステップＳ１２３に進められる。すべての部分グラフが選択済みであれば、処理がステップＳ１３１に進められる。
【０１０８】
［ステップＳ１３１］照合パタン生成部１４０は、ステップＳ１２３〜Ｓ１３０の処理において、少なくとも１回、部分グラフ内のノードの入れ替えが発生したか否かを判断する。入れ替えが発生した場合、処理がステップＳ１２２に進められる。入れ替えが発生していなければ、照合パタン生成部１４０は、その時点の照合パタンを記憶部１１０に格納し、照合パタン生成処理を終了する。
【０１０９】
以上のようにして、照合パタンを生成することができる。第２の実施の形態におけるノード入れ替え要否判断のための類似度の計算回数は、部分グラフ抽出元のグラフのノード数×部分グラフのノード数であり、比較の際の組み合わせ爆発は発生しない。その結果、類似度の計算負荷は少なくてすむ。また、部分グラフのノードを入れ替えながら、複数の部分グラフそれぞれを多頻度グラフに近づけることで、サンプリングした部分グラフでは見逃された多頻度グラフについても探索可能となっている。
【０１１０】
〔第３の実施の形態〕
次に第３の実施の形態について説明する。第３の実施の形態は、元のグラフと部分グラフとのノード間の対応関係を確率で表すことで、並び順の対応を曖昧にし、並び順の入れ替えによる部分グラフの補正を容易にするものである。すなわち、第２の実施の形態では、ノードの順番を固定することにより、多頻度グラフの探索が難しくなる場合がある。第３の実施の形態は、そのような多頻度グラフ探索の困難性を解消するものである。以下、ノードの順番を固定することによる多頻度グラフの探索の困難性について説明する。
【０１１１】
図１８は、ノードの順番を固定しても多頻度グラフの探索が容易な場合の例を示す図である。図１８に示すグラフ６１は、ノード間の接続関係が密に存在する。この場合、グラフ６１から部分グラフ６２を抽出すると、部分グラフ６２内のノード間の接続関係も密に存在する可能性が高い。
【０１１２】
ここで、部分グラフ６２内のノードに、二通りの順番付けをした場合を考える。一方の部分グラフ６２ａは、識別子「Ｐ１」〜「Ｐ４」のノードの順で並べられている。他方の部分グラフ６２ｂは、識別子「Ｐ２」、「Ｐ４」、「Ｐ１」、「Ｐ３」のノードの順で並べられている。
【０１１３】
図１８に示すようにノード間の接続関係が密に存在するとき、部分グラフ６２内のノードをどのような順番で並べても、生成される部分グラフ情報６３ａ，６３ｂに示される接続関係の値は類似する。すなわち、部分グラフ６２は、ノードをどのような順番で並べても、並び順が不適切であることにより多頻度グラフの検出漏れが発生する可能性は小さい。
【０１１４】
図１９は、ノードの順番を固定すると多頻度グラフの探索が困難になる場合の例を示す図である。図１９に示すグラフ６４は、ノード間の接続関係が疎である。この場合、グラフ６４から部分グラフ６５を抽出すると、部分グラフ６５内のノード間の接続関係も疎にしか存在しない可能性が高い。
【０１１５】
ここで、部分グラフ６５内のノードに、二通りの順番付けをした場合を考える。一方の部分グラフ６５ａは、識別子「Ｐ１」〜「Ｐ４」のノードの順で並べられている。他方の部分グラフ６５ｂは、識別子「Ｐ２」、「Ｐ４」、「Ｐ１」、「Ｐ３」のノードの順で並べられている。
【０１１６】
図１９に示すようにノード間の接続関係が疎に存在するとき、部分グラフ６５内のノードをどのような順番で並べるかにより、生成される部分グラフ情報６６ａ，６６ｂに示される接続関係を示す値は異なってくる。このような場合、部分グラフ６５のノードをどのような順番で並べるのかが、その後の多頻度グラフの探索の困難性に大きく影響する。
【０１１７】
例えば部分グラフ６５ａと同様の接続関係を有する部分グラフが多数存在し、多頻度グラフであると認識されているとき、部分グラフ６５ｂのようにノードを並べてしまうと、部分グラフ６５は、多頻度グラフとは異なると判断されてしまう。しかも、接続関係が大きく異なっていることから、部分グラフ６５ｂのノードの並び順を入れ替えることにより多頻度グラフである部分グラフ６５ａに近づくのを期待するしかなく、確実性に欠ける。
【０１１８】
このように、ノードの並び順を固定すると、部分グラフの類似関係の判断を誤り、部分グラフを、多頻度グラフである照合パタンに近づけていく補正が困難となる場合がある。そこで第３の実施の形態では、照合パタン生成部１４０は、照合パタンのノードと、抽出した部分グラフのノードとの対応関係を確率で表すことで、並び順に曖昧性を持たせる。
【０１１９】
並び順に曖昧性を持たせるために、照合パタン生成部１４０は、グラフ内の各ノードが、部分グラフに含まれ、照合パタンのいずれかのノードと対応付けられる確率を、ノード対応確率表に設定する。そして照合パタン生成部１４０は、ノード対応確率表に基づいて、グラフ内の各ノードが、照合パタンのいずれかのノードに対応付けられたノードと接続関係を有する期待値を算出する。
【０１２０】
図２０は、ノード対応確率表と接続関係の期待値との一例を示す図である。例えばグラフ７１のノード間の接続関係を示すグラフ情報７２内の行列を、行列Ｍとする。またノード数が３個の照合パタンを生成する場合を想定する。このとき照合パタン生成部１４０は、照合パタンに含まれる識別子「Ｑ１」、「Ｑ２」、「Ｑ３」それぞれのノードに、グラフ７１内の各ノードが対応付けられる確率を、ノード対応確率表７３に設定する。
【０１２１】
ノード対応確率表７３は、グラフ７１のノードの識別子が各行に対応付けられ、照合パタンのノードの識別子が各列に対応付けられている。行と列とが交差する位置に、行に対応するノードが、列に対応する照合パタンのノードに対応付けられる確率が設定される。各列の確率の合計は「１」となる。ノード対応確率表７３には、初期値として任意の値が設定される。そして、ノード対応確率表７３の設定値は、複数のグラフの接続関係に基づいて、補正される。以下、ノード対応確率表に示される行列を、行列Ｐとする。
【０１２２】
照合パタン生成部１４０は、グラフ情報７２とノード対応確率表７３とに基づいて、グラフ７１内の各ノードが、照合パタン内の各ノードと接続関係を有している期待値を計算する。例えばグラフ７１の識別子「Ｐ１」のノードが接続関係を有しているのは、識別子「Ｐ２」と「Ｐ３」の各ノードである。すると、グラフ７１の識別子「Ｐ１」のノードが照合パタンの識別子「Ｑ１」のノードと接続関係を有する期待値は、識別子「Ｐ２」または「Ｐ３」のいずれかのノードが照合パタンの識別子「Ｑ１」のノードに対応付けられる確率に等しい。図２０の例では、識別子「Ｐ２」のノードが照合パタンの識別子「Ｑ１」のノードに対応付けられる確率は「０．２」である。また識別子「Ｐ３」のノードが照合パタンの識別子「Ｑ１」のノードに対応付けられる確率は「０．０」である。すると、グラフ７１の識別子「Ｐ１」のノードが照合パタンの識別子「Ｑ１」のノードと接続関係を有する期待値は、「０．２」（＝０．２＋０．０）となる。
【０１２３】
計算された期待値は、接続関係期待値表７４に設定される。接続関係期待値表７４では、各行にグラフ７１のノードの識別子が対応付けられ、各列に照合パタンのノードの識別子が対応付けられている。行と列の交差する位置に、行に対応するノードが、列に対応する照合パタンのノードと接続関係を有する期待値が設定される。接続関係期待値表７４に設定する値は、行列Ｍの右から行列Ｐを乗算することで得られる。すなわち、接続関係期待値表７４に示される期待値は、行列ＭＰで表すことができる。
【０１２４】
ここで、ノード対応確率表７３に示された確率で、照合パタンの各ノードにグラフ７１内のノードを対応付けて、部分グラフを生成することを考える。このとき、照合パタン生成部１４０は、部分グラフのノード間に接続関係が存在する期待値を算出する。
【０１２５】
図２１は、部分グラフの接続関係期待値の算出例を示す図である。例えば３つのノードを有する部分グラフ７５を考える。識別子「Ｐｘ」のノードは、照合ノードの識別子「Ｑ１」のノードに対応付けられる。識別子「Ｐｙ」のノードは、照合ノードの識別子「Ｑ２」のノードに対応付けられる。識別子「Ｐｚ」のノードは、照合ノードの識別子「Ｑ３」のノードに対応付けられる。
【０１２６】
ここで、グラフ７１に含まれるノードの中から、ノード対応確率表７３の「Ｑ１」の列に示された確率に従って、識別子「Ｐｘ」のノードが選択される。すなわち識別子「Ｐ１」のノードが選択される確率が「０．７」、識別子「Ｐ２」のノードが選択される確率が「０．２」、識別子「Ｐ４」のノードが選択される確率が「０．１」である。同様に、グラフ７１に含まれるノードの中から、ノード対応確率表７３の「Ｑ２」の列に示された確率に従って、識別子「Ｐｙ」のノードが選択される。さらにグラフ７１に含まれるノードの中から、ノード対応確率表７３の「Ｑ３」の列に示された確率に従って、識別子「Ｐｚ」のノードが選択される。
【０１２７】
このような選択条件で、部分グラフ７５に含まれるノードを選択するものとすると、ノード間の接続関係が存在する期待値が計算できる。例えば、グラフ７１において、識別子「Ｐ１」のノードと識別子「Ｐ２」のノードとは、接続関係を有している。また、ノード対応確率表７３によると、識別子「Ｐ１」のノードは、高い確率で、照合パタンの識別子「Ｑ１」のノードに対応するノードとして選択される。また識別子「Ｐ２」のノードは、高い確率で、照合パタンの識別子「Ｑ２」のノードに対応するノードとして選択される。すると、部分グラフ７５を作成したとき、照合パタンの識別子「Ｑ１」のノードに対応するノード「Ｐｘ」と照合パタンの識別子「Ｑ２」のノードに対応するノード「Ｐｙ」との間に接続関係が存在する期待値も高くなる。
【０１２８】
部分グラフ７５のノード間に接続関係が存在する期待値は、行列Ｍに左から、行列Ｐの転置行列ＰTを乗算し、右から行列Ｐを乗算することで得られる。算出された期待値は、部分グラフ期待値表７６に設定される。部分グラフ期待値表７６に示される期待値は、行列ＰTＭＰで表すことができる。
【０１２９】
このような部分グラフ期待値表が、照合パタンの生成対象となっているラベルが付与されているグラフごとに作成される。そして照合パタン生成部１４０は、複数の部分グラフ期待値表に基づいて、照合パタンを生成する。
【０１３０】
図２２は、照合パタンの生成例を示す図である。例えばラベル「不正発生」の複数のグラフ５２，５３，・・・それぞれに基づいて、部分グラフ期待値表７６ａ，７６ｂ，・・・が生成される。複数の部分グラフ期待値表７６ａ，７６ｂ，・・・それぞれの同じ位置に設定されるノード間の接続関係の期待値の平均値が、照合パタン７７の対応する位置に設定される。
【０１３１】
照合パタン７７を生成すると、照合パタン生成部１４０は、接続関係期待値表７４と照合パタン７７とを比較し、元のグラフに含まれる各ノードと、照合パタン７７に含まれる各ノードとの類似度を計算する。
【０１３２】
図２３は、類似度の計算例を示す図である。接続関係期待値表７４の各行と照合パタン７７の各行との、ベクトルの類似度が計算される。算出された類似度が、接続関係類似度表７８に設定される。類似度の計算方法は、図１５に示した通りである。
【０１３３】
接続関係類似度表７８には、各行にグラフ７１のノードの識別子が対応付けられ、各列に照合パタン７７のノードの識別子が対応付けられている。接続関係類似度表７８の行と列とが交差する位置に、行に対応するグラフ７１のノードと、列に対応する照合パタンのノードとの類似度が設定されている。以下、接続関係類似度表７８内の行列を、行列Ｄとする。
【０１３４】
照合パタン生成部１４０は、接続関係類似度表７８に設定された類似度に基づいて、ノード対応確率表７３における確率を補正する。例えば照合パタン生成部１４０は、類似度が大きいほど、ノード対応確率表７３内の対応する確率が高くなるように補正する。
【０１３５】
図２４は、ノード対応確率の補正例を示す図である。例えば照合パタン生成部１４０は、ノード対応確率表７３における確率に、接続関係の類似度の定数倍を加算し、列の合計が１になるように補正する。行列の計算式で表すと、まず以下の式が計算される。
Ｐ’＝Ｐ＋λＤ  ・・・（５）
ここで、Ｐはノード対応確率表を示す行列であり、Ｄは接続関係類似度表７８を示す行列である。λは、正の実数である。図２４の例では、λ＝０．１である。次に、以下の式が計算される。
Ｐ＝Ｐ’Ｓ  ・・・（６）
ここで、ＳはＰ’の列の合計の逆数を対角成分に持つ対角行列である。式（６）により、行列Ｐ’内の各成分が、その成分が属する列の値の合計で除算される。その結果、各列の合計が１になるように正規化される。
【０１３６】
ノード対応確率表７３が更新されると、接続関係期待値表７４が更新される（図２０参照）と共に、部分グラフ期待値表７６が更新される（図２１参照）。いずれかのグラフの部分グラフ期待値表が更新されると、照合パタン７７が更新される（図２２参照）。接続関係期待値表７４と照合パタン７７とが更新されると、接続関係類似度表７８が更新される（図２３参照）。接続関係類似度表７８が更新されると、ノード対応確率表７３が更新される（図２４参照）。このような情報の更新の繰り返しが、所定の終了条件が満たされるまで繰り返される。終了条件は、例えば、ノード対応確率表７３の値の変更量の総和が所定値以下になったことである。
【０１３７】
終了条件が満たされたときの照合パタン７７が、確定値として記憶部１１０に格納される。このような照合パタン生成処理の手順を以下に示す。
図２５は、第３の実施の形態における照合パタン生成処理の手順の一例を示すフローチャートである。以下、図２５に示す処理をステップ番号に沿って説明する。
【０１３８】
［ステップＳ２０１］照合パタン生成部１４０は、グラフごとに、そのグラフに含まれる各ノードの対応確率をランダムに生成し、グラフごとのノード対応確率表に設定する。
［ステップＳ２０２］照合パタン生成部１４０は、グラフごとの部分グラフ期待値表に基づいて照合パタンを算出する。
【０１３９】
［ステップＳ２０３］照合パタン生成部１４０は、グラフを１つ選択する。
［ステップＳ２０４］照合パタン生成部１４０は、選択したグラフのグラフ情報とノード対応確率表とに基づいて、グラフに含まれる各ノードが、照合パタンの各ノードに対応するノードと接続関係を有する期待値を算出する。照合パタン生成部１４０は、算出した期待値を、接続関係期待値表７４に設定する。
【０１４０】
［ステップＳ２０５］照合パタン生成部１４０は、選択したグラフ内のノードを１つ取得する。そして照合パタン生成部１４０は、取得したノードと、照合パタンの各ノードとの類似度を算出する。照合パタン生成部１４０は、算出した類似度を、接続関係類似度表７８に設定する。
【０１４１】
［ステップＳ２０６］照合パタン生成部１４０は、選択したグラフ内のすべてのノードを抽出したか否かを判断する。未抽出のノードがあれば、処理がステップＳ２０５に進められる。すべてのノードの抽出が完了していれば、処理がステップＳ２０７に進められる。
【０１４２】
［ステップＳ２０７］照合パタン生成部１４０は、選択したグラフのノード対応確率表７３に示される各ノードの対応確率を更新する。
［ステップＳ２０８］照合パタン生成部１４０は、すべてのグラフを選択したか否かを判断する。未選択のグラフがあれば、処理がステップＳ２０３に進められる。すべてのグラフが選択済みであれば、処理がステップＳ２０９に進められる。
【０１４３】
［ステップＳ２０９］照合パタン生成部１４０は、複数のグラフそれぞれについてステップＳ２０７で更新された確率の差分の合計（更新差分合計）がε（εは正の実数）より大きいか否かを判断する。更新差分合計がεより大きければ、処理がステップＳ２０２に進められる。更新差分合計がε以下であれば、照合パタン生成部１４０は、その時点の照合パタンを記憶部１１０に格納し、照合パタン生成処理を終了する。
【０１４４】
以上のようにして、照合パタンを生成することができる。第３の実施の形態では、グラフ内のノードと照合パタン内のノードとの対応関係は、確率によって表される。すなわち、確率表記により、グラフ内のすべてのノードが、照合パタンの接続関係と類似するかどうかの検討対象となっている。そのため、グラフ内の多頻度グラフの探索漏れの発生が抑止される。しかも、グラフ内のノード数が増大しても、組み合わせ爆発は発生せず、実用的な処理時間で照合パタンを生成できる。
【０１４５】
〔その他の応用例〕
第１〜第３の実施の形態に示した照合パタンの生成処理は、例えば、新規のグラフが生成されるごとに行うことができる。その際、既存のグラフ群から生成した照合パタンを流用することで、新たな照合パタンの生成を高速に行うことができる。
【０１４６】
図２６は、既存の照合パタンを流用する例を示す図である。例えば既存のグラフ群８１に基づいて照合パタン８２を生成した後、追加のグラフ８３が生成されたものとする。このとき照合パタン８２や、照合パタン８２生成時に用いた他の情報を再利用すれば、追加のグラフ８３に含まれる部分グラフのうち多頻度グラフを含む可能性の高い部分グラフ８３ａを高速に抽出することができる。照合パタン８２生成時に用いた他の情報は、第２の実施の形態であれば、ノード対応表、部分グラフを示す部分グラフ情報、接続関係表、類似度表などである。第３の実施の形態であれば、ノード対応確率表、接続関係期待値表、部分グラフ期待値表、接続関係類似度表などが、照合パタン８２生成時に用いた他の情報である。
【０１４７】
照合パタン８２などの情報を再利用して部分グラフ８３ａを高速に抽出することで、監視装置１００の処理能力を、他の照合パタン８４の探索処理に振り分けることが可能となる。その結果、より多くの照合パタン８４を見つけ出すことができ、不正が発生した日のグラフの特徴を表す照合パタンの抽出漏れを抑止することができる。
【０１４８】
なお、既存のグラフ群８１に「不正発生」のラベルが付与されている場合、照合パタン８２に類似する部分グラフ８３ａが追加のグラフ８３内に存在すれば、追加されたグラフ８３の生成元となったログの採取期間内に不正があった可能性があると判断できる。すなわち、照合パタン８２を用いて、過去に行われた不正・犯罪と同じタイプの不正・犯罪を高速に検知可能である。
【０１４９】
また、グラフ８３が追加されるごとに、既存の照合パタン８２とは別の照合パタン８４の探索を行うことで、過去に行われた不正・犯罪とは異なるタイプの不正・犯罪の検出に有用な照合パタン８４を生成できる。その結果、日々発生する新たな不正・犯罪に迅速に対応することができる。
【０１５０】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１５１】
１ａ，１ｂ，・・・  グラフ
２ａ，２ｂ，・・・  部分グラフ
３ａ，３ｂ，・・・，５ａ，５ｂ，・・・  接続関係行列
４ａ，４ｂ  照合行列
６  多頻度グラフ
１０  情報処理装置
１１  記憶部
１２  演算部
【図１】
0006582922.tif 000002
【図２】
0006582922.tif 000003
【図３】
0006582922.tif 000004
【図４】
0006582922.tif 000005
【図５】
0006582922.tif 000006
【図６】
0006582922.tif 000007
【図７】
0006582922.tif 000008
【図８】
0006582922.tif 000009
【図９】
0006582922.tif 000010
【図１０】
0006582922.tif 000011
【図１１】
0006582922.tif 000012
【図１２】
0006582922.tif 000013
【図１３】
0006582922.tif 000014
【図１４】
0006582922.tif 000015
【図１５】
0006582922.tif 000016
【図１６】
0006582922.tif 000017
【図１７】
0006582922.tif 000018
【図１８】
0006582922.tif 000019
【図１９】
0006582922.tif 000020
【図２０】
0006582922.tif 000021
【図２１】
0006582922.tif 000022
【図２２】
0006582922.tif 000023
【図２３】
0006582922.tif 000024
【図２４】
0006582922.tif 000025
【図２５】
0006582922.tif 000026
【図２６】
0006582922.tif 000027