(57)【要約】【課題】異常を精度良く検出することのできる異常検出装置を提供する。【解決手段】異常検出装置１００は、データ別異常スコア計算部１２２と、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられる分類基準別俯瞰スコア計算部１２３−１〜１２３−ｎとを備える。データ別異常スコア計算部１２２は、異常検出対象となる一連のデータ系列の確率分布を学習し、この学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出する。分類基準別俯瞰スコア計算部１２３−１〜１２３−ｎは、データ系列中の個々のデータを対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する。【選択図】図１
2010092203.tif 000002
【特許請求の範囲】
【請求項１】
異常検出対象となる一連のデータ系列の確率分布を学習し、該学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出するデータ別異常スコア計算手段と、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられる手段であって、前記データ系列中の個々のデータを対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて前記算出された異常スコアの条件付確率分布を学習し、該学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する複数の分類基準別俯瞰スコア計算手段とを備えることを特徴とする異常検出装置。
【請求項２】
それぞれ異なる複数の前記分類基準が階層的な関係を持つことを特徴とする請求項１に記載の異常検出装置。
【請求項３】
下位階層の分類基準に対応する前記分類基準別俯瞰スコア計算手段は、上位階層の分類基準に対応する前記分類基準別俯瞰スコア計算手段により算出された複数のグループのうち、俯瞰スコアの値が予め設定された閾値以上となるグループについてのみ、分類基準に従った分類、条件付確率分布の学習および俯瞰スコアの算出を行うことを特徴とする請求項２に記載の異常検出装置。
【請求項４】
最下位階層の分類基準に対応する前記分類基準別俯瞰スコア計算手段で計算された俯瞰スコアを予め設定された閾値と比較して異常の検出を行う異常検出制御手段を備えることを特徴とする請求項３に記載の異常検出装置。
【請求項５】
それぞれ異なる複数の前記分類基準が非階層的な関係を持つことを特徴とする請求項１に記載の異常検出装置。
【請求項６】
全ての前記分類基準別俯瞰スコア計算手段で計算された俯瞰スコアを予め設定された閾値と比較して異常の検出を行う異常検出制御手段を備えることを特徴とする請求項５に記載の異常検出装置。
【請求項７】
前記分類基準別俯瞰スコア計算手段は、前記学習した条件付確率分布の尖度を前記俯瞰スコアとして算出することを特徴とする請求項１乃至６の何れか１項に記載の異常検出装置。
【請求項８】
前記分類基準別俯瞰スコア計算手段は、前記学習した条件付確率分布の所定のパーセンタイル点の値を前記俯瞰スコアとして算出することを特徴とする請求項１乃至６の何れか１項に記載の異常検出装置。
【請求項９】
データ別異常スコア計算手段が、異常検出対象となる一連のデータ系列の確率分布を学習し、該学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出する第１のステップと、
１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられた複数の分類基準別俯瞰スコア計算手段が、前記データ系列中の個々のデータを、対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて前記算出された異常スコアの条件付確率分布を学習し、該学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する第２のステップとを含むことを特徴とする異常検出方法。
【請求項１０】
コンピュータを、異常検出対象となる一連のデータ系列の確率分布を学習し、該学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出するデータ別異常スコア計算手段と、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられる手段であって、前記データ系列中の個々のデータを対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて前記算出された異常スコアの条件付確率分布を学習し、該学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する複数の分類基準別俯瞰スコア計算手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は異常を検出する方法と装置に関し、特に一連のデータ系列の発生確率分布を学習し、この学習した確率分布から予測されるデータと実際のデータとを比較して、異常を検出する異常検出装置と方法に関する。
【背景技術】
【０００２】
一連のデータ系列から異常を検出する手法、例えばＷｅｂアクセスログから不正なアクセスを検出したり、ＰＣのイベントログからユーザの異常行動（不正な行動等）を検出したり、機器の出力するログ（syslog等）から機器の異常（故障等）を検出したりする技術は、ルールベース手法と非ルールベース手法とに大別される。
【０００３】
ルールベース手法は、IDS(Intrusion Detection System)のようにどのような種類の行動が異常かというルールを予め定義しておいて、ルールと合致したデータや行動を異常として検出する手法である。これに対して非ルールベース手法は、データの通常のパターンを学習して通常のパターンから外れているデータや行動を異常として検出する手法である。ルールベース手法が、定義された異常、つまり既知の異常しか検出できないのに対して、非ルールベース手法は未知の異常を検出できるという利点がある。本発明は、このような非ルールベース手法による異常検出に関する。
【０００４】
非ルールベースの手法による異常検出装置の一例が特許文献１に記載されている。特許文献１に記載された異常検出装置（以下、関連技術１と称す）では、入力データの通常のパターンの確率分布を学習し、新たに入力されたデータが学習された通常のパターンと確率的にどれだけ異なるのかを示すスコアを算出し、スコアが予め設定された閾値以上となる場合に異常と判定する。
【０００５】
非ルールベースの手法による異常検出装置の他の例が特許文献２に記載されている。特許文献２に記載された異常検出装置（以下、関連技術２と称す）では、各データ単位毎（例えば、Ｗｅｂアクセスログであれば１件のアクセス毎）に異常スコアを与えてデータ単位毎に異常かどうかを判断する他に、より大域的な異常を検出している。具体的には、通常のパターンからの外れ度合いのスコア（以下、外れ値スコアと称す）を再度学習し、外れ値スコアの外れ値スコアを算出することで、時系列の変化点を検出する。これは直感的には外れ値スコアの密集度が高いところを時系列の変化点と見做していることに相当する。個々のデータのスコアのみではなく、データ間の相関（密集度）を考慮しているという意味で、より大域的な異常の検出方法となっている。
【０００６】
【特許文献１】特開２００４−３０９９９８号公報
【特許文献２】特開２００４−５４３７０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
特許文献１に記載されるように、通常の行動パターンを学習し、入力単位（イベントログであれば１回のコマンド実行、アクセスログであれば１回のアクセス）毎に通常のパターンからの外れ度合いを示すスコアを計算し、スコアの高いものを異常と見做す方法によれば、未知の異常を検出することができることに加えて、専門家がデータを分析して異常の種類や原因を特定する際に上記のスコアリングを用いることにより、分析に必要な作業量を削減できる利点がある。しかしながら、データ単位のスコアのみによる異常検出では、誤検出や検出漏れによって検出精度が低下する可能性がある。例えば、ＰＣの使用履歴から不審なユーザを検出する場合、或るユーザが過去に所定回数以上、スコアの高い行動をとった場合に、そのユーザの行動を不審な行動として検出するものとする。しかし、正常なユーザでも突発的に例外的な行動をとる場合があるため、過去に所定回数以上、スコアの高い行動をとったとしても、その行動の間隔が時間的に非常に長い場合には不審な行動として検出すると誤検出を招くことになる。他方、時間的に集中して行われていれば、意図的に例外的な行動を連続してとっているということになるので、異常な行動として検出するのが望ましい。特許文献１に記載されるように、入力単位毎のスコアに基づく異常検出では、両者の区別がつかず、誤検出や検出漏れが生じる可能性がある。
【０００８】
これに対して特許文献２に記載されるように、外れ値スコアの再学習を行い、異常が集中しているところを異常（変化点）と見做す技術によれば、入力単位毎のスコアのみを用いる際には考慮されないデータ間の相関が考慮されるようになるために、異常検出の精度を向上することができる。しかしながら、特許文献２では、データ間の相関は時間による相関のみである。時間による相関だけでも、データ単位のスコアに基づく方法に比べれば異常の検出精度は向上するものの、より検出精度を高めるためには、時間以外の属性も含めて複数の属性によるデータ間の相関を扱える、非ルールベース手法による異常検出技術が望まれる。
【０００９】
本発明はこのような事情に鑑みて提案されたものであり、その目的は、複数の属性によるデータ間の相関を考慮することにより、異常をより精度良く検出することのできる異常検出装置および方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の第１の異常検出装置は、異常検出対象となる一連のデータ系列の確率分布を学習し、該学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出するデータ別異常スコア計算手段と、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられる手段であって、前記データ系列中の個々のデータを対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて前記算出された異常スコアの条件付確率分布を学習し、該学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する複数の分類基準別俯瞰スコア計算手段とを備える。
【００１１】
本発明の第１の異常検出方法は、データ別異常スコア計算手段が、異常検出対象となる一連のデータ系列の確率分布を学習し、該学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、データ系列中の個々のデータについて算出する第１のステップと、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられた複数の分類基準別俯瞰スコア計算手段が、前記データ系列中の個々のデータを、対応する分類基準に従って分類した各グループ毎に、当該グループに属するデータについて前記算出された異常スコアの条件付確率分布を学習し、該学習した条件付確率分布から異常の程度を表す俯瞰スコアを算出する第２のステップとを含む。
【発明の効果】
【００１２】
本発明によれば、複数の属性によるデータ間の相関を考慮することにより、異常データをより精度良く検出することができる。
【発明を実施するための最良の形態】
【００１３】
次に、本発明の実施の形態について図面を参照して詳細に説明する。
【００１４】
［第１の実施の形態］
図１を参照すると、本発明の第１の実施の形態に係る異常検出装置１００は、プログラム制御によって動作するデータ処理装置１０１と、キーボードやデータ受信装置あるいはファイル装置などで構成される入力装置１０２と、液晶ディスプレイなどで構成される表示装置１０３と、磁気ディスクや半導体メモリなどで構成される複数の記憶部、すなわちログデータ記憶部１０４、確率分布記憶部１０５、データ別異常スコア記憶部１０６、ｎ階層分のグループ記憶部１０７−１〜１０７−ｎ、ｎ階層分の条件付分布記憶部１０８−１〜１０８−ｎ、ｎ階層分の俯瞰スコア記憶部１０９−１〜１０９−ｎ、検出結果記憶部１１０を備えている。
【００１５】
ログデータ記憶部１０４は、異常を検出する対象となるログデータを記憶するために用いられる。ログデータと検出したい異常の例としては、Ｗｅｂアクセスログから不正なアクセスを検出する、ＰＣ（パーソナルコンピュータ）のイベントログからユーザの異常行動（不正な行動等）を検出する、機器の出力するログ（syslog等）から機器の異常（故障等）を検出する、などが挙げられる。以下では、ＰＣのイベントログからユーザの異常行動（不正な行動等）を検出する場合を例に取り上げる。しかし、本発明はこの例に限定されるものではなく、様々なログデータからの異常検出に適用することができる。
【００１６】
図２を参照すると、ログデータ記憶部１０４に記憶されるＰＣのイベントログは、ログＩＤと、日時情報と、ユーザ名と、イベントデータとで構成される。ログＩＤは、個々のイベントログを一意に識別するための番号である。日時情報は、当該イベントログが採取された日時を示す。ユーザ名は、当該イベントログを発生させたユーザの識別子である。イベントデータは、ユーザがＰＣに対して入力したコマンド名や、ユーザの使用した実行ファイル名などの操作情報である。ここで、日時情報、ユーザ名が、データ属性の一例である。
【００１７】
確率分布記憶部１０５は、異常を検出する対象となるログデータの発生確率分布を一時的に記憶するために用いられる。
【００１８】
データ別異常スコア記憶部１０６は、ログデータ毎の異常スコアを一時的に記憶するために用いられる。図３を参照すると、データ別異常スコア記憶部１０６には、ログＩＤに対応付けて、そのログＩＤを持つログデータについて算出された異常スコアが記憶される。
【００１９】
各階層のグループ記憶部１０７−１〜１０７−ｎは、１以上のデータ属性の組み合わせによるそれぞれ異なる分類基準に対応して設けられている。本実施の形態では、第ｉ階層の分類基準xiは、第ｉ−１階層の分類基準xi-1に新たなデータ属性を付け加えたものになっている。例えば、第１階層の分類基準が「週」の場合、第２階層の分類基準は「その週における或る日」であり、また第３階層の分類基準は「その週のその日における或るユーザ」である。
【００２０】
第ｉ階層グループ記憶部１０７−ｉは、第ｉ階層の分類基準xiに従って、データ別異常スコア記憶部１０６に記憶された異常スコアを分類したときに生成される各グループ毎の異常スコアを一時的に記憶するために用いられる。図４を参照すると、第ｉ階層グループ記憶部１０７−ｉには、各グループ毎に、分類基準値と、この分類基準値で特定されるグループに属する異常スコアのリストとが記憶される。第ｉ階層の分類基準xiが取り得る値の集合を、
χi＝｛x'i,1,…,x'i,mi｝      …（１）
とするとき、x'i,1,…,x'i,miのそれぞれが分類基準値となる。例えば、第ｉ階層の分類基準xiが「週」であれば、x'i,1は第１週を、x'i,2は第２週を、それぞれ示し、miは週の数（＝グループ数）を表す。また、第ｉ階層の分類基準xiが「週と日付の組み合わせ」であれば、x'i,1はその週における或る日を、x'i,2はその週における別の或る日を、それぞれ示し、miは日数（＝グループ数）を表す。さらに、第ｉ階層の分類基準xiが「週と日付とユーザ名の組み合わせ」であれば、x'i,1はその週におけるその日の或るユーザ名を、x'i,2はその週におけるその日の別のユーザ名を、それぞれ示し、miはユーザ数（＝グループ数)を表す。
【００２１】
各階層の条件付分布記憶部１０８−１〜１０８−ｎは、対応する階層のグループ記憶部１０７−１〜１０７−ｎに記憶されているグループ毎に、そのグループに属する異常スコアの条件付確率分布を一時的に記憶するために用いられる。図５を参照すると、第ｉ階層の条件付分布記憶部１０８−ｉには、その階層に属するグループ毎に、分類基準値と、この分類基準値で特定されるグループに属する異常スコアの条件付確率分布とが記憶される。
【００２２】
異常スコアの条件付確率分布は、次式で表される。
pi,j(S|x'i,j,θi,j)(i=1,…,n、j=1,…,mi)      …（２）
例えば、分類基準xiが「週」の場合、pi,jはj番目の週の異常スコア分布を表す。つまり、pi,・は、週毎の異常スコアの分布を表す。
【００２３】
各階層の俯瞰スコア記憶部１０９−１〜１０９−ｎは、対応する階層の条件付分布記憶部１０８−１〜１０８−ｎに記憶されている各グループ毎の異常スコアの条件付確率分布から求められた大域的な異常の程度を表す俯瞰スコアを一時的に記憶するために用いられる。図６を参照すると、第ｉ階層の俯瞰スコア記憶部１０９−ｉには、その階層に属するグループ毎に、分類基準値と、この分類基準値で特定されるグループに属する異常スコアの条件付確率分布から求められた俯瞰スコアとが記憶される。
【００２４】
俯瞰スコアをGi,j(i=1,…,n、j=1,…,mi)と記す。俯瞰スコアGi,jは、分類基準xiがx'i,jをとった場合の異常さを表す量である。異常スコアの条件付確率分布から俯瞰スコアGi,jを求める方法としては、例えば、以下のような方法がある。
【００２５】
例１：
Gi,j＝（異常スコアの条件付確率分布pi,jの尖度）      …（３）
ここで、尖度は分布pi,jの裾が重い（長い）かどうかを示す指標であるため、尖度が大きいほど（裾が重いほど）、異常の程度が大きいことを示す。
【００２６】
例２：
Gi,j＝（異常スコアの条件付確率分布pi,jの99.9パーセンタイル点の値）      …（４）
ここで、パーセンタイル点は、データの値を大きさの順に並べ、それ以下のサンプル数がその割合であるような順位に対応するデータの値であるため、99.9パーセンタイル点の値が大きいほど、異常の程度が大きいことを示す。
【００２７】
上記２つの式（３）、（４）では、分類基準xiがx'i,jをとった場合にどれだけ高い異常スコアが密集しているかで、俯瞰スコアを定義している。この定義を用いる場合、例えば、分類基準xiが「週」を表すならば、大きいGi,jは異常が密集して現れた週に対応する。また、分類基準xiが「週と日の組み合わせ」を表すならば、大きいGi,jは週のうち異常が密集して現れた日に対応する。さらに、分類基準xiが「週と日とユーザ名の組み合わせ」を表すならば、大きいGi,jは週のある日に異常な行動をとったユーザに対応する。
【００２８】
また、この定義を用いる場合、俯瞰スコアが高いことは、通常のパターンから外れた異常な行動が特定の分類基準（つまり、特定のデータ属性）に集中していることを表す。つまり、俯瞰スコアが高いことは突発的に例外的な行動が現れたのではなく意図的に例外的な行動が連続して行われた可能性が高いことに対応する。そして、下位の階層にいくほど分類基準を定める条件が厳しくなるため、そのことがより確実なものとなる。例えば、分類基準「週」で分類した或る週の俯瞰スコアが高い場合に比べて、その週における或る日を分類基準とする或る日の俯瞰スコアが高い方が、より意図的に例外的な行動が連続して行われた可能性が高くなり、さらに、その日におけるユーザ名で分類した或るユーザの俯瞰スコアが高ければ、より一層、突発的に例外的な行動が現れた可能性が低くなり、意図的に例外的な行動が行われた可能性が高くなる。この結果、単一の分類基準による俯瞰スコアを用いるよりも、階層化された分類基準による俯瞰スコアを用いた方が、異常検出の精度を向上することができる。
【００２９】
検出結果記憶部１１０は、異常の有無や異常と判定されたログデータ等を含む検出結果を一時的に記憶するために用いられる。
【００３０】
一方、データ処理装置１０１は、データ入力部１２１と、データ別異常スコア計算部１２２と、各階層毎の分類基準別俯瞰スコア計算部１２３−１〜１２３−ｎと、異常検出制御部１２４とを有する。
【００３１】
データ入力部１２１は、入力装置１０２からログデータを入力し、ログデータ記憶部１０４に格納する機能を有する。
【００３２】
データ別異常スコア計算部１２２は、ログデータ記憶部１０４に記憶された一連のログデータの発生確率分布を学習し、その学習した確率分布から予測されるデータと実際のデータとのずれの程度を表す異常スコアを、個々のログデータについて算出する機能を有する。このデータ別異常スコア計算部１２２は、分布学習部１３１と異常スコア計算部１３２とで構成される。
【００３３】
分布学習部１３１は、ログデータ記憶部１０４からログデータを発生日時順に読み出し、ログデータ中のイベントデータの発生確率分布を、有限個のパラメータで規定される統計モデルとして学習し、学習した確率分布を確率分布記憶部１０５に記憶する。ログデータ記憶部１０４に記憶されたログデータのうちt番目のデータをytと記す。分布学習部１３１は、ログデータ記憶部１０４から入力したデータの確率分布pt(y|θt)を学習する。ここで、θは確率分布のパラメータを表す。また、分布学習部１３１は、データの入力と共に逐次的に確率分布を更新する。
【００３４】
異常スコア計算部１３２は、分布学習部１３１で学習された確率分布を確率分布記憶部１０５から読み出し、データytの異常スコアStを算出し、データ別異常スコア記憶部１０６へ格納する。異常スコアは、通常の出現パターンから外れたデータほど大きい値が与えられるようなスコアである。例えば、次式に示すように、確率分布pt-1を用いてt番目のデータytを予測した際の対数予測損失を異常スコアとして用いることができる。
St＝-log pt-1(yt|θt)      …（５）
【００３５】
第１階層の分類基準別俯瞰スコア計算部１２３−１は、ログデータを第１階層の分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第１階層の分類基準別俯瞰スコア計算部１２３−１は、条件付分布学習部１４１と俯瞰スコア計算部１４２とで構成される。
【００３６】
条件付分布学習部１４１は、第１階層の分類基準x1に従って、データ別異常スコア記憶部１０６に記憶された異常スコアを分類し、各グループ毎に分類基準値を付加して分類結果を第１階層グループ記憶部１０７−１に記憶し、次いで、第１階層グループ記憶部１０７−１に記憶した各グループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布
p1,j(S|x'1,j,θ1,j)(j=1,…,mi)      …（６）
を学習し、学習した条件付確率分布を第１階層条件付分布記憶部１０８−１に記憶する。
【００３７】
例えば、第１階層の分類基準x1が「週」の場合、分布学習部１４１は、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータの日時情報を取得し、その日時情報から判明する週単位で異常スコアを分類し、各グループがどの週に対応するかを示す分類基準値を付加して、第１階層グループ記憶部１０７−１に記憶する。次に、条件付分布学習部１４１は、各週毎の異常スコアから、週毎の異常スコアの確率分布p(S|週)を学習し、第１階層条件付分布記憶部１０８−１に記憶する。
【００３８】
俯瞰スコア計算部１４２は、第１階層条件付分布記憶部１０８−１に記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布p1,jを読み出し、この条件付確率分布p1,jから前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第１階層俯瞰スコア記憶部１０９−１に記憶する。例えば、第１階層の分類基準x1が「週」の場合、俯瞰スコア計算部１４２は、週毎の異常度を表す俯瞰スコアG1,j(j=1,2,…。jは週を表す)を算出する。
【００３９】
第２階層の分類基準別俯瞰スコア計算部１２３−２は、ログデータを第２階層の分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第２階層の分類基準別俯瞰スコア計算部１２３−２は、条件付分布学習部１５１と俯瞰スコア計算部１５２とで構成される。
【００４０】
条件付分布学習部１５１は、第１階層グループ記憶部１０７−１に記憶された各グループ毎に、第２階層の分類基準x2に従って異常スコアを分類し、この分類で生成された各グループ毎に分類基準値を付加して分類結果を第２階層グループ記憶部１０７−２に記憶し、次いで、第２階層グループ記憶部１０７−１に記憶した各グループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布
p2,j(S|x'2,j,θ2,j)(j=1,…,mi)      …（７）
を学習し、学習した条件付確率分布を第２階層条件付分布記憶部１０８−２に記憶する。
【００４１】
例えば、第１階層の分類基準x1が「週」で、第２階層の分類基準x2が「週と日との組み合わせ」の場合、条件付分布学習部１５１は、第１階層グループ記憶部１０７−１に記憶された週単位のグループ毎に、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータの日時情報を取得し、その日時情報から判明する日単位で異常スコアをより細かく分類し、この分類で生成した各グループがどの週のどの日に対応するかを示す分類基準値を付加して、第２階層グループ記憶部１０７−２に記憶する。次に、条件付分布学習部１５１は、各週の各日毎の異常スコアから、週の日毎の異常スコアの確率分布p(S|週&日)を学習し、第２階層条件付分布記憶部１０８−２に記憶する。
【００４２】
俯瞰スコア計算部１５２は、第２階層条件付分布記憶部１０８−２に記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布p2,jを読み出し、この条件付確率分布p2,jから前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第２階層俯瞰スコア記憶部１０９−２に記憶する。例えば、第２階層の分類基準x1が「週と日の組み合わせ」の場合、俯瞰スコア計算部１５２は、週と日の組み合わせ毎の異常度を表す俯瞰スコアG2,j(j=1,2,…。jはどの週のどの日かを表す)を算出する。
【００４３】
最終階層である第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎは、ログデータを第ｎ階層の分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎは、条件付分布学習部１６１と俯瞰スコア計算部１６２とで構成される。
【００４４】
条件付分布学習部１６１は、第ｎ−１階層グループ記憶部１０７−ｎ−１に記憶されたグループ毎に、第ｎ階層の分類基準xnに従って異常スコアを分類し、この分類で生成されたグループ毎に分類基準値を付加して分類結果を第ｎ階層グループ記憶部１０７−ｎに記憶し、次いで、第ｎ階層グループ記憶部１０７−ｎに記憶したグループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布
pn,j(S|x'n,j,θn,j)(j=1,…,mi)      …（８）
を学習し、学習した条件付確率分布を第ｎ階層条件付分布記憶部１０８−ｎに記憶する。
【００４５】
例えば、ｎ＝３であり、第１階層の分類基準x1が「週」で、第２階層の分類基準x2が「週と日との組み合わせ」で、第３階層の分類基準x3が「週と日とユーザ名の組み合わせ」の場合、条件付分布学習部１６１は、第２階層グループ記憶部１０７−２に記憶された日単位のグループ毎に、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータのユーザ名を取得し、そのユーザ名で異常スコアをより細かく分類し、この分類で生成した各グループがどの週のどの日のどのユーザ名に対応するかを示す分類基準値を付加して、第ｎ階層グループ記憶部１０７−ｎに記憶する。次に、条件付分布学習部１６１は、各週の各日の各ユーザ毎の異常スコアから、週と日とユーザ名の組み合わせ毎の異常スコアの確率分布p(S|週&日&ユーザ)を学習し、第ｎ階層条件付分布記憶部１０８−ｎに記憶する。
【００４６】
俯瞰スコア計算部１６２は、第ｎ階層条件付分布記憶部１０８−ｎに記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布pn,jを読み出し、この条件付確率分布pn,jから前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第ｎ階層俯瞰スコア記憶部１０９−ｎに記憶する。例えば、ｎ＝３で、第３階層の分類基準x3が「週と日とユーザ名の組み合わせ」の場合、俯瞰スコア計算部１６２は、週と日とユーザ名の組み合わせ毎の異常度を表す俯瞰スコアG3,j(j=1,2,…。jはどの週のどの日のどのユーザかを表す)を算出する。
【００４７】
異常検出制御部１２４は、各階層の俯瞰スコア記憶部１０９−１〜１０９−ｎに記憶された俯瞰スコアGi,j(i=1,…,n、j=1,…,mi)と、データ別異常スコア記憶部１０６に記憶されたログデータ毎の異常スコアSt(t=1,2,…)とを入力として、異常を検出し、検出結果を検出結果記憶部１１０に格納すると同時に表示装置１０３に表示する機能を有する。
【００４８】
一定量のログデータについてデータ別異常スコアが算出されている場合の異常検出制御部１２４による異常検出手順として、本実施の形態では、以下のような手順を用いる（この手順を階層的異常検出手順と呼ぶ）。
【００４９】
＜階層的異常検出手順＞
手順１：まず、第１階層の分類基準別俯瞰スコア計算部１２３−１を起動し、データ別異常スコア記憶部１０６に記憶された異常スコアを、第１階層の分類基準に従って分類し、グループ毎の条件付確率分布と俯瞰スコアとを生成する。
【００５０】
手順２：次に、第２階層の分類基準別俯瞰スコア計算部１２３−２から最後の第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎまで順に、一つ上の階層の分類基準別俯瞰スコア計算部の処理が終了するのを待って、そこで生成されたグループのうち、算出された俯瞰スコアが予め設定された閾値以上のグループについてのみ、そのグループを当該階層に対応する分類基準でさらに細かく分類し、この分類して生成されたグループ毎の条件付確率分布と俯瞰スコアとを生成する。
【００５１】
手順３：第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎまで計算が進み、そこで生成された俯瞰スコアのうち予め設定された閾値以上の俯瞰スコアが１つでも存在すれば異常ありとする検出結果を生成する。他方、上位の層で閾値以上の俯瞰スコアを持つグループが１つも生成されなかったために第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎまで計算が進まなかった場合、および、第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎまで処理を終えたが、第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎで算出された俯瞰スコアの中に閾値以上のものが１つもなかった場合、異常なしとする検出結果を生成する。
【００５２】
異常ありの検出結果には、判定の根拠とした第ｎ階層の俯瞰スコアやそれ以前の階層の俯瞰スコアを含めるようにしても良いし、異常と判定した各階層の俯瞰スコアに対応するログデータの全て或いは閾値以上の異常スコアを持つログデータを異常データとして含めるようにしても良い。このように、異常スコアの大小のみではなく、例えば、どの週のどの日に異常だった、などといった複数の俯瞰スコアの情報を検出結果に含めて出力することにより、どのような異常だったかがわかり易くなる、つまり可読性を高めることができる。
【００５３】
次に、図７のフローチャートを参照して、本実施の形態の動作を説明する。
【００５４】
最初に、データ処理装置１０１のデータ入力部１２１は、入力装置１０２から異常検出対象となる一連のログデータを入力し、ログデータ記憶部１０４に記憶する（図７のステップＳ１０１）。ログデータ記憶部１０４に記憶されるログデータは、図２で示したように、ログＩＤ、日時情報、ユーザ名およびイベントデータで構成されている。
【００５５】
次に、データ別異常スコア計算部１２２は、分布学習部１３１により、ログデータ記憶部１０４に記憶されたログデータにおけるイベントデータの発生確率分布を生成して確率分布記憶部１０５に記憶し、次に、異常スコア計算部１３２により、上記生成した発生確率分布に基づいて個々のログデータの異常の程度を表す異常スコアを生成し、データ別異常スコア記憶部１０６に記憶する（ステップＳ１０２）。データ別異常スコア記憶部１０６に記憶される異常スコアは、図３で示したように、その異常スコアがどのログデータのものであるかを示すログＩＤが付加されている。
【００５６】
次に、異常検出制御部１２４は、制御変数ｉを１に初期化し（ステップＳ１０３）、制御変数ｉの値１に対応する第１階層の分類基準別俯瞰スコア計算部１２３−１による処理を行う（ステップＳ１０４）。具体的には、まず、第１階層の分類基準別俯瞰スコア計算部１２３−１は、条件付分布学習部１４１により、データ別異常スコア記憶部１０６に記憶されたデータ別の異常スコアを、第１階層の分類基準に基づいて分類し、図４に示したように各グループ毎の異常スコアを第１階層グループ記憶部１０７−１に記憶する。次に、同じく条件付分布学習部１４１により、上記生成した各グループ毎に、そのグループに属する一連の異常スコアの条件付確率分布を計算して、図５に示したように第１階層条件付分布記憶部１０８−１に記憶する。次に、俯瞰スコア計算部１４２により、上記生成した各グループ毎に、その条件付確率分布から大域的な異常度を示す俯瞰スコアを計算し、図６に示したように第１階層俯瞰スコア記憶部１０９−１に記憶する。
【００５７】
次に、異常検出制御部１２４は、制御変数ｉの値１に対応する第１階層の俯瞰スコア記憶部１０９−１から各グループの俯瞰スコアを読み出し、閾値以上の俯瞰スコアが存在するか否かを判定する（ステップＳ１０５）。閾値以上の俯瞰スコアを持つグループが１つも存在しなければ（ステップＳ１０６でＮＯ）、異常検出制御部１２４は、異常なしの検出結果を生成し、検出結果記憶部１１０に記憶すると共に表示装置１０３に表示する（ステップＳ１０７）。
【００５８】
閾値以上の俯瞰スコアを持つグループが１つ以上存在した場合（ステップＳ１０６でＹＥＳ）、異常検出制御部１２４は、制御変数ｉを＋１して２とし（ステップＳ１０８）、ｉの値が階層数ｎを超えていないことを確認して（ステップＳ１０９）、制御変数ｉの値２に対応する第２階層の分類基準別俯瞰スコア計算部１２３−２による処理を行う（ステップＳ１０４）。具体的には、まず、第２階層の分類基準別俯瞰スコア計算部１２３−２は、条件付分布学習部１５１により、第１階層グループ記憶部１０７−１に記憶されたグループのうち、その俯瞰スコアが閾値以上であったグループについてのみ、そのグループに属する異常スコアを、第２階層の分類基準に基づいて分類し、図４に示したように各グループ毎の異常スコアを第２階層グループ記憶部１０７−２に記憶する。次に、同じく条件付分布学習部１５１により、上記生成した各グループ毎に、そのグループに属する一連の異常スコアの条件付確率分布を計算して、図５に示したように第２階層条件付分布記憶部１０８−２に記憶する。次に、俯瞰スコア計算部１５２により、上記生成した各グループ毎に、その条件付確率分布から大域的な異常度を示す俯瞰スコアを計算し、図６に示したように第２階層俯瞰スコア記憶部１０９−２に記憶する。
【００５９】
次に、異常検出制御部１２４は、制御変数ｉの値２に対応する第２階層の俯瞰スコア記憶部１０９−２から各グループの俯瞰スコアを読み出し、閾値以上の俯瞰スコアが存在するか否かを判定し（ステップＳ１０５）、その判定結果に応じて、異常なしの検出結果を生成して図７の処理を終了するか、さらに下位の階層の異常検出へと進むかを制御する。
【００６０】
こうして、第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎまで処理が進み、その処理が完了すると、異常検出制御部１２４は、制御変数ｉの値ｎに対応する第ｎ階層の俯瞰スコア記憶部１０９−ｎから各グループの俯瞰スコアを読み出し、閾値以上の俯瞰スコアが存在するか否かを判定する（ステップＳ１０５）。そして、何れかのグループの俯瞰スコアが閾値以上であれば、異常ありの検出結果を生成し、検出結果記憶部１１０に記憶すると同時に表示装置１０３に表示し（ステップＳ１１０）、図７の処理を終える。
【００６１】
次に本実施の形態の効果を説明する。
【００６２】
本実施の形態によれば、意図的な異常を精度良く検出することができる。その理由は次の通りである。俯瞰スコアが高いことは通常のパターンから外れた異常な行動が特定の分類基準値（つまり、特定のデータ属性）のグループに集中していることを表す。つまり、俯瞰スコアが高いことは突発的に例外的な行動が現れたのではなく意図的に例外的な行動が連続して行われた可能性が高いことに対応する。このため、異常スコア単体のみから異常を検出するよりも、異常スコアから導出した俯瞰スコアにより異常を検出する方が、意図的な異常を精度良く検出できることになる。
【００６３】
本実施の形態によれば、意図的な異常をより精度良く検出することができる。その理由は、本実施の形態においては、下位の階層にいくほど分類基準を定める条件が厳しくなるためである。例えば、分類基準「週」で分類した或る週の俯瞰スコアが高い場合に比べて、その週における或る日を分類基準とする或る日の俯瞰スコアが高い方が、より意図的に例外的な行動が連続して行われた可能性が高くなり、さらに、その日におけるユーザ名で分類した或るユーザの俯瞰スコアが高ければ、より一層、突発的に例外的な行動が現れた可能性が低くなり、意図的に例外的な行動が行われた可能性が高くなる。この結果、単一の分類基準による俯瞰スコアを用いるよりも、階層化された分類基準により俯瞰スコアを用いた方が、異常検出の精度を向上することができる。
【００６４】
本実施の形態によれば、意図的な異常を無駄なく効率よく検出することができる。その理由は、階層的異常検出手順を用いているためである。具体的には、第２階層の分類基準別俯瞰スコア計算部１２３−２から最後の第ｎ階層の分類基準別俯瞰スコア計算部１２３−ｎは、一つ上の階層の分類基準別俯瞰スコア計算部で生成されたグループのうち、算出された俯瞰スコアが予め設定された閾値以上のグループについてのみ、そのグループを当該階層に対応する分類基準でさらに細かく分類し、この分類して生成されたグループ毎の条件付確率分布と俯瞰スコアとを生成するためである。
【００６５】
以上の説明では、具体的な階層として、「週」、「週と日の組み合わせ」、「週と日とユーザ名との組み合わせ」の３階層を例示したが、本発明は３階層に限定されることなく、「ユーザ名」と「ユーザ名と日の組み合わせ」の如き２階層や、「週」、「週と日の組み合わせ」、「週と日とユーザ名との組み合わせ」、「週と日とユーザ名とファイル名の組み合わせ」の如き４階層以上の階層への適用が可能である。また、分類基準も、週、日、ユーザ名に限定されず、ログデータを複数のグループに分類できる基準であれば、「会社」、「会社と部署の組み合わせ」、「会社と部署とユーザ名の組み合わせ」など、任意の分類基準を用いることが可能である。
【００６６】
［第２の実施の形態］
図８を参照すると、本発明の第２の実施の形態に係る異常検出装置２００は、複数の分類基準に階層構造を持たせないようにした点で図１に示した第１の実施の形態に係る異常検出装置１００と相違する。この相違に応じて、本実施の形態に係る異常検出装置２００は、第１の実施の形態に係る異常検出装置１００と比較して、第１〜第ｎ階層グループ記憶部１０７−１〜１０７−ｎの代わりに第１〜第ｍグループ記憶部２０７−１〜２０７−ｍを、第１〜第ｎ階層条件分布記憶部１０８−１〜１０８−ｎの代わりに第１〜第ｍ条件付分布記憶部２０８−１〜２０８−ｍを、第１〜第ｎ階層俯瞰スコア記憶部１０９−１〜１０９−ｎの代わりに第１〜第ｍ俯瞰スコア記憶部２０９−１〜２０９−ｍを備え、また、第１〜第ｎ分類基準別俯瞰スコア計算部１２３−１〜１２３−ｎの代わりに第１〜第ｍ分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍを、異常検出制御部１２４の代わりに異常検出制御部２２４を備えている。
【００６７】
第１〜第ｍ分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍは、１以上のデータ属性の組み合わせによるそれぞれ異なるｍ種類の分類基準に対応して設けられている。本実施の形態では、ｍ種類の分類基準の間に階層関係はなく、それぞれ独立している。例えば、第１分類基準別俯瞰スコア計算部２２３−１に対応する第１分類基準は例えば「日」であり、第２分類基準別俯瞰スコア計算部２２３−２に対応する第２分類基準は例えば「ユーザ名」であり、…、第ｍ分類基準別俯瞰スコア計算部２２３−３に対応する第ｍ分類基準は例えば「ファイル名」である。
【００６８】
第１分類基準別俯瞰スコア計算部２２３−１は、ログデータを第１分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第１分類基準別俯瞰スコア計算部２２３−１は、条件付分布学習部２４１と俯瞰スコア計算部２４２とで構成される。
【００６９】
条件付分布学習部２４１は、第１分類基準に従って、データ別異常スコア記憶部１０６に記憶された異常スコアを分類し、各グループ毎に分類基準値を付加して分類結果を第１グループ記憶部２０７−１に記憶し、次いで、第１グループ記憶部２０７−１に記憶した各グループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布を学習し、学習した条件付確率分布を第１条件付分布記憶部２０８−１に記憶する。
【００７０】
例えば、第１分類基準が「日」の場合、条件付分布学習部２４１は、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータの日時情報を取得し、その日時情報から判明する日単位で異常スコアを分類し、各グループがどの日に対応するかを示す分類基準値を付加して、第１グループ記憶部２０７−１に記憶する。次に、条件付分布学習部２４１は、各日毎の異常スコアから、日毎の異常スコアの確率分布p(S|日)を学習し、第１条件付分布記憶部２０８−１に記憶する。
【００７１】
俯瞰スコア計算部２４２は、第１条件付分布記憶部２０８−１に記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布を読み出し、この条件付確率分布から前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第１俯瞰スコア記憶部２０９−１に記憶する。例えば、第１分類基準が「日」の場合、俯瞰スコア計算部２４２は、日毎の異常度を表す俯瞰スコアを算出する。
【００７２】
第２分類基準別俯瞰スコア計算部２２３−２は、ログデータを第２分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第２分類基準別俯瞰スコア計算部２２３−２は、条件付分布学習部２５１と俯瞰スコア計算部２５２とで構成される。
【００７３】
条件付分布学習部２５１は、第２分類基準に従って、データ別異常スコア記憶部１０６に記憶された異常スコアを分類し、各グループ毎に分類基準値を付加して分類結果を第２グループ記憶部２０７−２に記憶し、次いで、第２グループ記憶部２０７−２に記憶した各グループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布を学習し、学習した条件付確率分布を第２条件付分布記憶部２０８−２に記憶する。
【００７４】
例えば、第２分類基準が「ユーザ名」の場合、条件付分布学習部２５１は、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータのユーザ名を取得し、そのユーザ名単位で異常スコアを分類し、各グループがどのユーザに対応するかを示す分類基準値を付加して、第２グループ記憶部２０７−２に記憶する。次に、条件付分布学習部２５１は、各ユーザ毎の異常スコアから、ユーザ毎の異常スコアの確率分布p(S|ユーザ名)を学習し、第２条件付分布記憶部２０８−２に記憶する。
【００７５】
俯瞰スコア計算部２５２は、第２条件付分布記憶部２０８−２に記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布を読み出し、この条件付確率分布から前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第２俯瞰スコア記憶部２０９−２に記憶する。例えば、第２分類基準が「ユーザ名」の場合、俯瞰スコア計算部２５２は、ユーザ毎の異常度を表す俯瞰スコアを算出する。
【００７６】
第ｍ分類基準別俯瞰スコア計算部２２３−ｍは、ログデータを第ｍ分類基準に従って分類したグループ毎に、当該グループに属するログデータについて異常スコア計算部１３２で算出された異常スコアの条件付確率分布を学習し、この学習した条件付確率分布から俯瞰スコアを算出する機能を有する。この第ｍ分類基準別俯瞰スコア計算部２２３−ｍは、条件付分布学習部２６１と俯瞰スコア計算部２６２とで構成される。
【００７７】
条件付分布学習部２６１は、第ｍ分類基準に従って、データ別異常スコア記憶部１０６に記憶された異常スコアを分類し、各グループ毎に分類基準値を付加して分類結果を第ｍグループ記憶部２０７−ｍに記憶し、次いで、第ｍグループ記憶部２０７−ｍに記憶した各グループ毎に、そのグループに属する異常スコアを読み出して、異常スコアの条件付確率分布を学習し、学習した条件付確率分布を第ｍ条件付分布記憶部２０８−２に記憶する。
【００７８】
例えば、第ｍ分類基準が「ファイル名」の場合、条件付分布学習部２５１は、異常スコアに付加されたログＩＤをキーにログデータ記憶部１０４を検索して、各異常スコアに対応するログデータのイベントデータ中からファイル名を取得し、そのファイル名単位で異常スコアを分類し、各グループがどのファイル名に対応するかを示す分類基準値を付加して、第ｍグループ記憶部２０７−ｍに記憶する。次に、条件付分布学習部２６１は、各ファイル毎の異常スコアから、ファイル毎の異常スコアの確率分布p(S|ファイル名)を学習し、第ｍ条件付分布記憶部２０８−ｍに記憶する。
【００７９】
俯瞰スコア計算部２６２は、第ｍ条件付分布記憶部２０８−ｍに記憶された各グループ毎に、そのグループの異常スコアの条件付確率分布を読み出し、この条件付確率分布から前述した式（３）または式（４）を用いて、異常の程度を表す俯瞰スコアを算出して第ｍ俯瞰スコア記憶部２０９−ｍに記憶する。例えば、第ｍ分類基準が「ファイル名」の場合、俯瞰スコア計算部２６２は、ファイル毎の異常度を表す俯瞰スコアを算出する。
【００８０】
異常検出制御部２２４は、第１〜第ｍの俯瞰スコア記憶部２０９−１〜２０９−ｍに記憶された俯瞰スコアと、データ別異常スコア記憶部１０６に記憶されたログデータ毎の異常スコアとを入力として、異常を検出し、検出結果を検出結果記憶部１１０に格納すると同時に表示装置１０３に表示する機能を有する。
【００８１】
一定量のログデータについてデータ別異常スコアが算出されている場合の異常検出制御部２２４による異常検出手順として、本実施の形態では、以下のような手順を用いる（この手順を非階層的異常検出手順と呼ぶ）。
【００８２】
＜非階層的異常検出手順＞
手順１：第１〜第ｍの分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍを一斉に起動し、データ別異常スコア記憶部１０６に記憶された異常スコアを、第１〜第ｍの分類基準に従って分類し、グループ毎の条件付確率分布と俯瞰スコアとを生成する。
【００８３】
手順２：第１〜第ｍの分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍの処理によって生成された俯瞰スコアのうち予め設定された閾値以上の俯瞰スコアが１つでも存在すれば異常ありとする検出結果を生成する。他方、第１〜第ｍの分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍで算出された俯瞰スコアの中に閾値以上のものが１つもなければ、異常なしとする検出結果を生成する。
【００８４】
異常ありの検出結果には、判定の根拠とした俯瞰スコアを含めるようにしても良いし、異常と判定した俯瞰スコアに対応するログデータの全て或いは閾値以上の異常スコアを持つログデータを異常データとして含めるようにしても良い。
【００８５】
次に、図９のフローチャートを参照して、本実施の形態の動作を説明する。
【００８６】
最初に、データ処理装置１０１のデータ入力部１２１は、入力装置１０２から異常検出対象となる一連のログデータを入力し、ログデータ記憶部１０４に記憶する（図９のステップＳ２０１）。ログデータ記憶部１０４に記憶されるログデータは、図２で示したように、ログＩＤ、日時情報、ユーザ名およびイベントデータで構成されている。
【００８７】
次に、データ別異常スコア計算部１２２は、分布学習部１３１により、ログデータ記憶部１０４に記憶されたログデータにおけるイベントデータの発生確率分布を生成して確率分布記憶部１０５に記憶し、次に、異常スコア計算部１３２により、上記生成した発生確率分布に基づいて個々のログデータの異常の程度を表す異常スコアを生成し、データ別異常スコア記憶部１０６に記憶する（ステップＳ２０２）。データ別異常スコア記憶部１０６に記憶される異常スコアは、図３で示したように、その異常スコアがどのログデータのものであるかを示すログＩＤが付加されている。
【００８８】
次に、異常検出制御部２２４は、第１〜第ｍの分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍによる処理を一斉に行う（ステップＳ２０３）。具体的には、第１〜第ｍの分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍは、条件付分布学習部２４１〜２６１により、データ別異常スコア記憶部１０６に記憶されたデータ別の異常スコアを、第１〜第ｍ分類基準に基づいて分類し、図４と同様に各グループ毎の異常スコアを第１〜第ｍグループ記憶部２０７−１〜２０７−ｍに記憶する。次に、同じく条件付分布学習部２４１〜２６１により、上記生成した各グループ毎に、そのグループに属する一連の異常スコアの条件付確率分布を計算して、図５と同様に第１〜第ｍの条件付分布記憶部２０８−１〜２０８−ｍに記憶する。次に、俯瞰スコア計算部２４２〜２６２により、上記生成した各グループ毎に、その条件付確率分布から大域的な異常度を示す俯瞰スコアを計算し、図６と同様に第１〜第ｍの俯瞰スコア記憶部２０９−１〜２０９−ｍに記憶する。
【００８９】
次に、異常検出制御部２２４は、第１〜第ｍの俯瞰スコア記憶部２０９−１〜２０９−ｍから各グループの俯瞰スコアを読み出し、閾値以上の俯瞰スコアが存在するか否かを判定する（ステップＳ２０４）。閾値以上の俯瞰スコアを持つグループが１つも存在しなければ（ステップＳ２０５でＮＯ）、異常検出制御部２２４は、異常なしの検出結果を生成し、検出結果記憶部１１０に記憶すると共に表示装置１０３に表示する（ステップＳ２０６）。他方、閾値以上の俯瞰スコアを持つグループが１つ以上存在した場合（ステップＳ２０５でＹＥＳ）、異常検出制御部２２４は、異常ありの検出結果を生成し、検出結果記憶部１１０に記憶すると共に表示装置１０３に表示する（ステップＳ２０７）。
【００９０】
次に本実施の形態の効果を説明する。
【００９１】
本実施の形態によれば、意図的な異常を精度良く検出することができる。その理由は次の通りである。俯瞰スコアが高いことは通常のパターンから外れた異常な行動が特定の分類基準値のグループに集中していることを表す。つまり、俯瞰スコアが高いことは突発的に例外的な行動が現れたのではなく意図的に例外的な行動が連続して行われた可能性が高いことに対応する。このため、異常スコア単体のみから異常を検出するよりも、異常スコアから導出した俯瞰スコアにより異常を検出する方が、意図的な異常をより精度良く検出できることになる。
【００９２】
本実施の形態によれば、意図的な異常をより精度良く検出することができる。その理由は、本実施の形態においては、それぞれ異なる複数の分類基準に従って分類した各グループ毎に異常の程度を表す俯瞰スコアを算出し、その何れかのグループの俯瞰スコアが閾値以上かどうかによって異常の検出を行うためである。例えば、意図的な不正行動が行われた場合、その行為者が一人のユーザによるものであれば、分類基準を「ユーザ名」とする俯瞰スコア計算部で計算される俯瞰スコアが閾値以上となって検出できる。他方、発覚を防ぐために複数のユーザが分担して不正な行動をとった場合、一人一人のユーザが行った不正行動の数が少ないと、分類基準「ユーザ名」の俯瞰スコア計算部で計算される俯瞰スコアは閾値以上にならない可能性がある。このとき、同じ日に各ユーザが一斉に不正な行動を取っていれば、分類基準「日」の俯瞰スコア計算部で計算される俯瞰スコアが閾値以上となって検出でき、また、同じ対象ファイルに対して日を変えて複数のユーザが不正な行動を取った場合には、分類基準「ファイル」の俯瞰スコア計算部で計算される俯瞰スコアが閾値以上となって検出できる。この結果、単一の分類基準による俯瞰スコアを用いるよりも、複数の分類基準により俯瞰スコアを用いた方が、検出漏れが少なくなって異常検出の精度を向上することができる。
【００９３】
以上の説明では、具体的な分類基準として、「日」、「ユーザ名」、「ファイル名」の３つを例示したが、本発明はこれらの分類基準に限定されることなく、ログデータをそのデータ属性に基づいて複数のグループに分類できる基準であれば、任意の分類基準を用いることが可能である。
【００９４】
以上本発明の実施の形態について説明したが、本発明は以上の実施の形態にのみ限定されず、その他各種の付加変更が可能である。例えば、第１の実施の形態と第２の実施の形態とを組み合わせて、お互いの分類基準に階層関係のない２つ以上の分類基準別俯瞰スコア計算部を設けると共に、そのうちの少なくとも１つの分類基準別俯瞰スコア計算部を最上位階層として、その下位階層に上下間で分類基準を階層化した１つ以上の階層分類別俯瞰スコア計算部を設けるようにしても良い。また、本発明の異常検出装置は、その有する機能をハードウェア的に実現することは勿論、コンピュータとプログラムとで実現することができる。プログラムは、磁気ディスクや半導体メモリ等のコンピュータ可読記録媒体に記録されて提供され、コンピュータの立ち上げ時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータを前述した第１の実施の形態におけるデータ別異常スコア計算部１２２、第１〜第ｎ階層分類基準別俯瞰スコア計算部１２３−１〜１２３−ｎおよび異常検出制御部１２４、または、第２の実施の形態におけるデータ別異常スコア計算部１２２、第１〜第ｎ分類基準別俯瞰スコア計算部２２３−１〜２２３−ｍおよび異常検出制御部２２４として機能させる。
【産業上の利用可能性】
【００９５】
本発明の利用法として、コンピュータセキュリティへの応用が考えられる。応用の目的は、情報漏洩の抑止や不正操作の検出等である。具体的な応用例としては以下が挙げられる。
（1）Ｗｅｂ攻撃の検出
通常と異なるアクセスを検出することで、不正なアクセスを検出できる。俯瞰スコアを用いて大域的な異常を検出することで、単一のアクセスの異常度のみを見ていては検出が困難な不正アクセスを検出できる。例えば、単一のアクセス自体はそれほど異常でもないが、同一のアクセスが時間的に密集して続く不正なアクセス（SQLインジェクション攻撃など）を検出することができる。
【００９６】
（2）不審行動検出
ユーザの行動履歴（ＰＣの操作ログ、ファイルサーバへのアクセスログ等）から通常と異なる行動を検出することで、不審行動を検出できる。俯瞰スコアを用いて大域的な異常を見ることで、単一の行動の異常度のみを見ていては検出が困難な不審行動を検出できる。例えば、同一ユーザがログインの失敗を繰り返している場合が挙げられる。
【図面の簡単な説明】
【００９７】
【図１】本発明の第１の実施の形態のブロック図である。
【図２】本発明の第１の実施の形態におけるログデータ記憶部に記憶されるログデータのフォーマット例を示す図である。
【図３】本発明の第１の実施の形態におけるデータ別異常スコア記憶部の記憶構造の説明図である。
【図４】本発明の第１の実施の形態における第ｉ階層グループ記憶部の記憶構造の説明図である。
【図５】本発明の第１の実施の形態における第ｉ階層条件付分布記憶部の記憶構造の説明図である。
【図６】本発明の第１の実施の形態における第ｉ階層俯瞰スコア記憶部の記憶構造の説明図である。
【図７】本発明の第１の実施の形態の処理の流れを示すフローチャートである。
【図８】本発明の第２の実施の形態のブロック図である。
【図９】本発明の第２の実施の形態の処理の流れを示すフローチャートである。
【符号の説明】
【００９８】
１００、２００…異常検出装置
１０１…データ処理装置
１０２…入力装置
１０３…表示装置
１０４…ログデータ記憶部
１０５…確率分布記憶部
１０６…データ別異常スコア記憶部
１０７−１〜１０７−ｎ…第１〜第ｎ階層グループ記憶部
１０８−１〜１０８−ｎ…第１〜第ｎ階層条件付分布記憶部
１０９−１〜１０９−ｎ…第１〜第ｎ階層俯瞰スコア記憶部
１１０…検出結果記憶部
１２１…データ入力部
１２２…データ別異常スコア計算部
１２３−１〜１２３−ｎ…第１〜第ｎ階層分類基準別俯瞰スコア計算部
１２４…異常検出制御部
１３１…分布学習部
１３２…異常スコア計算部
１４１、１５１、１６１…条件付分布学習部
１４２、１５２、１６２…俯瞰スコア計算部
２０７−１〜２０７−ｍ…第１〜第ｍグループ記憶部
２０８−１〜２０８−ｍ…第１〜第ｍ条件付分布記憶部
２０９−１〜２０９−ｍ…第１〜第ｍ俯瞰スコア記憶部
２２３−１〜２２３−ｍ…第１〜第ｍ分類基準別俯瞰スコア計算部
２２４…異常検出制御部
２４１、２５１、２６１…条件付分布学習部
２４２、２５２、２６２…俯瞰スコア計算部
【図１】
2010092203.tif 000003
【図２】
2010092203.tif 000004
【図３】
2010092203.tif 000005
【図４】
2010092203.tif 000006
【図５】
2010092203.tif 000007
【図６】
2010092203.tif 000008
【図７】
2010092203.tif 000009
【図８】
2010092203.tif 000010
【図９】
2010092203.tif 000011