(57)【要約】【課題】異常検出対象の構成要素数に増減が発生する場合においても、異常検出対象全体の異常と、その構成要素の異常とを、同一の評価尺度を用いて検出する異常検出装置を提供する。【解決手段】データ出力部２００は、異常検出対象９００の観測値から、異常検出対象９００の構成要素の状態を表現する部分特徴行列を生成し、部分特徴行列が部分列となるような、異常検出対象９００全体を表現する行列データである全体特徴行列を生成する。異常度算出部３００は、任意の２行列について内積値の計算が可能なカーネル関数を用いて全体特徴行列の時系列につき内積値を算出する。算出された内積値を用いて構築された、カーネル化された確率モデル、例えばカーネル化ベクトル自己回帰モデルを用いて異常検出対象９００全体の異常度と、構成要素毎の異常度と、を同一の評価尺度によって算出する。【選択図】図１
2016189062.tif 000002
【特許請求の範囲】
【請求項１】
異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を検出する異常検出装置であって、
前記異常検出装置は、
前記構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、前記異常検出対象全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、
前記異常度スコアの確率分布を学習する異常度分布学習部と、
を有し、
前記データ出力部は、前記異常検出対象の状態を観測した時系列データから、前記要素特徴行列と、前記全体特徴行列と、を生成する特徴行列生成部を有し、
前記異常度算出部は、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択部と、
前記異常度分布学習部における学習結果と前記異常度スコアとを比較し、前記異常検出対象の異常を判定する異常判定部と、を有し、
前記異常判定部は、前記異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を判定することで、前記異常検出対象全体が異常と判定されたときに、前記異常検出対象の構成要素のうち、異常と判定されるものを検出する
ことを特徴とする、異常検出装置。
【請求項２】
異常検出対象全体の状態を表した行列であって、前記異常検出対象全体の状態を表した行列の部分列が、前記異常検出対象の構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、を有する、異常検出装置。
【請求項３】
前記データ出力部は、
前記異常検出対象の状態を観測した結果から、
前記異常検出対象の構成要素の状態を表す行列である要素特徴行列と、
前記要素特徴行列が部分列となるように構成された、前記異常検出対象全体を表す行列である全体特徴行列と、
を生成する特徴行列生成部を有する
ことを特徴とする請求項２に記載の異常検出装置。
【請求項４】
前記カーネル関数は、入力された行列に対して行列分解を行い、前記行列分解の結果により得られたベクトルについて、前記ベクトルの成分を表現する確率密度関数を算出し、算出された前記確率密度関数の内積を計算することを特徴とする、請求項２又は３に記載の異常検出装置。
【請求項５】
前記異常度算出部は、前記カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出する、請求項２から４の何れかに記載の異常検出装置。
【請求項６】
前記異常度算出部は、１以上の前記カーネル化確率モデルを選択可能な、カーネル化確率モデル選択部を有する、請求項２から５の何れかに記載の異常検出装置。
【請求項７】
前記異常度算出部は、前記全体特徴行列、及び、前記要素特徴行列について異常度スコアを算出し、その結果に基づき前記異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を判定することで、前記異常検出対象全体が異常と判定されたときに、前記異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定部を有する、請求項２から６の何れかに記載の異常検出装置。
【請求項８】
異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を検出する異常検出方法であって、
前記異常検出方法は、
前記構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、前記異常検出対象全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力ステップと、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出ステップと、
前記異常度スコアの確率分布を学習する異常度分布学習ステップと、
を有し、
前記データ出力ステップは、前記異常検出対象の状態を観測した時系列データから、前記要素特徴行列と、前記全体特徴行列と、を生成する特徴行列生成ステップを有し、
前記異常度算出ステップは、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択ステップと、
前記異常度分布学習ステップにおける学習結果と前記異常度スコアとを比較し、前記異常検出対象の異常を判定する異常判定ステップと、を有し、
前記異常判定ステップは、前記異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を判定することで、前記異常検出対象全体が異常と判定されたときに、前記異常検出対象の構成要素のうち、異常と判定されるものを検出する
ことを特徴とする、異常検出方法。
【請求項９】
異常検出対象全体の状態を表した行列であって、前記異常検出対象全体の状態を表した行列の部分列が、前記異常検出対象の構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力ステップと、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、を有する、異常検出方法。
【請求項１０】
前記データ出力ステップは、
前記異常検出対象の状態を観測した結果から、
前記異常検出対象の構成要素の状態を表す行列である要素特徴行列と、
前記要素特徴行列が部分列となるように構成された、前記異常検出対象全体を表す行列である全体特徴行列と、
を生成する特徴行列生成ステップを有する
ことを特徴とする請求項９に記載の異常検出方法。
【請求項１１】
前記カーネル関数は、入力された行列に対して行列分解を行い、前記行列分解の結果により得られたベクトルについて、前記ベクトルの成分を表現する確率密度関数を算出し、算出された前記確率密度関数の内積を計算することを特徴とする、請求項９又は１０に記載の異常検出方法。
【請求項１２】
前記異常度算出ステップは、前記カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出する、請求項９から１１の何れかに記載の異常検出方法。
【請求項１３】
前記異常度算出部ステップは、１以上の前記カーネル化確率モデルを選択可能な、カーネル化確率モデル選択ステップを有する、請求項９から１２の何れかに記載の異常検出方法。
【請求項１４】
前記異常度算出ステップは、前記全体特徴行列、及び、前記要素特徴行列について異常度スコアを算出し、その結果に基づき前記異常検出対象全体の異常と、前記異常検出対象の構成要素の異常と、を判定することで、前記異常検出対象全体が異常と判定されたときに、前記異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定ステップを有する、請求項９から１３の何れかに記載の異常検出方法。
【請求項１５】
ネットワーク全体の異常と、前記ネットワークの構成要素の異常と、を検出するネットワーク異常検出装置であって、
前記ネットワーク異常検出装置は、
前記構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、前記ネットワーク全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、
前記異常度スコアの確率分布を学習する異常度分布学習部と、
を有し、
前記データ出力部は、前記ネットワークの状態を観測した時系列データから、前記要素特徴行列と、前記全体特徴行列と、を生成する特徴行列生成部を有し、
前記異常度算出部は、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択部と、
前記異常度分布学習部における学習結果と前記異常度スコアとを比較し、前記ネットワークの異常を判定する異常判定部と、を有し、
前記異常判定部は、前記ネットワーク全体の異常と、前記ネットワークの構成要素の異常と、を判定することで、前記ネットワーク全体が異常と判定されたときに、前記ネットワークの構成要素のうち、異常と判定されるものを検出する
ことを特徴とする、ネットワーク異常検出システム。
【請求項１６】
ネットワーク全体の状態を表した行列であって、前記ネットワーク全体の状態を表した行列の部分列が、前記ネットワークの構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに前記入力データが入力されることで、前記カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、を有する、ネットワーク異常検出システム。
【請求項１７】
前記データ出力部は、
前記ネットワークの状態を観測した結果から、
前記ネットワークの構成要素の状態を表す行列である要素特徴行列と、
前記要素特徴行列が部分列となるように構成された、前記ネットワーク全体を表す行列である全体特徴行列と、
を生成する特徴行列生成部を有する
ことを特徴とする請求項１６に記載のネットワーク異常検出システム。
【請求項１８】
前記カーネル関数は、入力された行列に対して行列分解を行い、前記行列分解の結果により得られたベクトルについて、前記ベクトルの成分を表現する確率密度関数を算出し、算出された前記確率密度関数の内積を計算することを特徴とする、請求項１６又は１７に記載のネットワーク異常検出システム。
【請求項１９】
前記異常度算出部は、前記カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出する、請求項１６から１８の何れかに記載のネットワーク異常検出システム。
【請求項２０】
前記異常度算出部は、１以上の前記カーネル化確率モデルを選択可能な、カーネル化確率モデル選択部を有する、請求項１６から１９の何れかに記載のネットワーク異常検出システム。
【請求項２１】
前記異常度算出部は、前記全体特徴行列、及び、前記要素特徴行列について異常度スコアを算出し、その結果に基づき前記ネットワーク全体の異常と、前記ネットワークの構成要素の異常と、を判定することで、前記ネットワーク全体が異常と判定されたときに、前記ネットワークの構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定部を有する、請求項１６から２０の何れかに記載のネットワーク異常検出システム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、異常検出装置、異常検出方法及びネットワーク異常検出システムに関する。特に、異常検出対象の構成要素数に増減が発生する場合における異常検出に好適な異常検出装置、異常検出方法及びネットワーク異常検出システムに関する。
【背景技術】
【０００２】
通信ネットワークや、大規模プラントにおけるセンサネットワーク、為替・株価の市場等の経済活動などのように、多数の構成要素を有し、その構成要素同士は相関関係を有する、という異常検出対象が数多く存在する。
【０００３】
しかし、人の監視によって、これらの異常検出対象の異常を検出し、更にその原因の特定をすることは難しい。なぜなら、構成要素の数が時間の変異と共に増減するからである。更に、構成要素が複雑に関係しながら動作するため、構成要素間の関係を全て監視するのは難しい。監視できたとしても、構成要素の変化と、その関係性を即座に理解して異常を早期に発見し、原因を特定することは、熟練の技術者でも困難を伴う。
そのため、構成要素の数が増減しつつ、複雑に関係しながら動作する異常検出対象全体に発生した異常を自動的に検出し、更に、その原因となる構成要素の特定を可能とする技術が望まれている。
【０００４】
このような観測対象の異常を検出する手法が、非特許文献１に記載されている。
観測対象を構成する要素の数は一定であると仮定した上で、構成要素間の関係性を表す対称行列の時系列を入力とする。次に、その時系列行列の最大固有ベクトルを各時刻で計算し、それらのベクトルを用いて特徴ベクトルを算出する。そして、その特徴ベクトルと新規の最大固有ベクトルとの距離を異常度として監視することで、異常検出対象全体の異常を検出する。
【０００５】
また、複数の構成要素からなる異常検出対象の構成要素毎の異常を検出する手法が、非特許文献２に記載されている。ある構成要素の近傍構造を表す実数値を特徴量として、新規入力に対して、単純な特徴量の差を、異常を表す値として監視することで、異常検出対象の構成要素毎の異常を検出する。
【０００６】
次に、異常検出対象全体と構成要素の異常検出を同時に実行する手法として、非特許文献３がある。
【０００７】
非特許文献３においては、異常検出対象全体を表現する行列の上位固有値を成分にもつベクトルを生成し、そのベクトルの変化を検出することで異常検出対象全体の異常を検出する。そして、構成要素毎に、システム全体を表す行列を一定次元の低次元に圧縮した行列を生成する。それぞれの変化を追跡することで、観測対象全体と、その要素毎の異常を検出する。
【先行技術文献】
【特許文献】
【０００８】
【非特許文献１】Tsuyoshi Ide and Hisashi Kashima. "Eigenspace-based anomaly detection in computer systems". Proceedings of the tenth ACM SIGKDD international conference on Knowledge discovery and data mining, 2004, 440-449
【非特許文献２】Tsuyoshi Ide ,Spiros Papadimitriou and Michail Vlachos. "Computing correlation anomaly scores using stochastic nearest neighbors". Proceedings of the IEEE 7th international conference on Data mining, 2007, 523-528.
【非特許文献３】Shunsuke Hirose, Kenji Yamanisihi, Takayuki Nakata and Ryohei Fujimaki. "Network anomaly detection based on eigen equation compression". Proceedings of the 15th ACM SIGKDD international conference on Knowledge discovery and data mining, 2009, 1185-1194.
【発明の概要】
【発明が解決しようとする課題】
【０００９】
従来の異常検出に関する技術は以上のように構成されているので、非特許文献１に開示されている技術を実施すれば、複数の構成要素からなる異常検出対象全体の異常を検出できる。しかし、構成要素の数が一定であるという仮定が必要であるため、構成要素の数に増減が発生する場合に、異常が検出できないという課題があった。
【００１０】
また、非特許文献２に開示されている技術を実施すれば、複数の構成要素からなる異常検出対象の構成要素毎の異常を検出できる。更に、構成要素の数に増減が発生する場合にも構成要素毎の異常が検出できる。
しかし、異常検出対象の状態を表現する特徴量として観測値の和を用いているため、異常検出対象全体について特徴量を算出すると、複数の構成要素につき横断して加算することになり、失われる情報量が多くなる。そのため、異常検出対象全体の異常が検出できないという課題があった。
【００１１】
更に、非特許文献３に開示されている技術を実施すれば、異常検出対象全体の異常と、構成要素毎の異常を検出できる。また、構成要素数の増減についても対応が可能である。
しかし、全体の異常検出と、構成要素の異常検出において、それぞれ別の手法に基づいて検出を行っているため、全体の異常と、構成要素の異常との関連付けが難しかった。
すなわち、異常検出対象全体の異常検出結果と、異常検出対象の構成要素の異常検出結果とが、別々の評価尺度により評価されているため、異常検出全体に発生した異常の程度と、異常検出対象の構成要素に発生した異常の程度の比較が難しかった。
そのため、異常検出対象全体に異常が発生した場合の、原因と推定される個所、すなわち異常への影響が大きい構成要素の推定が難しいという課題があった。
【００１２】
本発明は上記のような課題を解決するためになされたもので、異常検出対象の構成要素数に増減が発生する場合においても、異常検出対象全体の異常と、その構成要素の異常とを、同一の評価尺度を用いて検出する異常検出装置を得ることを目的とする。
【課題を解決するための手段】
【００１３】
この発明に係る異常検出装置は、
異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を検出する異常検出装置であって、
構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、
異常度スコアの確率分布を学習する異常度分布学習部と、
を有し、
データ出力部は、異常検出対象の状態を観測した時系列データから、要素特徴行列と、全体特徴行列と、を生成する特徴行列生成部を有し、
異常度算出部は、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択部と、
異常度分布学習部における学習結果と異常度スコアとを比較し、異常検出対象の異常を判定する異常判定部と、を有し、
異常判定部は、異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を判定することで、異常検出対象全体が異常と判定されたときに、異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とするものである。
【００１４】
この発明に係る異常検出装置は、
異常検出対象全体の状態を表した行列であって、異常検出対象全体の状態を表した行列の部分列が、異常検出対象の構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、を有することを特徴とするものである。
【００１５】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
データ出力部が、異常検出対象の状態を観測した結果から、異常検出対象の構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である全体特徴行列と、を生成する特徴行列生成部を有するようにしてもよい。
【００１６】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
異常検出対象の状態を観測した結果から、異常検出対象の構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である全体特徴行列と、を生成する特徴行列生成部を有するようにしてもよい。
【００１７】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
カーネル関数が、入力された行列に対して行列分解を行い、行列分解の結果により得られたベクトルについて、ベクトルの成分を表現する確率密度関数を算出し、算出された確率密度関数の内積を計算することを特徴とするようにしてもよい。
【００１８】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
異常度算出部が、カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出するようにしてもよい。
【００１９】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
異常度算出部が、１以上のカーネル化確率モデルを選択可能な、カーネル化確率モデル選択部を有するようにしてもよい。
【００２０】
また、この発明に係る異常検出装置は、上記構成を備えた上で、
異常度算出部が、全体特徴行列、及び、要素特徴行列について異常度スコアを算出し、その結果に基づき異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を判定することで、異常検出対象全体が異常と判定されたときに、異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定部を有するようにしてもよい。
【００２１】
この発明に係る異常検出方法は、
異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を検出する異常検出方法であって、
構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力ステップと、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出ステップと、
異常度スコアの確率分布を学習する異常度分布学習ステップと、
を有し、
データ出力ステップは、異常検出対象の状態を観測した時系列データから、要素特徴行列と、全体特徴行列と、を生成する特徴行列生成ステップを有し、
異常度算出ステップは、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択ステップと、
異常度分布学習ステップにおける学習結果と異常度スコアとを比較し、異常検出対象の異常を判定する異常判定ステップと、を有し、
異常判定ステップは、異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を判定することで、異常検出対象全体が異常と判定されたときに、異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とするものである。
【００２２】
この発明に係る異常検出方法は、
異常検出対象全体の状態を表した行列であって、異常検出対象全体の状態を表した行列の部分列が、異常検出対象の構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力ステップと、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出ステップと、を有することを特徴とするものである。
【００２３】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
データ出力ステップが、異常検出対象の状態を観測した結果から、異常検出対象の構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である全体特徴行列と、を生成する特徴行列生成ステップを有するようにしてもよい。
【００２４】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
異常検出対象の状態を観測した結果から、異常検出対象の構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、異常検出対象全体を表す行列である全体特徴行列と、を生成する特徴行列生成ステップを有するようにしてもよい。
【００２５】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
カーネル関数が、入力された行列に対して行列分解を行い、行列分解の結果により得られたベクトルについて、ベクトルの成分を表現する確率密度関数を算出し、算出された確率密度関数の内積を計算することを特徴とするようにしてもよい。
【００２６】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
異常度算出ステップが、カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出するようにしてもよい。
【００２７】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
異常度算出ステップが、１以上のカーネル化確率モデルを選択可能な、カーネル化確率モデル選択ステップを有するようにしてもよい。
【００２８】
また、この発明に係る異常検出方法は、上記構成を備えた上で、
異常度算出ステップが、前記全体特徴行列、及び、前記要素特徴行列について異常度スコアを算出し、その結果に基づき異常検出対象全体の異常と、異常検出対象の構成要素の異常と、を判定することで、異常検出対象全体が異常と判定されたときに、異常検出対象の構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定ステップを有するようにしてもよい。
【００２９】
この発明に係るネットワーク異常検出システムは、
ネットワーク全体の異常と、ネットワークの構成要素の異常と、を検出するネットワーク異常検出システムであって、
構成要素の状態を表す行列である要素特徴行列が部分列となるように構成された、ネットワーク全体を表す行列である、全体特徴行列を、入力データとして出力する、データ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、
異常度スコアの確率分布を学習する異常度分布学習部と、
を有し、
データ出力部は、ネットワークの状態を観測した時系列データから、要素特徴行列と、全体特徴行列と、を生成する特徴行列生成部を有し、
異常度算出部は、複数のカーネル化確率モデルから、情報量基準に基づいて、カーネル化確率モデルを選択するカーネル化確率モデル選択部と、
異常度分布学習部における学習結果と異常度スコアとを比較し、ネットワークの異常を判定する異常判定部と、を有し、
異常判定部は、ネットワーク全体の異常と、ネットワークの構成要素の異常と、を判定することで、ネットワーク全体が異常と判定されたときに、ネットワークの構成要素のうち、異常と判定されるものを検出することを特徴とするものである。
【００３０】
この発明に係るネットワーク異常検出システムは、
ネットワーク全体の状態を表した行列であって、ネットワーク全体の状態を表した行列の部分列が、ネットワークの構成要素の状態を表すように構成された行列を入力データとして出力するデータ出力部と、
２つの行列を入力とするカーネル関数によってカーネル化された確率モデルである、カーネル化確率モデルに入力データが入力されることで、カーネル化確率モデルから予測される状態と実際の状態のずれの程度を表す異常度スコアを算出する異常度算出部と、を有することを特徴とするものである。
【００３１】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
データ出力部が、ネットワークの状態を観測した結果から、ネットワークの構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、ネットワーク全体を表す行列である全体特徴行列と、を生成する特徴行列生成部を有するようにしてもよい。
【００３２】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
ネットワークの状態を観測した結果から、ネットワークの構成要素の状態を表す行列である要素特徴行列と、要素特徴行列が部分列となるように構成された、ネットワーク全体を表す行列である全体特徴行列と、を生成する特徴行列生成部を有するようにしてもよい。
【００３３】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
カーネル関数が、入力された行列に対して行列分解を行い、行列分解の結果により得られたベクトルについて、ベクトルの成分を表現する確率密度関数を算出し、算出された確率密度関数の内積を計算することを特徴とするようにしてもよい。
【００３４】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
異常度算出部が、カーネル関数によってカーネル化された、カーネル化ベクトル自己回帰モデルを用いて異常度スコアを算出するようにしてもよい。
【００３５】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
異常度算出部が、１以上のカーネル化確率モデルを選択可能な、カーネル化確率モデル選択部を有するようにしてもよい。
【００３６】
また、この発明に係るネットワーク異常検出システムは、上記構成を備えた上で、
異常度算出部が、前記全体特徴行列、及び、前記要素特徴行列について異常度スコアを算出し、その結果に基づきネットワーク全体の異常と、ネットワークの構成要素の異常と、を判定することで、ネットワーク全体が異常と判定されたときに、ネットワークの構成要素のうち、異常と判定されるものを検出することを特徴とする、異常判定部を有するようにしてもよい。
【発明の効果】
【００３７】
この発明によれば、異常検出対象の構成要素数に増減が発生する場合においても、異常検出対象全体の異常と、その構成要素の異常とを、同一の評価尺度によって評価し、検出することができるという効果がある。
【図面の簡単な説明】
【００３８】
【図１】この発明の実施の形態における異常検出装置を示す構成図である。
【図２】この発明の実施の形態における異常検出対象の例を示す図である。
【図３】この発明の実施の形態における全体特徴行列と、要素特徴行列の例を示す図である。
【図４】この発明の実施の形態における、異常検出装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００３９】
実施の形態．
図１はこの発明の実施の形態による異常検出装置を示す構成図である。
本実施の形態では、本発明に係る異常検出装置について図を参照しながら説明する。
【００４０】
図１において、異常検出装置１００は、データ出力部２００と、異常度算出部３００と、異常度分布学習部４００と、を備え、異常検出対象９００全体の異常と、その構成要素の異常と、を検出する装置である。
更に、データ出力部２００は、特徴行列生成部２０１を備え、異常度算出部３００は、カーネル化確率モデル選択部３０１と、異常判定部３０２を備える。
【００４１】
本実施の形態において、異常検出対象９００は通信ネットワークであり、複数の通信サーバによって構成される。
また、異常検出対象９００の構成要素は、通信サーバに限定されるものではなく、例えば、ハブ及びルータのほか、パーソナルコンピュータ、ＭＦＰ（Ｍｕｌｔｉ  Ｆｕｎｃｔｉｏｎ  Ｐｅｒｉｐｈｅｒａｌｓ）、プリンタ、またはＮＡＳ（Ｎｅｔｗｏｒｋ  Ａｔｔａｃｈｅｄ  Ｓｔｏｒａｇｅ）など、様々な装置によって構成されていてもよい。
【００４２】
データ出力部２００は、異常検出対象９００から観測値を取得し、逐次的に記録してゆく。
特徴行列生成部２０１は、取得した観測値に基づいて、異常検出対象９００の構成要素である通信サーバー間の通信量を成分とするベクトルデータである、要素特徴行列を生成する。
また、特徴行列生成部２０１は、異常検出対象９００に存在する通信サーバーの数だけ生成された要素特徴行列を、列成分として持つ行列データである、全体特徴行列を生成する。このように生成された全体特徴行列は、異常検出対象９００全体のある時間における通信量を表した行列データである。
更に、データ出力部２００は、特徴行列生成部２０１にて生成された全体特徴行列を、逐次的に記録してゆくことで、異常検出対象９００を表現する全体特徴行列の時系列データを作成する。
データ出力部２００は、特徴行列生成部２０１にて生成された全体特徴行列の時系列データを、入力データとして、異常度算出部３００へと出力する。
【００４３】
また、異常検出対象９００の構成要素の集合、すなわち、構成要素群が、特定の意味を有する場合には、構成要素群の特徴を表す行列を、要素特徴行列として生成するようにしてもよい。
本実施の形態における、構成要素の集合が特定の意味を持つ例としては、例えば、大規模な企業イントラネットにおける、ある部署に設置された通信サーバーの集合などが該当する。
【００４４】
以下に異常検出対象９００と部分特徴行列、全体特徴行列との関係について、図２、図３を参照しながら説明する。
【００４５】
図２は、この発明の実施の形態における、異常検出対象９００及び、異常検出対象９００から取得される観測値の例を示す説明図である。
【００４６】
図２における、異常検出対象９００から取得される観測値は、通信サーバー間の通信量である。
時刻ｔにおける観測値を行列表現したものが行列Ｍｔであり、行列成分の第ｉ行、第ｊ列の要素が、サーバーｉからサーバーｊへの通信量を表す。
図２左図は、ある時刻ｔにおける異常検出対象９００の状態を表す。
図２右図は、時刻ｔ＋１における異常検出対象９００の状態を表す。
それぞれの状態を行列により表現すると、行列Ｍｔ及び、行列Ｍｔ＋１のようになる。
通信ネットワークにおいては、図２に示されているように、観測値の次元、すなわち通信対象となる通信サーバーの増減が発生する。
なお、観測値については図２の例に限定されるものではなく、通信サーバー毎の負荷率や、通信サーバー間の物理的な接続の有無を表現する値であってもよい。
【００４７】
図３は、図２における行列Ｍｔ＋1について、全体特徴行列、要素特徴行列、及び構成要素群を表す要素特徴行列を説明した図である。
【００４８】
本実施の形態においては、データ出力部２００が異常検出対象９００の観測値を逐次的に取得する例を示しているが、本発明はこの例に限定されるものではなく、異常検出を開始する前に取得された観測値のデータセット等を読み込むようにしてもよい。
【００４９】
なお、データ出力部２００から異常度算出部３００へと出力される、入力データは、取得した全ての時刻での観測値を用いて生成してもよいし、ある一定の期間を定め、その期間分の観測値を用いて生成するようにしてもよい。
【００５０】
異常度算出部３００は、異常検出対象９００に発生した異常を検出するための指標である異常度を算出する。カーネル化確率モデル選択部３０１は、異常度算出のために用いるカーネル化確率モデルを選択する。異常判定部３０２は、算出された異常度に基づいて、異常検出対象９００全体と、その構成要素に発生した異常を判定する。
【００５１】
まず、異常度算出部３００は、データ出力部２００から入力された入力データに基づいて、異常検出対象９００全体の異常度を表す、全体異常度を算出し、記録する。更に、異常検出対象の構成要素毎の異常度を表す、要素異常度を算出し、記録する。
以下、全体異常度と要素異常度のどちらか、もしくは両者を指して、異常度スコアと呼ぶ。
【００５２】
異常度スコアは、２つの任意の行列を入力とするカーネル関数によってカーネル化された確率モデル、すなわち、カーネル化確率モデルへと、入力データが入力されることで算出される。
【００５３】
ここで、異常度算出部３００にて用いるカーネル関数について詳細に説明する。
【００５４】
異常検出対象の構成要素数に増減がある場合、すなわち入力データの次元数が変動する場合において、異常検出を行うために、入力された２つの行列の成分、形式、及び、次元数が異なる場合にも、両行列間の「距離」に該当する数値、すなわち内積の値を計算することが可能なカーネル関数を構築する。
【００５５】
当該カーネル関数の入力である二つの行列をＭ、Ｍ´として、以下に示す数１で表す。
【００５６】
【数１】
2016189062.tif 000003
【００５７】
Ｍ及びＭ´の行列の次元が等しい場合のカーネル関数は、以下に示す数２で表される。
【００５８】
【数２】
2016189062.tif 000004
左辺の値が、入力された行列ＭとＭ´間の距離に該当する値すなわち、内積である。
しかし、入力行列の次元が異なる場合には、数２のように定義することができないため、入力行列の次元が異なる場合にも計算が可能となるように、数２のカーネル関数を拡張する。
【００５９】
入力行列を行列分解すると、以下に示す数３で表される。
【００６０】
【数３】
2016189062.tif 000005
ここで、ベクトルｕとｕ´、及びベクトルｖとｖ´の次元を揃えるために、射影演算子を導入する。
【００６１】
ｍ次元のベクトルｖをｓ次元空間に移す演算子を以下に示す数４で表す。
【００６２】
【数４】
2016189062.tif 000006
【００６３】
数４に示される射影演算子を作用させたベクトルを以下に示す数５のように表し、射影ベクトルと呼ぶ。
【００６４】
【数５】
2016189062.tif 000007
【００６５】
数２に示される式に数５に示される射影ベクトルを代入すると、以下に示す数６のようになる。
【００６６】
【数６】
2016189062.tif 000008
これにより、入力された行列Ｍ、Ｍ´の次元数に関わらず両者の内積の値を計算できるようになった。
【００６７】
ここで、射影ベクトルの大きさを規定するために、以下に示す数７のような条件を課す。
【００６８】
【数７】
2016189062.tif 000009
【００６９】
ここで、数７に示された条件を満たす射影ベクトルとして、ベクトルｕの成分の分布に対する確率密度関数の平方根を採用する。すなわち、射影ベクトルを以下に示す数８のように表す。
【００７０】
【数８】
2016189062.tif 000010
【００７１】
数８を用いて数６を書き直すと、以下に示す数９のようになる。
【００７２】
【数９】
2016189062.tif 000011
上段の式は、ベクトルｕ、ｖが実数の場合を表す。積分変数ｘは一次元である。
具体的には、入力行列ＭとＭ´が共に実対象行列であり、行列分解として固有値分解を用いた場合を表す。更に、入力行列ＭとＭ´が共に実行列であり、行列分解として特異値分解を用いた場合を表す。
下段の式は、ベクトルｕ、ｖが複素数の場合を表す。積分変数ｚは二次元である。
具体的には、入力行列ＭとＭ´の片方もしくは両方が実対象行列ではなく、行列分解として固有値分解を用いた場合を表す。更に、入力行列ＭとＭ´の片方もしくは両方が複素行列であり、行列分解として特異値分解を用いた場合を表す。
【００７３】
更に数９に含まれる定数値を以下に示す数１０のように置き換えることで、当該カーネル関数を一般化する。
【００７４】
【数１０】
2016189062.tif 000012
【００７５】
数１０を数９へと代入すると、以下に示す数１１のようになる。
【００７６】
【数１１】
2016189062.tif 000013
数１１における行列分解と、積分変数及びベクトルの成分の説明については数９における説明と同様であるため、省略する。
【００７７】
このように、行列分解の方法及び、確率密度関数を決定した上で、数１１のように導出されたカーネル関数に、任意の形式の２つの行列を入力することで、入力行列間における「距離」に該当する数値、すなわち内積値の算出が可能となった。
【００７８】
なお、本実施の形態においては、行列分解について、固有値分解及び、特異値分解を用いた例を示している。しかし、本発明はこれに限定されるものではなく、分解が一意に定義され、ベクトルが規格化されている任意の行列分解を用いてもよい。
【００７９】
次に、異常度算出部３００における異常度の算出方法を説明する。
まず、図示しない入力手段により、前記カーネル関数において用いる、行列分解の方法及び確率密度関数が入力される。
次に、入力データ内の異なる時刻における全体特徴量同士の組み合わせ、及び、入力データ内の異なる時刻における要素特徴行列同士の組み合わせの全てについて、前述のカーネル関数へと入力し、それぞれの内積値を算出する。
算出された内積値を用いて、前記カーネル関数によって表現される空間における、入力データの発生確率を表現する確率モデル、すなわち、カーネル化確率モデルを構築する。
最後に、構築されたカーネル化確率モデルへ、入力データが入力されることで、異常検出対象９００全体の異常度を表す、全体異常度及び、異常検出対象の構成要素毎の異常度を表す、要素異常度が算出され、記録される。
カーネル化確率モデル及び、その構築については後述する。
【００８０】
本実施の形態においては、前記カーネル関数にて使用する確率密度関数として、正規分布を用いる例を示す。しかし、本発明はこれに限定されるものではなく、任意の確率分布を用いてもよい。
なお、確率密度関数と、カーネル化確率モデルの種類については、当該異常検出装置に事前に定められた種類に基づくようにしてもよいし、種類について都度、図示しない入力部によって設定されるようにしてもよい。
【００８１】
また確率密度関数及び、カーネル化確率モデルは複数設定されてもよい。
その場合は、設定された確率密度関数及び、カーネル化確率モデルの数だけ異常度スコアが算出される。
【００８２】
ここで、カーネル化確率モデルと、異常度スコアの算出について説明する。
【００８３】
本実施の形態において、カーネル化確率モデルとは、実空間における、ある確率モデルを、前記カーネル関数によって表現される空間における確率モデルへと変換したもの、すなわち、カーネル化したものを指す。
【００８４】
以下において、行列の時系列的な性質を表現する確率モデルである、ベクトル自己回帰モデルをカーネル化した場合の異常度スコアの算出について説明する。
【００８５】
以下、ベクトル自己回帰モデルをカーネル化したものを、ＫＶＡＲ（カーネル化ベクトル自己回帰モデル：Ｋｅｒｎｅｌｉｚｅｄ  Ｖｅｃｔｏｒ  Ａｕｔｏ  Ｒｅｇｒｅｓｓｉｖｅ）と呼ぶ。
【００８６】
なお、本発明におけるカーネル化確率モデルは、ＫＶＡＲに限定されるものではなく、正規分布や、ｖｏｎ  Ｍｉｓｅｓ‐Ｆｉｓｈｅｒ分布など、リプリゼンター定理が成り立つ確率分布であれば、任意の確率分布をカーネル化したものを用いてもよい。
【００８７】
以下に、ＫＶＡＲを用いた異常度スコア算出について、説明する。
【００８８】
行列の時系列が等しい時間間隔で観測されているとし、全体特徴行列の集合をＭとし、時刻ｔにおける観測行列をＭｔとして、以下に示す数１２のように表す。
【００８９】
【数１２】
2016189062.tif 000014
【００９０】
行列の次元は時刻ごとに一定ではなく、以下に示す数１３のように表す。
【００９１】
【数１３】
2016189062.tif 000015
【００９２】
時刻ｔに観測された構成要素の数をＮｔとして以下に示す数１４のように表す。
【００９３】
【数１４】
2016189062.tif 000016
【００９４】
行列を形式的にベクトルとして表現し、以下に示す数１５のように表し、それぞれの要素ベクトルを特徴ベクトルと呼ぶ。
【００９５】
【数１５】
2016189062.tif 000017
【００９６】
特徴ベクトルＤのベクトル自己回帰モデルを以下に示す数１６に示す。
【００９７】
【数１６】
2016189062.tif 000018
Ｗは利用者が指定する定数である。｛Ａ｝とΣはパラメータ行列である。μはパラメータベクトルであり、εはガウシアンノイズを表す。
【００９８】
ＶｅｃｔｏｒＡＲモデルに基づく、特徴ベクトルＤについての異常度スコアを、以下に示す数１７のように定義する。すなわち、新規行列の珍しさとして異常度を定義する。
【００９９】
【数１７】
2016189062.tif 000019
【０１００】
誤差の合計Ｅは以下に示す数１８で表される。
【０１０１】
【数１８】
2016189062.tif 000020
【０１０２】
誤差Ｅを最少化するようにパラメータを推定し、内積をカーネル関数で置き換えると、数１７は以下に示す数１９のようになる。
【０１０３】
【数１９】
2016189062.tif 000021
【０１０４】
以上のように、前記カーネル関数へ任意の行列を入力し、前記カーネル関数によってカーネル化された確率モデルにより、入力された行列に対する確率密度を算出することで、異常度スコアの算出が可能となった。
【０１０５】
すなわち、異常度算出部３００へ、入力データを入力し、数１９を用いて異常度スコアを算出することで、異常検出対象９００の構成要素数に増減が発生する場合においても、異常検出対象全体の異常を示す値と、構成要素の異常を示す値と、を確率密度という同一の評価尺度によって算出することができる。
【０１０６】
なお、異常度スコアは、入力データにおける全ての時刻の全体特徴行列に対して、前記カーネル関数に用いる行列分解の種類、確率密度関数の種類及び、構築されたカーネル化確率モデルの種類の組み合わせの数だけ、算出され、記録される。
【０１０７】
カーネル化確率モデル選択部３０１は、異常度算出部３００に記録された異常度スコアに基づき、情報量基準を用いて、入力データの分布を最もよく表現する、前記カーネル関数に用いる行列分解方法、確率密度関数及び、異常度スコア算出に用いるカーネル化確率モデルを選択する。
【０１０８】
ここで、情報量基準とは、あるデータを表現する確率分布の候補と、真の確率分布の距離を定量化したものである。
本実施の形態においては、情報量基準として、予測的確率的コンプレキシティを用いる。
【０１０９】
予測的確率的コンプレキシティ（Ｐｒｅｄｉｃｔｉｖｅ  Ｓｔｏｃｈａｓｔｉｃ  Ｃｏｍｐｌｅｘｉｔｙ）は予測符号化の下でのデータの符号長を表し、以下に示す数２０のように表される。
【０１１０】
【数２０】
2016189062.tif 000022
ｘは観測値、ｔはタイムスタンプを表す。ｐは確率密度、θはパラメータを表す。パラメータは一時刻前までのデータから求める。
【０１１１】
数２０に表されるように、前記カーネル関数に用いる行列分解方法、確率密度関数及び、異常度スコア算出に用いるカーネル化確率モデルの組み合わせに基づいて算出された異常度スコアを、全ての時刻について加算した値は、予測的確率的コンプレキシティとみなすことができる。
【０１１２】
そして、予測的確率的コンプレキシティの合計が最も少なくなる、行列分解方法、確率密度関数及び、異常度スコア算出に用いるカーネル化確率モデルの組み合わせが、最もよく入力データの分布を表現している、ということを表す。
【０１１３】
すなわち、カーネル化確率モデル選択部３０１は、全ての時刻における異常度スコアの合計値が最少となる、前記カーネル関数にて用いる行列分解方法、確率密度関数及び、異常度スコア算出に用いるカーネル化確率モデルの組み合わせを選択する。
【０１１４】
本実施の形態では、情報量基準として予測的確率的コンプレキシティを用いているが、本発明はこれに限定されるものではなく、赤池情報量基準（ＡＩＣ）や、最小記述長（ＭＤＬ）などの情報量基準を用いてもよい。
【０１１５】
なお、カーネル化確率モデルの選択については、情報量基準によらず、当該異常検出装置に事前に定められたカーネル化確率モデルについて、図示しない入力部によって選択されるようにしてもよい。
【０１１６】
そして、カーネル化確率モデル選択部３０１にて選択された、前記カーネル関数に用いる行列分解方法、確率密度関数及び、異常度スコア算出に用いるカーネル化確率モデルの組み合わせに基づき算出された異常度スコアが、異常判定部３０２及び、異常度分布学習部４００へと入力される。
【０１１７】
異常度分布学習部４００は、入力された異常度スコアを逐次的に記録する。そして、その記録に基づいて、異常度スコアの確率分布を学習する。
本実施の形態では、記録された異常度スコアをパーセンタイル点へと変換する手法を用いる。
【０１１８】
異常度分布学習部４００に記録された異常度スコアをパーセンタイル点へと変換し、その９５％点として表される異常度スコアを、全体異常度、要素異常度それぞれについて、異常と判定されるかどうかの閾値として導出する。
そして、導出された異常度スコアの閾値を、学習閾値として、異常判定部３０２へと出力する。
ここで、閾値として用いるパーセンタイル点の数値については９５％に限定されるものではなく、任意の数字を用いることができる。
なお、異常度分布学習部４００における学習及び、閾値の導出方法については、上記のパーセンタイル法に限定されるものではなく、１クラスサポートベクターマシーンなどの外れ値検出手法、及び、変化点検出手法などの任意の手法を利用することができる。
【０１１９】
異常判定部３０２は、入力された全体異常度と全ての要素異常度につき、学習閾値と比較し、学習閾値よりも大きかった場合に、異常であると判定する。
そして、全体異常度が学習閾値より大きかった場合は異常検出対象９００全体について異常が発生している事を、図示しない表示部により、利用者へ提示する。
また、要素異常度のうち、学習閾値より大きかったものがあった場合は、異常検出対象９００の構成要素について異常が発生している事と、当該異常が発生している構成要素を、図示しない表示部により、利用者へ提示する。
【０１２０】
異常判定部３０２における異常の判定は、異常判定部３０２へ入力された異常度スコアのうち、最も直近のデータ、すなわち、異常検出対象９００の現在の状態を表す異常度スコアについておこなう。
また、異常の判定において、閾値との比較は、全体異常度と、全ての要素異常度について行う。これにより異常検出対象全体の異常と、異常検出対象の構成要素の異常を判定することができる。
なお、異常の判定は、入力データ内のすべての時刻におけるデータについておこなうようにしてもよい。これにより、過去に発生した異常の判定も行うことができる。
【０１２１】
なお、閾値としては、異常度分布学習部４００より入力された学習閾値を用いてもよいし、図示しない入力部により設定された設定閾値を用いてもよい。
また、本実施の形態において、異常かそうでないかを表す閾値を１つのみ設定する例を示しているが、本発明はこれに限定されるものではなく、異常の程度を表す複数の閾値を設定するようにしてもよい。
【０１２２】
以下に、本実施の形態における、異常判定部３０２における異常判定の結果例について説明する。
【０１２３】
異常度スコアのうち、全体異常度のみが異常と判断された場合、ネットワーク全体の通信量が通常より多い、もしくは少ないという異常が発生しているものとみなす。
【０１２４】
異常度スコアのうち、ある構成要素についての要素異常度のみが異常と判定された場合は、ネットワーク全体への影響が少ない異常が、該当構成要素において発生しているとみなす。
【０１２５】
異常度スコアのうち、全体異常度について異常と判定され、更に要素異常度についても異常と判定された構成要素が存在する場合は、全体的な異常が発生していて、その異常に大きく影響しているのが異常と判定された構成要素であるとみなす。
【０１２６】
本実施の形態においては、異常判定部３０２における異常判定の結果を、異常が発生したかどうかについてのみ、図示しない表示部により利用者へ提示する例を示しているが、これに加えて、文章による上記異常判定の結果例を、図示しない表示部により利用者へ提示するようにしてもよい。
【０１２７】
図４は本実施の形態における異常検出装置１００の概略動作を示すフローチャートであり、異常検出装置１００は以下のように動作する。
【０１２８】
データ出力部２００は、異常検出対象９００が有する全ての構成要素について、それぞれの状態を表現する数値、すなわち観測値を取得する。
取得した観測値を逐次的に記録してゆくことで、観測値の時系列データを生成する（ステップＳ３１）。
【０１２９】
特徴行列生成部２０１に、観測値が入力されることで、異常検出対象９００の構成要素の状態を表す行列データである、要素特徴行列が生成される。更に、特徴行列生成部２０１は、要素特徴行列を用いて、異常検出対象全体を表す行列データである、全体特徴行列を生成する。そして、データ出力部２００は全体特徴行列を時系列に並べたものを入力データとして、異常度算出部３００へと出力する。（ステップＳ３２）。
【０１３０】
次に、図示しない入力手段により、異常度算出部３００の前記カーネル関数において使用する行列分解の方法と、確率密度関数の種類及び、異常度スコアの算出に用いるカーネル化確率モデルの種類が設定される（ステップＳ３３）。
【０１３１】
次に、入力データ内の異なる時刻における全体特徴量同士の組み合わせ、及び、入力データ内の異なる時刻における要素特徴行列同士の組み合わせの全てについて、前述のカーネル関数へと入力し、ステップＳ３３にて設定された行列分解の方法及び、確率密度関数の組み合わせに基づいた内積値を算出する（ステップＳ３４）。
【０１３２】
そして、算出された内積値を用いて、ステップＳ３３において設定された、行列分解の方法、確率密度関数の種類及び、カーネル化確率モデルの種類ごとに、カーネル化確率モデルを構築する（ステップＳ３５）。
【０１３３】
そして、ステップＳ３４にて算出された、全体特徴量同士の内積値の組み合わせ、及び、要素特徴量同士の内積値の組み合わせを、対応する行列分解の方法及び、確率密度関数の組み合わせに基づき、ステップＳ３５にて構築されたカーネル化確率モデルへ入力することで、全体異常度と、要素異常度が算出され、記録される（ステップＳ３６）。
【０１３４】
次に、カーネル化確率モデル選択部３０１は、異常度算出部３００に記録された異常度スコアに基づき、情報量基準が最少の値となる、行列分解の方法、確率密度関数、及び、カーネル化確率モデルの組み合わせを選択する（ステップＳ３７）。
なお、カーネル化確率モデル選択部３０１の動作タイミングは異常判定部３０２の動作タイミングに同期させるようにしてもよいし、異常検出の開始前に一定の時間を設け、その間に取得された観測値に基づき、カーネル化確率モデル選択部３０１を動作させ、それ以後はカーネル化確率モデル選択部３０１を動作をさせないようにしてもよい。
【０１３５】
異常度分布学習部４００は、カーネル化確率モデル選択部３０１にて選択された、行列分解の方法、確率密度関数、及び、カーネル化確率モデルの組み合わせに基づき算出された異常度スコアを逐次的に記録する。そして、その記録に基づいて、異常度スコアをパーセンタイル点へと変換する（ステップＳ３８）。
そして、異常度スコアのうち９５％点にあたる異常度スコアを学習閾値として異常判定部３０２へと出力する。
なお、学習の方法については、パーセンタイル点へと変換する手法に限られるものではなく、１クラスサポートベクターマシーンなどの外れ値検出手法、及び、変化点検出手法、など任意の学習方法を利用することができる。
【０１３６】
異常判定部３０２は、異常度分布学習部４００にて学習された結果から導出された学習閾値と、入力された異常度スコアとを比較し、全体異常度及び、要素異常度が、閾値より高い数値である場合に、異常検出対象全体、及び、該当する異常検出対象の構成要素を、異常であるとして判定し、図示しない表示部により結果を表示する。（ステップＳ３９）。
【０１３７】
以上より、本実施の形態によれば、以下のような効果を奏する。
【０１３８】
異常検出装置１００は、異常度算出部３００において、次元が異なる２つの行列について内積値を計算することができるカーネル関数を用いて、異常度を算出するように構成したので、異常検出対象の構成要素数に増減が発生した場合にも異常検出ができるという効果を奏する。
【０１３９】
異常検出装置１００は、データ出力部２００において、全体特徴行列の部分列が要素特徴行列となるように、異常検出対象９００の観測値から入力データを生成する。
そして、異常度算出部３００において、カーネル化確率モデルへ入力データを入力することで、全体異常度と要素異常度が算出されるように構成したので、異常検出対象全体の異常と異常検出対象の構成要素の異常が同一の評価尺度によって検出されるという効果を奏する。
【０１４０】
異常検出装置１００は、異常判定部３０２において、異常検出対象全体の異常と、異常検出対象の構成要素の異常を、それぞれ全体異常度と要素異常度という同一の評価尺度に基づき判定するように構成したので、異常検出対象全体の異常に対する影響が大きい構成要素の推定ができるという効果を奏する。
【０１４１】
図１では、異常検出装置１００の全てがコンピュータで構成されている例を示している。しかし、本発明はこれに限定されるものではなく、異常検出装置１００の全部、又は一部が、専用のハードウェアで構成されていてもよい。
【０１４２】
また、異常検出対象９００についても、図２の例に限定されるものではなく、大規模プラントにおけるセンサネットワークや、為替・株価市場等の経済活動などでもよい。
【０１４３】
なお、全体特徴行列及び要素特徴行列の成分と形式について制限はなく、任意の成分及び形式の行列を用いることができる。
すなわち、行列成分については、実数のみで構成されていてもよく、複素数のみで構成されていてもよく、これらの組み合わせで構成されていてもよい。
また、行列形式については矩形行列、正方行列、対称行列、非対称行列のいずれの形式でもよく、次元についても任意の次元であってもよい。
【０１４４】
以上、実施の形態を参照して本発明を説明したが、本発明は上述した実施の形態に限定されるものではない。本発明の構成及び動作については、本発明の趣旨を逸脱しない範囲において、当業者が理解しうる様々な変更を行うことができる。
【符号の説明】
【０１４５】
１００…異常検出装置（ネットワーク異常検出システム）
２００…データ出力部
２０１…特徴行列生成部
３００…異常度算出部
３０１…カーネル化確率モデル選択部
３０２…異常判定部
４００…異常度分布学習部
９００…異常検出対象
【図１】
2016189062.tif 000023
【図２】
2016189062.tif 000024
【図３】
2016189062.tif 000025
【図４】
2016189062.tif 000026