(57)【要約】本発明の一態様にかかる異常検知装置（１）は、複数のデータを複数のグループに分割するための大域木構造を作成する大域木構造作成部（１１）と、複数のグループの各々に分割されたデータを複数のグループ毎に更に分割するための局所木構造を作成する局所木構造作成部（１２）と、局所木構造の根ノードから葉ノードに到達するまでの深さを用いて、複数のデータの異常の程度を示すスコアを算出するスコア算出部（１３）と、を備える。
2020170425.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータを複数のグループに分割するための第１の二分木構造を作成する第１の二分木構造作成部と、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成する第２の二分木構造作成部と、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出するスコア算出部と、を備える、
異常検知装置。
【請求項２】
前記スコア算出部は、
前記第１の二分木構造作成部で作成された前記第１の二分木構造を用いて前記複数のデータを前記複数のグループに分割する第１のデータ分割部と、
前記第２の二分木構造作成部で作成された前記第２の二分木構造を用いて、前記複数のグループの各々に分割された前記データを前記複数のグループ毎に更に分割する第２のデータ分割部と、を更に備え、
前記第２のデータ分割部で分割されたデータの根ノードから葉ノードに到達するまでの深さをスコアとして算出する、
請求項１に記載の異常検知装置。
【請求項３】
前記第１の二分木構造作成部は、前記各々のグループに属するデータの数が所定の閾値以上となるように前記複数のデータを前記複数のグループに分割して前記第１の二分木構造を作成する、請求項１または２に記載の異常検知装置。
【請求項４】
前記第１の二分木構造の葉ノードが前記第２の二分木構造の根ノードに対応している、請求項１〜３のいずれか一項に記載の異常検知装置。
【請求項５】
前記各々のグループに分割されたデータから同じ数のデータを抽出するサンプリング部を更に備え、
前記第２の二分木構造作成部は、前記サンプリング部で抽出された前記各々のグループに属する同じ数のデータに対して前記第２の二分木構造を作成する、請求項１〜４のいずれか一項に記載の異常検知装置。
【請求項６】
前記第１の二分木構造作成部は、前記複数のデータの全てを用いて前記第１の二分木構造を作成する、請求項１〜５のいずれか一項に記載の異常検知装置。
【請求項７】
前記複数のデータは、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータであり、
前記第１の二分木構造作成部は、前記少数派のデータ群が前記第１の二分木構造の葉ノードである所定のグループに含まれるように前記第１の二分木構造を作成する、
請求項１〜６のいずれか一項に記載の異常検知装置。
【請求項８】
前記異常検知装置は、前記スコア算出部を複数備えており、
前記複数のスコア算出部で算出された前記複数のデータの異常の程度を示すスコアの統計量を異常を示すスコアとする、
請求項１〜７のいずれか一項に記載の異常検知装置。
【請求項９】
複数のデータを複数のグループに分割するための第１の二分木構造を作成し、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する、
異常検知方法。
【請求項１０】
複数のデータを複数のグループに分割するための第１の二分木構造を作成し、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する、異常検知処理をコンピュータに実行させるためのプログラムが格納された非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は異常検知装置、異常検知方法、及びコンピュータ可読媒体に関し、特にデータの異常の程度を示すスコアを算出することが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体に関する。
【背景技術】
【０００２】
近年の情報化社会の発達により、サイバーセキュリティの重要性が高まってきている。例えば、サイバーセキュリティの分野では、データの異常を検知するために、通常とは異なるデータ（異常値や外れ値）を発見することが重要である。このような外れ値を検知するためのアルゴリズムの一つとして、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔが用いられている。【０００３】
特許文献１には、車載ネットワーク等で用いられる異常検知技術が開示されている。特許文献１に開示されている技術では、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔを用いてネットワークの異常を検出している。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１８−０９２６１３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、複数のデータを用いて二分木構造（分離木構造）を作成し、この二分木構造を用いて複数のデータを分割していくアルゴリズムである。Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、根ノードから葉ノードに到達するまでのパス長をスコアとしており、このスコアが小さいほど（深さが浅いほど）、外れ値（異常データ）である可能性が高いと判断している。【０００６】
しかしながら、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを用いた場合は、データの分布に偏りがあると、期待した結果が得られないという問題がある。すなわち、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、分割するデータの特徴（パラメータ）と閾値とをランダムに決定して二分木構造を作成している。このため、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータの場合は、少数派のデータ群に含まれるデータを外れ値と判断する傾向があり、この結果、期待した通りにデータの異常を検知することができないという問題がある。【０００７】
上記課題に鑑み本発明の目的は、データの分布に偏りがある場合であっても適切に異常を検知することが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体を提供することである。
【課題を解決するための手段】
【０００８】
本発明の一態様にかかる異常検知装置は、複数のデータを複数のグループに分割するための第１の二分木構造を作成する第１の二分木構造作成部と、前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成する第２の二分木構造作成部と、前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出するスコア算出部と、を備える。【０００９】
本発明の一態様にかかる異常検知方法は、複数のデータを複数のグループに分割するための第１の二分木構造を作成し、前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する。【００１０】
本発明の一態様にかかるコンピュータ可読媒体は、複数のデータを複数のグループに分割するための第１の二分木構造を作成し、前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する、異常検知処理をコンピュータに実行させるためのプログラムが格納された非一時的なコンピュータ可読媒体である。
【発明の効果】
【００１１】
本発明により、データの分布に偏りがある場合であっても適切に異常を検知することが可能な異常検知装置、異常検知方法、及びコンピュータ可読媒体を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１にかかる異常検知装置を説明するためのブロック図である。
【図２】実施の形態１にかかる異常検知装置が備えるスコア算出部を示すブロック図である。
【図３】実施の形態１にかかる異常検知装置の動作を説明するためのフローチャートである。
【図４】実施の形態１にかかる異常検知装置を用いて作成した大域木構造を示す図である。
【図５】実施の形態１にかかる異常検知装置を用いて作成した大域木構造、及び局所木構造を示す図である。
【図６】データの分布に偏りがある場合を示す図である。
【図７】実施の形態２にかかる異常検知装置を説明するためのブロック図である。
【図８】プロキシログデータの一例を示す表である。
【図９】特徴データの一例を示す表である。
【図１０】比較例にかかる異常検知動作を説明するための図である。
【図１１】実施の形態２にかかる異常検知装置の異常検知動作を説明するための図である。
【図１２】実施の形態２にかかる異常検知装置の異常検知動作を説明するための図である。
【図１３】本発明にかかる異常検知処理用プログラムを実行するためのコンピュータを示すブロック図である。
【発明を実施するための形態】
【００１３】
＜実施の形態１＞
以下、本発明の実施の形態１について説明する。
図１は、実施の形態１にかかる異常検知装置を説明するためのブロック図である。図１に示すように、異常検知装置１は、大域木構造作成部（第１の二分木構造作成部）１１、局所木構造作成部（第２の二分木構造作成部）１２、及びスコア算出部１３を備える。図２に示すように、スコア算出部１３は、大域分割部（第１のデータ分割部）２１および局所分割部（第２のデータ分割部）２２を備える。本実施の形態にかかる異常検知装置１は、入力された複数のデータの中から異常を示すデータを検知するための異常検知装置である。
【００１４】
大域木構造作成部１１は、複数のデータを複数のグループに分割するための大域木構造（第１の二分木構造）を作成する。大域木構造作成部１１で作成された大域木構造は、スコア算出部１３の大域分割部２１が複数のデータを複数のグループに分割する際に用いられる。
【００１５】
大域木構造作成部１１は、各々のグループに属するデータの数が所定の閾値以上となるように複数のデータを複数のグループに分割して大域木構造を作成する。このとき、大域木構造作成部１１は、複数のデータの全てを用いて大域木構造を作成してもよい。
【００１６】
すなわち、大域木構造作成部１１は、複数のデータの全てを入力として、分割の次元（パラメータ）および閾値をランダムに選択して二分木構造を作成する。このとき作成した二分木構造の葉ノード（グループ）の数が指定した数になるまで、または、葉ノード（グループ）の深さが所定の深さになるまで分割を行ってもよい。
【００１７】
局所木構造作成部１２は、大域木構造作成部１１において複数のグループの各々に分割されたデータを、複数のグループ毎に更に分割するための局所木構造（第２の二分木構造）を作成する。ここで、大域木構造の各々の葉ノード（各々のグループ）は、局所木構造の根ノードに対応している。局所木構造作成部１２で作成された局所木構造は、スコア算出部１３の局所分割部２２が、大域木構造の各々の葉ノード（各々のグループ）のデータを更に分割する際に用いられる。
【００１８】
局所木構造作成部１２は、グループ毎に抽出されたデータを入力として、分割の次元（パラメータ）および閾値をランダムに選択して、各々のグループ毎に二分木構造を作成する。なお、局所木構造作成部１２が作成する局所木構造については、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを用いた二分木構造の作成と同様である。また、局所木構造作成部１２は、各々のグループ毎にランダムに抽出した一部のデータを用いて、各々のグループ毎に局所木構造を作成してもよい。また、各々のグループ毎に同じ数のデータを抽出して局所木構造を作成してもよい。
【００１９】
スコア算出部１３は、局所木構造作成部１２で作成された局所木構造の根ノードから葉ノードに到達するまでの深さを用いて、複数のデータの異常の程度を示すスコアを算出する。
【００２０】
具体的に説明すると、スコア算出部１３が備える大域分割部２１（図２参照）は、入力された複数のデータを、大域木構造作成部１１で作成された大域木構造を用いて複数のグループに分割する。換言すると、大域分割部２１は、大域木構造作成部１１で作成された大域木構造を用いて複数のデータの各々が属するグループを決定する。
【００２１】
また、スコア算出部１３が備える局所分割部２２（図２参照）は、複数のグループの各々に分割されたデータを、局所木構造作成部１２で作成された局所木構造を用いてグループ毎に更に分割する。換言すると、局所分割部２２は、局所木構造作成部１２で作成された局所木構造を用いて、各々のグループに属するデータの葉ノードを決定する。
【００２２】
そして、スコア算出部１３は、局所分割部２２で分割されたデータの根ノードから葉ノードに到達するまでの深さをスコアとして算出する。すなわち、スコア算出部１３は、局所分割部２２で決定された各々のグループの葉ノードの深さを用いてスコアを算出する。このとき算出されたスコアは、各々のデータがどの程度の外れ値（異常値）を有するかを示す指標となる。
【００２３】
次に、本実施の形態にかかる異常検知装置１の動作について説明する。本実施の形態にかかる異常検知装置１は、まず、大域木構造作成部１１および局所木構造作成部１２を用いて二分木構造（大域木構造、及び局所木構造）を作成する。その後、作成した二分木構造（大域木構造、及び局所木構造）を用いて、入力データである複数のデータを分割する。そして、分割したデータの葉ノードまでの深さを用いてスコアを算出する。以下、本実施の形態にかかる異常検知装置１の動作について、図３に示すフローチャート、及び図４、図５を用いて具体的に説明する。
【００２４】
まず、大域木構造作成部１１は、複数のデータを複数のグループに分割するための大域木構造を作成する（図３のステップＳ１）。つまり、図４に示すように、複数のデータの全てを入力として、分割の次元（パラメータ）および閾値をランダムに選択して二分木構造を作成する。図４に示す例では、ノードＡ１１においてノードＡ２１とノードＡ２２に分岐している。ノードＡ２１は更にノードＡ３１とノードＡ３２に分岐している。ノードＡ３１は更にノードＡ４１とノードＡ４２に分岐している。各々のノードＡ１１、Ａ２１、Ａ３１には、データを分割するための次元（パラメータ）および閾値が設定してある。
【００２５】
大域木構造作成部１１は、大域木構造の葉ノード（グループ）の数が指定した数になるまで、または、葉ノード（グループ）の深さが所定の深さになるまで分割を行う。図４に示す例では、ノードＡ４１、Ａ４２、Ａ３２、Ａ２２が葉ノード（グループ）に対応している。よって、葉ノード（グループ）の数は４つである。また、葉ノードＡ４１、Ａ４２の深さは「３」、葉ノードＡ３２の深さは「２」、葉ノードＡ２２の深さは「１」であるので、大域木構造の葉ノードの最大深さは「３」となる。
【００２６】
このとき、大域木構造作成部１１は、各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２に属するデータの数が所定の閾値Ｎ以上（Ｎは２以上の自然数）となるように大域木構造を作成する。換言すると、各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２に属するデータの数が所定の閾値未満とならないように大域木構造を作成する。このようにすることで、各々の葉ノード（グループ）に属するデータのバランスを保つことができる。
【００２７】
また、大域木構造作成部１１は、大域木構造の葉ノードの最大深さに上限を設けてもよい。つまり、大域木構造の葉ノードの深さが所定の深さよりも深くならないようにしてもよい。このように葉ノードの最大深さに上限を設けることで、大域木構造の葉ノードの数が増加することを抑制することができる。
【００２８】
その後、図４に示す大域木構造の各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２からランダムにｎ個（ｎは２以上の自然数）の要素（データ）を抽出する。このとき、各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２から抽出するデータの数を同一にすることが好ましい。このように、各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２から抽出するデータの数を同一にした場合は、データ数の多い特定の葉ノード（グループ）においてスコアが大きくなることを抑制することができる。
【００２９】
その後、局所木構造作成部１２は、大域木構造の各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２から抽出されたデータを用いて、局所木構造を作成する（図３のステップＳ２）。ここで、図４に示す大域木構造の各々の葉ノード（グループ）Ａ４１、Ａ４２、Ａ３２、Ａ２２はそれぞれ、図５に示す局所木構造の根ノードＢ１１、Ｃ１１、Ｄ１１、Ｅ１１に対応している。
【００３０】
図５に示すように、局所木構造の根ノードＢ１１は、ノードＢ２１とノードＢ２２に分岐される。根ノードＣ１１は、ノードＣ２１とノードＣ２２に分岐される。ノードＣ２２は更に、ノードＣ３１とノードＣ３２に分岐される。根ノードＤ１１は、ノードＤ２１とノードＤ２２に分岐される。ノードＤ２２は更に、ノードＤ３１とノードＤ３２に分岐される。根ノードＥ１１は、ノードＥ２１とノードＥ２２に分岐される。ノードＥ２２は更に、ノードＥ３１とノードＥ３２に分岐される。ノードＥ３２は更に、ノードＥ４１とノードＥ４２に分岐される。局所木構造作成部１２は、このようにすることで局所木構造を作成することができる。
【００３１】
次に、スコア算出部１３は、作成した二分木構造（大域木構造、及び局所木構造：図４、図５参照）を用いてスコアを算出する（図３のステップＳ３）。具体的には、スコア算出部１３の大域分割部２１は、大域木構造作成部１１で作成された大域木構造（図４参照）を用いて、入力データの各々を複数のグループＡ４１、Ａ４２、Ａ３２、Ａ２２に分割する。換言すると、大域分割部２１は、大域木構造作成部１１で作成された大域木構造を用いて、複数の入力データの各々が属するグループＡ４１、Ａ４２、Ａ３２、Ａ２２を決定する。
【００３２】
その後、スコア算出部１３が備える局所分割部２２は、局所木構造作成部１２で作成された局所木構造（図５参照）を用いて、各々のグループＡ４１、Ａ４２、Ａ３２、Ａ２２（図５の根ノードＢ１１、Ｃ１１、Ｄ１１、Ｅ１１に対応）に属するデータを分割する。例えば、局所分割部２２は、根ノードＢ１１に属するデータをノードＢ２１またはノードＢ２２に分割する。例えば、局所分割部２２は、根ノードＣ１１に属するデータをノードＣ２１またはノードＣ２２に分割する。更に局所分割部２２は、ノードＣ２２に属するデータをノードＣ３１またはノードＣ３２に分割する。根ノードＤ１１に属するデータ、及び根ノードＥ１１に属するデータについても同様である。
【００３３】
このようにすることで、局所分割部２２は、各々のグループ（根ノードＢ１１、Ｃ１１、Ｄ１１、Ｅ１１）に属するデータの葉ノードを決定することができる。図５に示す例では、ノードＢ２１、Ｂ２２、Ｃ２１、Ｃ３１、Ｃ３２、Ｄ２１、Ｄ３１、Ｄ３２、Ｅ２１、Ｅ３１、Ｅ４１、Ｅ４２が葉ノードに対応している。なお、図５では各々の葉ノードの深さを数字で記載している。例えば、葉ノードＢ２１の深さは「１」である。
【００３４】
スコア算出部１３は、このようにして求めた葉ノードＢ２１、Ｂ２２、Ｃ２１、Ｃ３１、Ｃ３２、Ｄ２１、Ｄ３１、Ｄ３２、Ｅ２１、Ｅ３１、Ｅ４１、Ｅ４２の深さを用いてスコアを算出する。
【００３５】
Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、スコアの値が小さいほど（つまり、葉ノードまでの深さが浅いほど）外れ値である可能性が高い。よって、本実施の形態にかかる異常検知装置１では、例えば、スコア算出部１３で算出されたスコアが所定の値よりも小さい場合に、データが異常であると判断するようにしてもよい。
【００３６】
また、大域木構造作成部１１と局所木構造作成部１２とを用いて複数の木構造を作成するように構成してもよい。その場合、スコア算出部１３は、各々の木構造においてデータが到達する葉ノードの深さの平均値をスコアとする。例えば、２つの木構造Ａと木構造Ｂを用いる場合、あるデータの到達する葉ノードの深さがそれぞれＤＡとＤＢのとき、（ＤＡ＋ＤＢ）／２をそのデータのスコアとして採用することができる。
【００３７】
背景技術で説明したように、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムは、複数のデータを用いて二分木構造を作成し、この二分木構造を用いて複数のデータを分割していくアルゴリズムである。Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、根ノードから葉ノードに到達するまでのパス長をスコアとしており、このスコアが小さいほど（深さが浅いほど）、外れ値（異常データ）である可能性が高いと判断している。
【００３８】
しかしながら、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを用いた場合は、データの分布に偏りがあると、期待した結果が得られないという問題があった。すなわち、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムでは、分割するデータの特徴（パラメータ）と閾値とをランダムに決定して二分木構造を作成している。このため、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータの場合は、少数派のデータ群に含まれるデータを外れ値と判断する傾向があり、この結果、期待した通りにデータの異常を検知することができないという問題があった。
【００３９】
例えば、図６に示すデータ群は複数のデータ１２１、１２２を備えるが、これらの複数のデータは、多数派のデータ群１１１と少数派のデータ群１１２とを備える偏りのあるデータとなっている。このようなデータ群にＩｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを適用すると、少数派のデータ群１１２に含まれるデータ１２２を外れ値と判断する傾向が高くなる。このため、偏りのあるデータにＩｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを適用した場合は、期待した通りにデータの異常を検知することができないという問題があった。
【００４０】
そこで本実施の形態にかかる異常検知装置１は、大域木構造作成部１１において、複数のデータを複数のグループに分割するための大域木構造を作成している。また、局所木構造作成部１２は、大域木構造作成部１１で分割された各々のグループに属するデータを更に分割するための局所木構造を作成している。そして、スコア算出部１３は、局所木構造作成部１２で作成された局所木構造の根ノードから葉ノードに到達するまでの深さを用いて、複数のデータの異常の程度を示すスコアを算出している。
【００４１】
すなわち、本実施の形態にかかる異常検知装置１では、局所木構造作成部１２において局所木構造を作成する前に、予め大域木構造作成部１１において大域木構造を作成している。そして、大域木構造の葉ノード（グループ）に属するデータに対して、局所木構造を作成している。このように、大域木構造を予め作成することで、データの分布に偏りがある場合であっても、偏りのあるデータ群を大域木構造の各々のグループ（葉ノード）に所属させることができる。具体的には、図６に示すような少数派のデータ群１１２に含まれるデータ１２２を大域木構造のグループ（葉ノード）に所属させることができる。したがって、このような少数派のデータ群１１２に対して適切に局所木構造を作成することができる。よって、データの分布に偏りがある場合であっても適切に異常を検知することができる。
【００４２】
以上で説明した本実施の形態にかかる発明により、データの分布に偏りがある場合であっても適切に異常を検知することが可能な異常検知装置、異常検知方法、及びプログラムを提供することができる。
【００４３】
＜実施の形態２＞
次に、本発明の実施の形態２について説明する。実施の形態２では、本発明をプロキシサーバのログ分析に適用した場合について説明する。図７は、本実施の形態にかかる異常検知装置を説明するためのブロック図である。なお、本実施の形態にかかる異常検知装置２の基本的な構成および動作については、実施の形態１で説明した異常検知装置１の構成および動作と同様であるので、同一の構成要素には同一の符号を付し、重複した説明は適宜省略する。
【００４４】
図７に示すように、本実施の形態にかかる異常検知装置２は、大域木構造作成部１１、局所木構造作成部１２、スコア算出部１３、サンプリング部１４、データ変換部１５、及び特徴データ格納部１６を備える。また、異常検知装置２にはプロキシサーバ３１が接続されている。プロキシサーバ３１のプロキシログ格納部３２には、プロキシサーバ３１のプロキシログが格納されている。
【００４５】
データ変換部１５は、プロキシログ格納部３２から供給されたプロキシログを、異常検知処理に使用するための特徴データに変換する。図８は、プロキシログデータの一例を示す表である。また、図９は、特徴データの一例を示す表である。例えば、データ変換部１５は、図８に示すプロキシログデータを用いて、図９に示す特徴データ（ドメイン、ＰＯＳＴ率、アクセス回数）に変換する。
【００４６】
図９に示す例では、ドメイン毎に、リクエストメソッドがＰＯＳＴの行である割合（ＰＯＳＴ率）と行の総数（アクセス回数）を求めている。例えば、これ以外の特徴として、送信バイト数（最小値、最大値、平均値）、受信バイト数（最小値、最大値、平均値）、アクセスクライアント数、応答コードの分布（例えば、「２００」が何％であるかなど）などを用いてもよい。
【００４７】
特徴データ格納部１６は、データ変換部１５で変換された特徴データを格納する。特徴データ格納部１６に格納されている特徴データは、異常検知装置２における異常検知処理に用いられる。
【００４８】
大域木構造作成部１１は、特徴データ格納部１６に格納されている特徴データを複数のグループに分割するための大域木構造を作成する。具体的には、大域木構造作成部１１は、特徴データ格納部１６に格納されている特徴データの全てを入力として、分割の次元（パラメータ）および閾値をランダムに選択して二分木構造を作成する。このとき作成した二分木構造の葉ノード（グループ）の数が指定した数になるまで、または、葉ノード（グループ）の深さが所定の深さになるまで分割を行う。なお、大域木構造作成部１１の詳細については実施の形態１で説明した場合と同様である。
【００４９】
サンプリング部１４は、局所木構造作成部１２において局所木構造を作成する際に用いるデータを抽出する。サンプリング部１４は、大域木構造のグループ（葉ノード）毎にデータを抽出する。このとき、サンプリング部１４は、大域木構造のグループ（葉ノード）の中から予め決定された数のデータを抽出する。また、サンプリング部１４は、大域木構造の各々のグループ（葉ノード）に分割されたデータから同じ数のデータを抽出してもよい。
【００５０】
局所木構造作成部１２は、大域木構造の各々のグループ（葉ノード）に含まれるデータを更に分割して局所木構造を作成する。局所木構造作成部１２は、サンプリング部１４において各々のグループ毎に抽出されたデータを入力として、分割の次元（パラメータ）および閾値をランダムに選択して、各々のグループ毎に二分木構造を作成する。このとき、局所木構造作成部１２は、各々のグループ毎にランダムに抽出した一部のデータを用いて、各々のグループ毎に局所木構造を作成してもよい。また、各々のグループ毎に同じ数のデータを抽出して局所木構造を作成してもよい。なお、局所木構造作成部１２の詳細については実施の形態１で説明した場合と同様である。
【００５１】
スコア算出部１３は、局所木構造作成部１２で作成された局所木構造の根ノードから葉ノードに到達するまでの深さを用いて、複数のデータの異常の程度を示すスコアを算出する。なお、スコア算出部１３の詳細については実施の形態１で説明した場合と同様である。
【００５２】
次に、本実施の形態にかかる異常検知装置２の動作について説明する。
まず、比較例として、本発明を適用しない場合の動作について図１０を用いて説明する。なお、図１０では説明を簡略化するために、図９に示すデータのうち５０％のデータ（ドメインｄ１、ｄ３、ｄ５、ｄ７、ｄ９、ｄ１１）をサンプリングして二分木構造を作成した場合について説明する。
【００５３】
図１０に示す二分木構造は、Ｉｓｏｌａｔｉｏｎ  Ｆｏｒｅｓｔアルゴリズムを用いて作成している。このとき用いたデータの特徴は、ＰＯＳＴ率とアクセス回数であり、これらの閾値は、各ノードに含まれるデータの最小値と最大値の平均値を用いている。
【００５４】
例えば、ノード４１にはドメインｄ１、ｄ３、ｄ５、ｄ７、ｄ９、ｄ１１のデータが含まれており、これらのＰＯＳＴ率の最小値は「０」、最大値は「１」であるので、閾値を「０．５」としている。また、例えば、ノード４２にはドメインｄ１、ｄ３、ｄ５、ｄ７、ｄ９のデータが含まれており、これらのアクセス回数の最小値は「４」、最大値は「１１０」であるので、閾値を「５７」としている。他のノードの分岐条件についても同様である。
【００５５】
図１０に示すように、ノード４１の分岐条件は「ＰＯＳＴ率＜０．５」である。よって、ドメインｄ１、ｄ３、ｄ５、ｄ７、ｄ９のデータがノード４２に分岐され、ドメインｄ１１のデータが葉ノード（以下では、便宜上、葉ノードｄ１１とも記載する。他の葉ノードについても同様である。）に分岐される。なお、図１０では条件を満たす場合の矢印を実線とし、条件を満たさない場合の矢印を破線で示している。
【００５６】
ノード４２の分岐条件は「アクセス回数＜５７」である。よって、ドメインｄ３、ｄ５、ｄ７、ｄ９のデータがノード４４に分岐され、ドメインｄ１のデータが葉ノードｄ１に分岐される。ノード４３の分岐条件は「アクセス回数＜７」である。よって、ドメインｄ３、ｄ５のデータがノード４４に分岐され、ドメインｄ７、ｄ９のデータがノード４５に分岐される。
【００５７】
ノード４４の分岐条件は「アクセス回数＜５」である。よって、ドメインｄ３のデータが葉ノードｄ３に分岐され、ドメインｄ５のデータが葉ノードｄ５に分岐される。また、ノード４５の分岐条件は「アクセス回数＜１１」である。よって、ドメインｄ７のデータが葉ノードｄ７に分岐され、ドメインｄ９のデータが葉ノードｄ９に分岐される。
【００５８】
図１０に示した比較例では、ＰＯＳＴ率の分布に偏りがあるため（図９参照）、ＰＯＳＴ率が高い少数派のデータ（ドメインｄ１１のデータ）を短絡的に外れ値と判定するような二分木構造が作成される。このため、ＰＯＳＴ率が小さい多数派のドメイン（ｄ１、ｄ３、ｄ５、ｄ７、ｄ９）において外れ値が検知されにくくなる。
【００５９】
すなわち、一般的にＰＯＳＴリクエストがあるドメインの方が少数派であるので、ＰＯＳＴリクエストがないドメイン内での外れ値が検知されにくくなる。また、外部サイトへのリクエストの場合は「アクセスクライアント数」が１のドメインが多数を占めるため、利用者が少ないレアなドメインが正常と判断されやすくなる。
【００６０】
このように、本発明を適用しない場合は、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータに対して二分木構造を作成する際に、少数派のデータ群に含まれるデータを外れ値と判断する傾向がある。このため、期待した通りにデータの異常を検知することができない。
【００６１】
次に、図１１、図１２を用いて、本実施の形態にかかる異常検知装置２の動作（本発明を適用した場合の動作）について説明する。
【００６２】
まず、大域木構造作成部１１は、特徴データ格納部１６に格納されている特徴データ（ドメインｄ１〜ｄ１２の全データ）を複数のグループに分割するための大域木構造を作成する。図１１に示す例では、１つのグループ（葉ノード）に含まれるデータ数が６以下となるまで分割している。
【００６３】
つまり、図１１に示すように、ノード５１の分岐条件は「ＰＯＳＴ率＜０．５」である。よって、ドメインｄ１〜ｄ９のデータがノード５２に分岐され、ドメインｄ１０〜ｄ１２のデータがグループ（葉ノード）５５に分岐される。
【００６４】
また、ノード５２の分岐条件は「アクセス回数＜７１」である。よって、ドメインｄ２、ｄ３、ｄ５、ｄ６、ｄ７、ｄ９のデータがグループ（葉ノード）５３に分岐され、ドメインｄ１、ｄ４、ｄ８のデータがグループ（葉ノード）５４に分岐される。
【００６５】
このような大域木構造を作成することで、特徴データ（ドメインｄ１〜ｄ１２の全データ）を各々のグループ５３〜５５に分割することができる。
【００６６】
その後、サンプリング部１４は、各々のグループ５３〜５５からそれぞれ３つのデータをサンプリングする。また、局所木構造作成部１２は、各々のグループ５３〜５５からサンプリングされたデータを用いて局所木構造を作成する。
【００６７】
具体的には、図１１に示すグループ５３では、ドメインｄ２、ｄ５、ｄ７のデータを用いて局所木構造を作成する。グループ５４では、ドメインｄ１、ｄ４、ｄ８のデータを用いて局所木構造を作成する。グループ５５では、ドメインｄ１０、ｄ１１、ｄ１２のデータを用いて局所木構造を作成する。なお、グループ５４、５５のデータ数は３つであるので、グループ５４、５５では各々のグループ５４、５５に含まれる全てのデータを使用することとなる。
【００６８】
図１２に示す大域木構造５０は、図１１に示す大域木構造に対応している。
図１２に示すノード（根ノード）６１は、図１１に示すグループ（葉ノード）５３に対応している。図１２に示すように、ノード６１の分岐条件は「アクセス回数＜６」である。よって、ドメインｄ２、ｄ５のデータがノード６４に分岐され、ドメインｄ７のデータが葉ノードｄ７に分岐される。また、ノード６４の分岐条件は「アクセス回数＜４」である。よって、ドメインｄ２のデータが葉ノードｄ２に分岐され、ドメインｄ５のデータが葉ノードｄ５に分岐される。このようにすることで、局所木構造作成部１２は、グループ５３（図１１参照）に対応する局所木構造（つまり、ノード６１、６４、葉ノードｄ２、ｄ５、ｄ７を含む局所木構造）を作成することができる。
【００６９】
図１２に示すノード（根ノード）６２は、図１１に示すグループ（葉ノード）５４に対応している。図１２に示すように、ノード６２の分岐条件は「アクセス回数＜１２５」である。よって、ドメインｄ１、ｄ４のデータがノード６５に分岐され、ドメインｄ８のデータが葉ノードｄ８に分岐される。また、ノード６５の分岐条件は「アクセス回数＜１１５」である。よって、ドメインｄ１のデータが葉ノードｄ１に分岐され、ドメインｄ４のデータが葉ノードｄ４に分岐される。このようにすることで、局所木構造作成部１２は、グループ５４（図１１参照）に対応する局所木構造（つまり、ノード６２、６５、葉ノードｄ１、ｄ４、ｄ８を含む局所木構造）を作成することができる。
【００７０】
図１２に示すノード（根ノード）６３は、図１１に示すグループ（葉ノード）５５に対応している。図１２に示すように、ノード６３の分岐条件は「ＰＯＳＴ率＜０．９」である。よって、ドメインｄ１０のデータが葉ノードｄ１０に分岐され、ドメインｄ１１、ｄ１２のデータがノード６６に分岐される。また、ノード６６の分岐条件は「アクセス回数＜５４」である。よって、ドメインｄ１２のデータが葉ノードｄ１２に分岐され、ドメインｄ１１のデータが葉ノードｄ１１に分岐される。このようにすることで、局所木構造作成部１２は、グループ５５（図１１参照）に対応する局所木構造（つまり、ノード６３、６６、葉ノードｄ１０、ｄ１１、ｄ１２を含む局所木構造）を作成することができる。
【００７１】
スコア算出部１３は、このようにして求めた葉ノードｄ１、ｄ２、ｄ４、ｄ５、ｄ７、ｄ８、ｄ１０、ｄ１１、ｄ１２の深さ（根ノードから葉ノードに到達するまでの深さ）を用いてスコアを算出する。
【００７２】
このように、本実施の形態にかかる異常検知装置では、特徴に偏りのあるデータ（つまり、ＰＯＳＴ率が高いドメインｄ１０、ｄ１１、ｄ１２のデータ）を、大域木構造のグループ（葉ノード）５５に振り分けることができる（図１１参照）。また、他のデータについても大域木構造の他のグループ（葉ノード）５３、５４に振り分けることができる。そして、各々のグループ５３〜５５に対して局所木構造をそれぞれ作成している。よって、各々のグループ５３〜５５において外れ値を検知することができる。
【００７３】
すなわち、本実施の形態にかかる異常検知装置では、特徴に偏りのあるデータを大域木構造のグループ（葉ノード）に振り分けているので、特徴に偏りのあるデータが短絡的に外れ値と判定されることを抑制することができる。換言すると、図１１、図１２に示す例では、ＰＯＳＴ率の高いグループを、大域木構造の葉ノード５５に作成している。そして、このＰＯＳＴ率の高いグループ（葉ノード）５５に対して局所木構造を作成することで、ＰＯＳＴ率が高いデータの中での外れ値を検知することができる。
【００７４】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。例えば、本発明にかかる異常検知装置１、２は、スコア算出部１３を複数備える構成としてもよい。複数のスコア算出部１３を設けた場合は、複数のスコア算出部１３で算出されたスコアの統計量（つまり、複数のデータの異常の程度を示すスコアの統計量）を、異常を示すスコアとしてもよい。この場合は、多数のデータに対して、様々な視点から異常を検知することができる。
【００７５】
上述の実施の形態では、本発明をハードウェアの構成として説明したが、本発明は、これに限定されるものではない。本発明は、異常検知処理を、プロセッサであるＣＰＵ（Central Processing Unit）にコンピュータプログラムを実行させることにより実現することも可能である。
【００７６】
すなわち、複数のデータを複数のグループに分割するための大域木構造を作成し、複数のグループの各々に分割されたデータを複数のグループ毎に更に分割するための局所木構造を作成する。そして、局所木構造の根ノードから葉ノードに到達するまでの深さを用いて、複数のデータの異常の程度を示すスコアを算出する。このような異常検知処理を実行するためのプログラムを、コンピュータに実行させてもよい。
【００７７】
図１３は、本発明にかかる異常検知処理用プログラムを実行するためのコンピュータを示すブロック図である。図１３に示すように、コンピュータ９０は、プロセッサ９１およびメモリ９２を備える。メモリ９２には異常検知処理用のプログラムが格納されている。プロセッサ９１は、メモリ９２から異常検知処理用のプログラムを読み出す。そして、プロセッサ９１において異常検知処理用のプログラムを実行することで、上述した本発明にかかる異常検知処理を実行することができる。
【００７８】
上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７９】
以上、本発明を上記実施の形態に即して説明したが、本発明は上記実施の形態の構成にのみ限定されるものではなく、本願特許請求の範囲の請求項の発明の範囲内で当業者であればなし得る各種変形、修正、組み合わせを含むことは勿論である。
【符号の説明】
【００８０】
１、２  異常検知装置
１１  大域木構造作成部
１２  局所木構造作成部
１３  スコア算出部
１４  サンプリング部
１５  データ変換部
１６  特徴データ格納部
２１  大域分割部
２２  局所分割部
３１  プロキシサーバ
３２  プロキシログ格納部
９０  コンピュータ
９１  プロセッサ
９２  メモリ
【図１】
2020170425.tif 000003
【図２】
2020170425.tif 000004
【図３】
2020170425.tif 000005
【図４】
2020170425.tif 000006
【図５】
2020170425.tif 000007
【図６】
2020170425.tif 000008
【図７】
2020170425.tif 000009
【図８】
2020170425.tif 000010
【図９】
2020170425.tif 000011
【図１０】
2020170425.tif 000012
【図１１】
2020170425.tif 000013
【図１２】
2020170425.tif 000014
【図１３】
2020170425.tif 000015
【手続補正書】
【提出日】令和3年8月4日(2021.8.4)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数のデータを複数のグループに分割するための第１の二分木構造を作成する第１の二分木構造作成部と、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成する第２の二分木構造作成部と、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出するスコア算出部と、を備える、
異常検知装置。
【請求項２】
前記スコア算出部は、
前記第１の二分木構造作成部で作成された前記第１の二分木構造を用いて前記複数のデータを前記複数のグループに分割する第１のデータ分割部と、
前記第２の二分木構造作成部で作成された前記第２の二分木構造を用いて、前記複数のグループの各々に分割された前記データを前記複数のグループ毎に更に分割する第２のデータ分割部と、を更に備え、
前記第２のデータ分割部で分割されたデータの根ノードから葉ノードに到達するまでの深さをスコアとして算出する、
請求項１に記載の異常検知装置。
【請求項３】
前記第１の二分木構造作成部は、前記各々のグループに属するデータの数が所定の閾値以上となるように前記複数のデータを前記複数のグループに分割して前記第１の二分木構造を作成する、請求項１または２に記載の異常検知装置。
【請求項４】
前記第１の二分木構造の葉ノードが前記第２の二分木構造の根ノードに対応している、請求項１〜３のいずれか一項に記載の異常検知装置。
【請求項５】
前記各々のグループに分割されたデータから同じ数のデータを抽出するサンプリング部を更に備え、
前記第２の二分木構造作成部は、前記サンプリング部で抽出された前記各々のグループに属する同じ数のデータに対して前記第２の二分木構造を作成する、請求項１〜４のいずれか一項に記載の異常検知装置。
【請求項６】
前記第１の二分木構造作成部は、前記複数のデータの全てを用いて前記第１の二分木構造を作成する、請求項１〜５のいずれか一項に記載の異常検知装置。
【請求項７】
前記複数のデータは、多数派のデータ群と少数派のデータ群とを備える偏りのあるデータであり、
前記第１の二分木構造作成部は、前記少数派のデータ群が前記第１の二分木構造の葉ノードである所定のグループに含まれるように前記第１の二分木構造を作成する、
請求項１〜６のいずれか一項に記載の異常検知装置。
【請求項８】
前記異常検知装置は、前記スコア算出部を複数備えており、
前記複数のスコア算出部で算出された前記複数のデータの異常の程度を示すスコアの統計量を異常を示すスコアとする、
請求項１〜７のいずれか一項に記載の異常検知装置。
【請求項９】
複数のデータを複数のグループに分割するための第１の二分木構造を作成し、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する、
異常検知方法。
【請求項１０】
複数のデータを複数のグループに分割するための第１の二分木構造を作成し、
前記複数のグループの各々に分割されたデータを前記複数のグループ毎に更に分割するための第２の二分木構造を作成し、
前記第２の二分木構造の根ノードから葉ノードに到達するまでの深さを用いて、前記複数のデータの異常の程度を示すスコアを算出する、異常検知処理をコンピュータに実行させるためのプログラム。
【国際調査報告】
2020170425.tif 000016
2020170425.tif 000017