【解決手段】異常検知装置10は、データ間の関係性に基づいて、検知対象である検知データの、データ間の関係性からの乖離を表す乖離値ベクトルと、比較対象である比較データの、データ間の関係性からの乖離を表す乖離値ベクトルと、を計算する乖離値ベクトル計算部122と、検知データの乖離値ベクトルの、比較データの乖離値ベクトルの集合からの離散度合を、異常を示す度合として計算する異常度計算部123と、離散度合が所定の閾値を超えた場合に検知データは異常であることを判定する異常判定部124と、を有する。
データ間の関係性に基づいて、検知対象である検知データの、データ間の関係性からの乖離を表す乖離値ベクトルと、比較対象である比較データの、データ間の関係性からの乖離を表す乖離値ベクトルと、を計算する乖離値ベクトル計算部と、
前記検知データの前記乖離値ベクトルの、前記比較データの前記乖離値ベクトルの集合からの離散度合を、異常を示す度合として計算する異常度計算部と、
前記離散度合が所定の閾値を超えた場合に前記検知データは異常であることを判定する異常判定部と、
を有することを特徴とする異常検知装置。
前記異常度計算部は、前記検知データの乖離値ベクトルの、前記比較データの乖離値ベクトルの集合からの、空間的な距離や密度などに基づき、前記離散度合を計算することを特徴とする請求項1〜3のいずれか一つに記載の異常検知装置。
前記異常度計算部は、前記比較データの乖離値ベクトルの平均と、前記比較データの乖離値ベクトルの共分散行列とを計算し、前記検知データの乖離値ベクトルと、前記比較データの乖離値ベクトルの平均と、前記比較データの乖離値ベクトルの共分散行列とに基づいて求められたマハラビノス距離を、前記離散度合として計算することを特徴とする請求項1〜3のいずれか一つに記載の異常検知装置。
前記異常度計算部は、前記比較データの乖離値ベクトルを高次元空間に写像した場合に該写像した乖離値ベクトルに対応する点における原点からの距離が最大化する平面を求め、前記検知データの乖離値ベクトルを前記高次元空間に写像した場合に該写像した乖離値ベクトルに対応する点が、前記平面から見て原点側にあるか否かを基に、前記離散度合を計算することを特徴とする請求項1〜3のいずれか一つに記載の異常検知装置。
データ間の関係性に基づいて、検知対象である検知データの集合におけるデータ間の乖離値ベクトルと、比較対象である比較データの集合におけるデータ間の乖離値ベクトルと、を計算するステップと、
前記検知データの前記乖離値ベクトルの、前記比較データの前記乖離値ベクトルの集合分布からの離散度合を、異常を示す度合として計算するステップと、
前記離散度合が所定の閾値を超えた場合に前記検知データは異常であることを判定するステップと、
をコンピュータに実行させるための異常検知プログラム。
【発明を実施するための形態】
【0022】
以下、図面を参照して、本発明の一実施の形態を詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。また、図面の記載において、同一部分には同一の符号を付して示している。
【0023】
[実施の形態1]
まず、第一の実施形態について説明する。以下の実施形態では、第一の実施形態に係る異常検知装置の構成、異常検知装置による処理の流れを説明する。
【0024】
[異常検知装置の構成]
図1は、実施の形態1に係る異常検知装置10の構成の一例を示すブロック図である。
図1に示すように、第一の実施形態に係る異常検知装置10は、通信処理部11、制御部12及び記憶部13を有する。
【0025】
通信処理部11は、接続される端末装置20との間でやり取りする各種情報に関する通信を制御する。例えば、通信処理部11は、比較対象であるデータ、検知対象となるデータ、及び、検知対象となるデータに対する異常検知処理の要求を端末装置20から受信する。また、例えば、通信処理部11は、異常検知処理の処理結果を端末装置20に対して送信する。
【0026】
制御部12は、各種の処理手順などを規定したプログラム及び所要データを格納するための内部メモリを有し、これらによって種々の処理を実行する。例えば、制御部12は、CPUやMPU(Micro Processing Unit)などの電子回路である。制御部12は、関係性推定部121、乖離値ベクトル計算部122、異常度計算部123及び異常判定部124を有する。
【0027】
関係性推定部121は、データ間の関係性を推定し、データ間の関係性を示すパラメータを算出する。例えば、与えられたデータについて、データ間の関係性が式として与えられているものの、パラメータに相当するものが未定である場合に、パラメータを推定する。具体的には、データXとデータYとの関係性が、「Y=aX+b」という単回帰であることは与えられているが、「a」及び「b」が不明な場合に、関係性推定部121は、与えられたデータを基に「a」及び「b」を推定する。この場合、関係性推定部121は、それを出力した機器等が正常な状態のデータ、言い換えると、異常な状態のデータを含まないデータを、パラメータ推定のために用いることが望ましい。
【0028】
乖離値ベクトル計算部122は、データ間の関係性に基づき、関係性からの乖離を表す乖離値ベクトルを計算する。実施の形態1では、乖離値ベクトル計算部122は、データ間の関係性に基づいて、検知対象である検知データの、データ間の関係性からの乖離を表す乖離値ベクトルを計算する。そして、乖離値ベクトル計算部122は、データ間の関係性に基づいて、比較対象である比較データの、データ間の関係性からの乖離を表す乖離値ベクトルを計算する。すなわち、乖離値ベクトル計算部122は、データ間に何らかの関係性が見られる場合に、その関係性からの乖離を示す値を、検知データ及び比較データについて計算する。なお、乖離値ベクトル計算部122は、データ間の乖離値ベクトルを、記憶部13(後述)の乖離値ベクトル記憶部131に記憶させてもよい。また、乖離値ベクトル計算部122は、関係性推定部121が算出したデータ間の関係性を示すパラメータを、データ間の関係性に適用し、データ間の乖離値ベクトルを計算する。なお、このデータ間の関係性は、予め与えられたものであってもよい。
【0029】
異常度計算部123は、検知データの乖離値ベクトルの、比較データの乖離値ベクトルの集合からの離散度合を計算する。具体的には、異常度計算部123は、検知データの乖離値ベクトルの、比較データの乖離値ベクトルの集合からの、空間的な距離や密度などに基づき、離散度合を計算する。この異常度計算部123が計算した離散度合は、異常を示す異常度として、異常判定部124(後述)における判定において用いられる。なお、異常度計算部123は、乖離値ベクトル記憶部131(後述)が記憶する乖離値ベクトルを用いて離散度合を計算してもよい。
【0030】
異常判定部124は、異常度計算部123が計算した離散度合が所定の閾値を超えた場合に、検知データは異常であることを判定する。異常判定部124は、離散度合が所定の閾値以下である場合に、検知データは正常であることを判定する。異常判定部124による判定結果は、異常検知結果として、通信処理部11を介して、例えば、端末装置20に出力される。
【0031】
記憶部13は、RAM(Random Access Memory)、フラッシュメモリ(Flash Memory)等の半導体メモリ素子、又は、ハードディスク、光ディスク等の記憶装置によって実現され、異常検知装置10を動作させる処理プログラムや、処理プログラムの実行中に使用されるデータなどが記憶される。記憶部13は、乖離値ベクトル計算部122が計算した乖離値ベクトルを記憶する乖離値ベクトル記憶部131を有する。
【0032】
[処理対象のデータの例]
次に、異常検知装置10における処理対象のデータの例について説明する。
図2は、異常検知装置10における処理対象のデータ構成の一例を示す図である。
【0033】
図2に示すように、例えば、検知データとして、「X
1」〜「X
N」というN種類のデータが与えられたとする。
図2において、「x
nm」は、n番目のデータのmにおける観測値である。添字の「m」は、観測された地点や時点を意味する。例えば、「X
1」〜「X
N」がユーザ「1」からユーザ「N」を示し、データの要素が商品「m」の購入の有無を表す場合、添字が等しいデータは、同一商品の購入の有無を意味する。或いは、「X
1」〜「X
N」がサーバ「1」からサーバ「N」のCPU使用率を示し、データの要素が時点「m」におけるCPU使用率を表す場合、添字が等しいデータは、観測時点が等しいことを意味する。
【0034】
[関係性推定部の処理]
関係性推定部121は、「X
1」〜「X
N」の間に成り立つ関係性を推定し、「X
1」〜「X
N」間の関係性を示すパラメータを算出する。
【0035】
この場合、関係性推定部121は、それを出力した機器等が正常な状態のデータ、言い換えると、異常な状態のデータを含まないデータを、パラメータ算出のために用いることが望ましい。正常な状態のデータであるか否かは、機器が正常であったことから判断してもよい。また、正常な状態のデータであるか否かは、データを見て、異常値に相当するものを含まないことなどを基に、人間が視認して判断してもよい。これは、異常判定部124での異常検知において、「正常と異なる」ことを「異常」とみなすという指標を用いるためである。さらに、関係性推定部121において、正常なデータのみを用いて、正常な状態のデータに成り立つ関係式を推定することで、異常検知の感度を向上させることが期待できる。
【0036】
例えば、データ間の関係性が式として与えられているものの、パラメータに相当するものが未定である場合に、関係性推定部121は、このパラメータを推定する。具体的には、データXとデータYとの関係性が、「Y=aX+b」という単回帰であることは与えられているが、「a」及び「b」が不明な場合に、関係性推定部121は、与えられたデータを基に「a」及び「b」を推定する。
【0037】
また、関係性推定部121は、データ間の関係性として、例えば、「X
1」〜「X
N」のいずれかを目的変数、残りを説明変数とする重回帰式が与えられる場合、この重回帰式のパラメータを求める。また、関係性推定部121は、データ間の関係性として、「X
1」〜「X
N」の中から2組ずつを選択し、2組ごとに一方を目的変数とし、他方を説明変数とする単回帰式が与えられる場合、この単回帰式のパラメータを求める。
【0038】
或いは、関係性推定部121は、データ間の関係性として、各「X
N」が系列データであり、過去のデータから将来を予測する自己回帰式またはベクトル自己回帰式が与えられる場合、この自己回帰式またはベクトル自己回帰式のパラメータを求めてもよい。添え字の「1,2,…,m,…」に順序性がある場合、例えば、前述のサーバのCPU使用率がデータである例などの場合である。
【0039】
また、データ間の関係性は、混合分布モデルでモデリングしてあってもよいし、より複雑な非線形な関係を表す式で示されたものであってもよい。例えば、何らかの確率分布を用いて、データ間の関係性を表してもよい。例えば、データ間の関係性が「K」個のクラスタを持つ、混合分布モデルにより表現される場合、関係性推定部121は、(1)式に示す関係式のパラメータを求める。
【0041】
なお、「X
1」〜「X
N」の間に成り立つ関係性が予め与えられている場合には、本実施の形態では、関係性推定部121の算出処理を省略することができる。
【0042】
[乖離値ベクトル計算部の処理]
続いて、乖離値ベクトル計算部122は、「X
1」〜「X
N」および「X
1」〜「X
N」の間に成り立つ関係性から、乖離値ベクトルを計算する。
図3は、乖離値ベクトル計算部122が行う乖離値ベクトルの計算処理の例を示す図である。
【0043】
図3に示す例では、乖離値ベクトルは、添字「m」ごとに計算されるものとしている。また、この例では、
図3に示すデータ「X
1」〜「X
N」が与えられ、この「X
1」〜「X
N」の間に成り立つ関係性を、「F(X
1,X
2,・・・,X
N)=0」としている。この例では、関係式が、「X
1」〜「X
N」のいずれかを目的変数、残りを説明変数とする重回帰式であることをイメージしている。
【0044】
具体的には、
図3における「X
1の乖離値」は、添字「m」における観測値「x
1m」と、「m」において観測されたデータから、関係性を用いて推定される「X
1」の値「F(x
1m,x
2m,・・・,x
Nm)」と、の差である。また、「X
2の乖離値」は、添字「m」における観測値「x
2m」と、「m」において観測されたデータから、関係性を用いて推定される「X
2」の値「F(x
1m,x
2m,・・・,x
Nm)」と、の差である。乖離値ベクトル計算部122は、
図3に示す計算処理を行うことによって、「X
1」〜「X
N」の各乖離値を計算する。そして、
図3に示すように、乖離値ベクトル計算部122は、共通の添字「m」を持つ複数種類のデータから計算した乖離値を、乖離値ベクトルとして出力する。
【0045】
また、データ間の関係性は「F(X
1,X
2,・・・,X
N)=0」のように、全てのデータに対して一つの関係性が与えられる場合だけでなく、データの組に対して与えられる場合もある。例えば、「X
1」〜「X
N」の中から2組ずつを選択し、2組ごとに一方を目的変数、他方を説明変数とする単回帰式で関連性が与えられる場合である。そこで、
図4を参照して、この場合における乖離値ベクトルの計算処理について説明する。
図4は、乖離値ベクトル計算部122が行う乖離値ベクトルの計算処理の他の例を示す図である。
【0046】
図4に示すように、例えば、「X
1のX
2から見た乖離値」は、添字「m」における観測値「x
1m」と、「m」において観測されたデータから、「X
1」と「X
2」の関係性「F
12」を用いて推定される「X
1」の値「F
12(x
1m,x
2m)」と、の差を乖離値である。乖離値ベクトル計算部122は、
図4に示す計算処理を行うことによって、「X
1のX
2から見た乖離値」〜「X
N−1のX
Nから見た乖離値」を計算する。そして、乖離値ベクトル計算部122は、
図4に示すように、共通の添字「m」を持つ複数種類のデータから計算した乖離値を、乖離値ベクトルとして出力する。
【0047】
なお、
図4では特に指定していないが、データ間の関係性が一部の組み合わせに対してのみ成り立つと考えてもよい。例えば、「X
1」と「X
2」の間は、相関係数が大きく相関関係が認められるのに対し、「X
1」と「X
3」の間は、相関係数が小さく相関関係が認められないような場合である。このような場合、乖離値ベクトル計算部122は、関係性が認められるものに対してのみ乖離値を計算すればよい。
【0048】
また、データ間の関係性が(1)式に示す混合分布モデルで表現される場合には、乖離値ベクトル計算部122は、以下の(2)式で定義される各クラスタへの帰属度「m
k」を計算する。帰属度が大きい程、そのクラスタへの帰属度が高い、すなわち、そのクラスタの中心点に近いと言える。言い換えると、帰属度が大きい程、そのクラスタへの乖離度が小さいと言える。
【0050】
この場合、乖離値ベクトル計算部122は、(2)式を用いて計算した帰属度「m
k」に対し、乖離値ベクトルとして、「(m
1,m
2,・・・,m
K)」を求める。或いは、乖離値ベクトル計算部122は、(2)式を用いて計算した帰属度「m
k」に対し、乖離値ベクトルとして、「−logΣπ
kP(x|θ
k)」のように、負の対数尤度を計算してもよい。なお、この場合には、乖離値ベクトルは、1次元となる。
【0051】
乖離値ベクトル計算部122は、上記に示したような計算処理を行うことによって、データ間の関係性に基づいて検知データ及び比較データのデータ間の関係性からの乖離を表す乖離値ベクトルを計算する。なお、一般的には、比較データは複数存在する。もちろん、比較データは、一つでもよい。
【0052】
[異常度計算部の処理]
次に、異常度計算部123の処理について説明する。異常度計算部123は、乖離値ベクトル計算部122が、検知データから計算した乖離値ベクトルと、比較データから計算した乖離値ベクトルと、を用いて、離散度合を計算する。
【0053】
具体的には、異常度計算部123は、検知データの乖離値ベクトルが、比較データの乖離値ベクトルの集合から、空間的にどのくらい離れているかを計算する。この場合、異常度計算部123は、例えばk−NN(k−nearest neighbor method)法を用いて、検知データの乖離値ベクトルが、比較データの乖離値ベクトルの集合から、空間的にどのくらい離れているかを計算する。
図5を参照して、異常度計算部123が、k−NN法を用いて、離散度合を計算した場合について説明する。
【0054】
図5は、異常度計算部123による異常度計算処理を説明する図である。
図5は、乖離値ベクトルの次元1〜次元3に対し、乖離値ベクトル計算部122が比較データ及び検知データから計算した各乖離値ベクトルをプロットした図である。
図5において、原点近傍に位置する白丸のデータ群R1は、比較データから計算された乖離値ベクトルに対応する。点P1は、検知データから計算した乖離値ベクトルに対応する(
図5の(1)参照)。k−NN法では、検知データの乖離値に対応する点P1から見て、k番目に近い点Pkまでの距離を、異常度(離散度合)として計算する(
図5の(2)参照)。ここで、「k」は、パラメータであり、ヒューリスティックスを用いて設定される。
【0055】
また、異常度計算部123は、検知データの乖離値ベクトルが、比較データの乖離値ベクトルの集合から、どのくらい空間的に疎な位置に存在するかを計算してもよい。この場合、異常度計算部123は、例えば、LOFを用いて検知データの乖離値ベクトルが、比較データの乖離値ベクトルの集合から、空間的にどのくらい離れているかを計算する。
【0056】
図6は、異常度計算部123による異常度計算処理の他の例を説明する図である。LOFは、空間内での局所的密度を計算する手法である。
図6の白丸のデータ群R1は、比較データの乖離値ベクトルに対応する点の集まりであり、点P1は、検知データから計算した乖離値ベクトルに対応する点である(
図6の(1)参照)。
【0057】
具体的には、検知データの乖離値(点P1)から見て、k番目までに近い点Pkまでの距離の平均を、それらk番目の点Pkから見てm番目までに近い点Pmまでの距離の平均で割った値を異常度(離散度合)として計算する(
図6の(2)参照)。例えば、データ群R1の密度の高い位置に、検知データの乖離値ベクトルに対応する点P1があった場合には、点P1からk番目に近い点Pkまでの距離の平均が小さくなり、点Pkから点Pmまでの距離も小さくなるため、離散度合は小さくなる。一方、データ群R1の密度の低い位置に点P1があった場合には、点P1からk番目に近い点Pkまでの距離の平均が大きくなるため、離散度合は小さくなる。なお、「k」及び「m」は、パラメータであり、ヒューリスティックスを用いて設定される。
【0058】
また、比較データは、正常な状態のデータに限定することで、後述する異常判定部124の異常検知精度を高めることができる。「正常な状態のデータ」の定義は前述の通りである。また、正常な状態のデータのみを比較データとした場合、乖離値ベクトルは、空間的には局所に集中することに注意しておく。例えば
図5及び
図6において説明した方法を用いて乖離値ベクトルを計算すると、空間的には原点近傍に乖離値ベクトルが集中する。また、(2)式に示す帰属度「m
k」に対し、乖離値ベクトルを(m
1,m
2,・・・,m
K)で定義した場合は、乖離値ベクトルは、空間的にはK個のクラスタに集中する。
【0059】
また、検知データと比較データとが別々に与えられる場合がある。例えば、ある特定の過去1日分の複数のサーバのCPU使用率を比較データとして異常検知装置10に届き、検知データは、異常検知装置10の運用時に逐次的に届くような場合である。このような場合、比較データの乖離値ベクトルを、検知対象のデータが届くたびに計算し直すことは計算リソース上、効率的ではない。そこで、記憶部13の乖離値ベクトル記憶部131は、このような場合に比較データの乖離値を再計算する必要がないように、比較データの乖離値ベクトルを記憶しておく。乖離値ベクトル記憶部131を利用する場合、異常度計算部123は、検知データの乖離値ベクトルと、乖離値ベクトル記憶部131が記憶する乖離値ベクトルと、を比較する。
【0060】
そして、乖離値ベクトル記憶部131を利用する場合も、比較データとして、正常な状態のデータから計算した乖離値ベクトルのみを記憶させることで、異常検知精度を高めることができる。
【0061】
[異常判定部の処理]
異常判定部124は、異常度計算部123が計算した離散度合が所定の閾値を超えた場合に、検知データは異常であることを判定する。異常判定部124は、離散度合が所定の閾値以下である場合に、検知データは正常であることを判定する。
【0062】
ここで、判定の基準となる閾値は、予め設定されたものである。或いは、テストデータがある場合は、テストデータ中の特定のデータ、すなわち、異常が発生した際のデータにおける異常度を閾値として設定してもよい。または、テストデータにおける異常度が、適当な確率分布に従うと考え、その上位5%或いは上位1%などの値を閾値として設定してもよい。異常判定部124による判定結果は、異常検知結果として、通信処理部11を介して、例えば、端末装置20に出力される。
【0063】
[異常検知処理の流れ]
次に、異常検知装置10が実行する異常検知処理について説明する。
図7は、異常検知装置10が実行する異常検知処理の処理手順を示すフローチャートである。
【0064】
まず、異常検知装置10では、関係性推定部121が、入力されたデータに対して、データ間の関係性を推定し、データ間の関係性を示すパラメータを算出する関係性推定処理を行う(ステップS1)。関係性推定部121は、それを出力した機器等が正常な状態のデータ、言い換えると、異常な状態のデータを含まないデータを、パラメータ推定のために用いる。データ間に成り立つ関係性が予め与えられている場合には、本ステップS1を省略することができる。
【0065】
そして、乖離値ベクトル計算部122は、データ間の関係性に基づいて、検知対象である検知データの集合及び比較データの集合におけるデータ間の乖離値ベクトルを計算する乖離値ベクトル計算処理を実行する(ステップS2)。ここで、乖離値ベクトル計算部122は、比較データが予め与えられている場合、該比較データの集合におけるデータ間の乖離値ベクトルを計算して、乖離値ベクトル記憶部131に記憶する。
【0066】
続いて、異常度計算部123は、検知データの乖離値ベクトルの、比較データの乖離値ベクトルの集合からの離散度合を、異常度として計算する異常度計算処理を行う(ステップS3)。なお、異常度計算部123は、比較データの乖離値ベクトルが予め計算されて乖離値ベクトル記憶部131に記憶されている場合、乖離値ベクトル記憶部131から比較データの乖離値ベクトルを読み出して、比較データの乖離値ベクトルの集合を取得する。
【0067】
そして、異常判定部124は、異常度計算部123が計算した離散度合を基に、検知データが異常であるか否かを判定する異常判定処理を行う(ステップS4)。この場合、異常判定部124は、異常度計算部123が計算した離散度合が所定の閾値を超えた場合に、検知データは異常であることを判定する。一方、異常判定部124は、離散度合が所定の閾値以下である場合に、検知データは正常であることを判定する。異常判定部124は、判定結果を異常検知結果として、通信処理部11を介して端末装置20に出力し、異常検知処理を終了する。
【0068】
[異常検知処理の具体例]
図8は、実施の形態1の異常検知処理を説明する図である。
図8は、データとして、X及びYの組が与えられたとして、座標平面上にその組をプロットしたものである。
図8の白丸は、正常な状態の比較データに対応する。また、点Pbは、相関関係を維持したままで、それまでには存在していなかった値をとった場合の例である。点Prは、相関関係が崩れた場合の例である。また、正常である比較データ(
図8の白丸)を基に、X及びYの関係性として、直線Ltで示される「Y=aX+b」という単回帰が与えられている。
【0069】
図8の示す点Pbは、直線Lt上に位置し、正常である場合に成り立つ相関関係を維持しているため、正常であることが想定される。ここで、従来用いられていたLOFでは、データ間の関係性を考慮しておらず、白丸の密度が低い点に存在する点Pb及び点Prは、いずれも異常であると検知される。
【0070】
これに対し、本実施の形態1では、データ間の関係性に基づいて、検知データの集合におけるデータ間の乖離値ベクトルと、比較データの集合におけるデータ間の乖離値ベクトルと、を計算し、検知データの乖離値ベクトルの、比較データの乖離値ベクトルの集合からの離散度合を、異常度として異常判定を行う。
【0071】
例えば、点Pbが検知データである場合を例とする。この点Pbは、直線Lt上に位置するため、点Pbに示す「X,Y」は、直線Ltで示される「Y=aX+b」の関係を有していると言える。したがって、この点Pbに示す「X,Y」について、直線Ltで示される「Y=aX+b」に対する乖離値ベクトルを計算し、その乖離値ベクトルの、正常である比較データ(白丸)の乖離値ベクトルの集合からの離散度合を計算すると、ほぼ0となり、点Pbは正常であることを検知できる。
【0072】
一方、点Prが検知データである場合について説明する。この点Prは、直線Ltから離れているため、点Prに示す「X,Y」は、「Y=aX+b」の関係を有していないと言える。したがって、この点Prに示す「X,Y」の、直線Ltで示される「Y=aX+b」に対する乖離値ベクトルを計算し、その乖離値ベクトルの、正常である比較データ(白丸)の乖離値ベクトルの集合からの離散度合を計算すると、その値は大きくなり、Prは異常であることを検知できる。
【0073】
このように、異常検知装置10は、乖離値ベクトルという概念を導入し、検知対象のデータの乖離値ベクトルと、正常である比較データの乖離値ベクトルの集合との空間的な距離や密度に基づき離散度合(異常度)を計算し、検知データの異常の有無を判定する。したがって、異常検知装置10は、データ間に相関がある場合に、相関に乗っているが、比較データの集合から外れた、正常であると想定できるデータ(例えば、点Pb)を、正常であると検知することができる。
【0074】
また、
図14や
図15のように、データ間に単なる相関関係でない、複雑な関係性が見られる場合であっても、データ間の関係性からの乖離値ベクトルという概念により、異常検知を精度よく実行することができる。
【0075】
[実施の形態1の効果]
上記のように、実施の形態1では、乖離値ベクトルという概念を導入し、データ間の関係性に基づいて計算した、検知データの乖離値ベクトルと、正常である比較データの乖離値ベクトルの集合との空間的な距離や密度に基づき離散度合(異常度)を計算し、検知データの異常の有無を判定するため、データ間の関係性に基づいた検知対象データの異常検知を精度よく実行することができる。
【0076】
[実施の形態2]
次に、実施の形態2について説明する。実施の形態2では、離散度合として、検知データ及び比較データの乖離値ベクトルに基づいたマハラビノス距離を計算し、異常の有無を判定する。なお、実施の形態2に係る異常検知装置は、
図1に示す異常検知装置10と同等の構成を有する。
【0077】
実施の形態2では、実施の形態1と同様に、乖離値ベクトル計算部122が、データ間の関係性に基づいて、検知対象である検知データの集合におけるデータ間の乖離値ベクトルを計算する。そして、乖離値ベクトル計算部122は、比較データの集合におけるデータ間の乖離値ベクトルを計算する。なお、実施の形態1と同様に、乖離値ベクトル計算部122は、比較データが予め与えられている場合、該比較データの集合におけるデータ間の乖離値ベクトルを計算して、乖離値ベクトル記憶部131に記憶してもよい。
【0078】
そして、異常度計算部123は、比較データの乖離値ベクトルが多次元正規分布に従うと仮定し、それらの乖離値ベクトルの平均と共分散行列とを計算する。続いて、異常度計算部123は、(3)式で定義されるマハラビノス距離を計算し、このマハラビノス距離を離散度合(異常度)として出力する。
【0080】
異常判定部124は、異常度計算部123が計算したマハラビノス距離が一定の閾値を超えた場合に、検知データは異常であることを判定する。一方、異常判定部124は、異常度計算部123が計算したマハラビノス距離が一定の閾値以下である場合には、検知データは正常であることを判定する。なお、本実施の形態2では、比較データの乖離値ベクトルが多次元正規分布に従うと仮定しており、この場合、乖離値ベクトルのマハラビノス距離は近似的にx二乗分布に従うため、x二乗分布に基づき閾値を決定することができる。このような方法は、ホテリングのT
2検定と呼ばれている(「竹内啓,統計学辞典 P112,東洋経済新聞社,1989」参照)。
【0081】
[実施の形態2の効果]
このように、実施の形態2においては、離散度合として、マハラビノス距離を計算し、計算したマハラビノス距離と所定の閾値との比較結果によって、異常の有無を判定する。マハラビノス距離は、データ間の関係性に基づく検知データ及び比較データの乖離値ベクトルを基に計算されたものであるため、実施の形態2は、実施の形態1と同様に、データ間の関係性に基づいた検知対象データの異常検知を精度よく実行することができる。
【0082】
[実施の形態3]
次に、実施の形態3について説明する。この実施の形態3に係る異常検知装置は、
図1に示す異常検知装置10と同等の構成を有する。
【0083】
また、実施の形態1と同様に、乖離値ベクトル計算部122は、データ間の関係性に基づいて、検知対象である検知データの集合におけるデータ間の乖離値ベクトルを計算する。そして、乖離値ベクトル計算部122は、比較データの集合におけるデータ間の乖離値ベクトルを計算する。なお、実施の形態1と同様に、乖離値ベクトル計算部122は、比較データが予め与えられている場合、該比較データの集合におけるデータ間の乖離値ベクトルを計算して、乖離値ベクトル記憶部131に記憶してもよい。そこで、次に、異常度計算部123の処理を説明する。
【0084】
[異常度計算部の処理]
実施の形態3では、異常度計算部123は、さらに、One-class Support Vector Machine(以下「One-class SVM」と略す。詳しくは、「B. Scholkopf, J. C. Platt, J. Shawe-Taylor, A. J. Smola, and R. C. Williamson, “Estimating the Support of a High-Dimensional Distribution”, Neural Computation, 13(7):1443-1471, 2001.」参照。)の概念に基づいて、比較データの乖離値ベクトルの集合を含む領域を推定する。
【0085】
具体的に、
図9を参照して、離散度合(異常度)を求める処理について説明する。
図9は、実施の形態3に係る異常度計算処理を説明する図である。
図9は、データの乖離値ベクトルを所定の高次元空間に写像したものである。
【0086】
異常度計算部123は、One-class SVMに基づき、正常データである比較データの乖離値ベクトルを、高次元空間(
図9ではφの次元1及び次元2)に写像する。そして、異常度計算部123は、写像した比較データの乖離値ベクトルに対応する点の、原点からの距離(マージン)が最大化するような平面(超平面)を求める。この平面は、
図9の例では、超平面Leとして示している。この超平面Leは、正常である比較データの乖離値ベクトルの集合の境界に対応するものであり、実際には、写像した比較データの乖離値ベクトルを示す点は、超平面Leよりも原点側でない方に位置する。
【0087】
続いて、異常度計算部123は、検知対象データの乖離値ベクトルを、比較データに対して写像した高次元空間と同じ高次元空間に写像する。例えば、
図9に示すように、写像した検知データの乖離値ベクトルを示す各点は、超平面Leから見て、原点側にある群R2と、原点側にない群R3とに分けられる。異常度計算部123は、写像した検知データの乖離値ベクトルに対応する点が、超平面Leから見て原点側にあるか否かを基に、離散度合(異常度)を計算する。
【0088】
そこで、異常度計算部123における計算処理を、
図10を参照して、説明する。
図10は、実施の形態3に係る異常度計算処理を説明する図である。まず、比較データの乖離値ベクトルを「e
1,e
2,・・・,e
M」とする。この比較データの乖離値ベクトルに対し、
図10に示す式G((A)式参照)を、(B)式及び(C)式に示す条件下で最小化する最小化問題を解く。なお、記号「<,>」は内積を表す。
【0089】
この問題では、超平面として、各データの(「φ(ベクトルe
m)」の距離を、「d
m」としたときに、最も小さいd
mを最大化する超平面を求めようとしている。言い換えると、最も超平面に近いデータまでの距離を最大化する、超平面のパラメータ「ベクトルw」と「ρ」を求めようとしている。
【0090】
この最小化問題は、以下の(4)式に示す「L」を最小化するLagrangeの未定乗数法により解くことができる。この(4)式の1行目は、Gそのものであり、(4)式の2行目については、
図10の(B)式に示す制約条件を反映し、(4)式の3行目については、
図10の(C)式に示す制約条件を反映する。
【0092】
図11は、実施の形態3に係る異常度計算処理及び異常判定処理を説明する図である。異常度計算部123は、異常データの乖離値ベクトルを「e’」としたとき、
図11に示す式f(e’)によって、検知データの乖離値ベクトル「e’」に対する異常度を計算する。式f(e’)は、(4)式で求めたパラメータを適用し、比較データの乖離値ベクトル「e
m」を高次元空間に写像した点と、検知データの乖離値ベクトル「e’」を高次元空間に写像した点との距離に基づいた異常度を計算するものである。異常度計算部123は、この式f(e’)を用いた計算を行うことによって、写像した検知データの乖離値ベクトルに対応する点が、超平面Leから見て原点側にあるか否かを示す異常度を求めることができる。
【0093】
このように、異常度計算部123は、上述のOne-class SVMに従い、写像した検知データの乖離値ベクトルを示す点が、平面(例えば、超平面Le)から見て原点側にあるか、或いは、平面から見て原点側にないかを、式f(e’)を用いて計算する。
【0094】
[異常判定部の処理]
そして、実施の形態3では、異常判定部124は、写像した検知データの乖離値ベクトルを示す点が、平面から見て原点側にある場合には、該検知データは異常であると判定する。一方、異常判定部124は、写像した検知データの乖離値ベクトルを示す点が、平面から見て原点側にない場合には、正常であると判定する。例えば、異常判定部124は、
図9に示す写像した検知データの乖離値ベクトルを示す各点のうち、超平面Leから見て、原点側にある群R2については、検知データは異常であると判定する。一方、異常判定部124は、超平面Leから見て、原点側にない群R3については、検知データは正常であると判定する(
図9の枠B1参照)。
【0095】
ここで、異常判定部124は、検知データに対し式(e’)で求めた異常度と、前述の未定乗数法((4)式)によって求めた超平面に対応するパラメータ(ρチルダ)と、を比較することによって、検知データの異常の有無を判定する。すなわち、
図11に示すように、異常判定部124は、検知データについての異常度f(e’)が、(4)式からパラメータ(ρチルダ)よりも小さい場合には、検知データが超平面Leよりも原点側にあると判断して、該検知データは異常であると判定する。一方、異常判定部124は、検知データについての異常度f(e’)が、パラメータ(ρチルダ)よりも大きい場合には、検知データが超平面Leよりも原点側にないと判断して、正常であると判定する。
【0096】
[実施の形態3の効果]
このように、実施の形態3においては、比較データの乖離値ベクトルを高次元空間に写像して原点からの距離が最大化する超平面を求める。そして、実施の形態3では、検知データの乖離値ベクトルを高次元空間に写像した場合に該写像した乖離値ベクトルに対応する点が、超平面から見て原点側にあるか否かを基に異常度を計算して、異常の有無を判定する。すなわち、実施の形態3においても、実施の形態1と同様に、データ間の関係性に基づいて計算した、検知データの乖離値ベクトルと、正常である比較データの乖離値ベクトルの集合との距離によって、検知データの異常の有無を判定しているため、データ間の関係性に基づいた検知対象データの異常検知を精度よく実行することができる。
【0097】
[実施形態のシステム構成について]
図1に示した異常検知装置10の各構成要素は機能概念的なものであり、必ずしも物理的に図示のように構成されていることを要しない。すなわち、異常検知装置10の機能の分散および統合の具体的形態は図示のものに限られず、その全部または一部を、各種の負荷や使用状況などに応じて、任意の単位で機能的または物理的に分散または統合して構成することができる。
【0098】
また、異常検知装置10においておこなわれる各処理は、全部または任意の一部が、CPU(Central Processing Unit)およびCPUにより解析実行されるプログラムにて実現されてもよい。また、異常検知装置10においておこなわれる各処理は、ワイヤードロジックによるハードウェアとして実現されてもよい。
【0099】
また、実施形態において説明した各処理のうち、自動的におこなわれるものとして説明した処理の全部または一部を手動的に行うこともできる。もしくは、手動的におこなわれるものとして説明した処理の全部または一部を公知の方法で自動的に行うこともできる。この他、上述および図示の処理手順、制御手順、具体的名称、各種のデータやパラメータを含む情報については、特記する場合を除いて適宜変更することができる。
【0100】
[プログラム]
図12は、プログラムが実行されることにより、異常検知装置10が実現されるコンピュータの一例を示す図である。コンピュータ1000は、例えば、メモリ1010、CPU1020を有する。また、コンピュータ1000は、ハードディスクドライブインタフェース1030、ディスクドライブインタフェース1040、シリアルポートインタフェース1050、ビデオアダプタ1060、ネットワークインタフェース1070を有する。これらの各部は、バス1080によって接続される。
【0101】
メモリ1010は、ROM(Read Only Memory)1011及びRAM1012を含む。ROM1011は、例えば、BIOS(Basic Input Output System)等のブートプログラムを記憶する。ハードディスクドライブインタフェース1030は、ハードディスクドライブ1090に接続される。ディスクドライブインタフェース1040は、ディスクドライブ1100に接続される。例えば磁気ディスクや光ディスク等の着脱可能な記憶媒体が、ディスクドライブ1100に挿入される。シリアルポートインタフェース1050は、例えばマウス1110、キーボード1120に接続される。ビデオアダプタ1060は、例えばディスプレイ1130に接続される。
【0102】
ハードディスクドライブ1090は、例えば、OS1091、アプリケーションプログラム1092、プログラムモジュール1093、プログラムデータ1094を記憶する。すなわち、異常検知装置10の各処理を規定するプログラムは、コンピュータ1000により実行可能なコードが記述されたプログラムモジュール1093として実装される。プログラムモジュール1093は、例えばハードディスクドライブ1090に記憶される。例えば、異常検知装置10における機能構成と同様の処理を実行するためのプログラムモジュール1093が、ハードディスクドライブ1090に記憶される。なお、ハードディスクドライブ1090は、SSD(Solid State Drive)により代替されてもよい。
【0103】
また、上述した実施の形態の処理で用いられる設定データは、プログラムデータ1094として、例えばメモリ1010やハードディスクドライブ1090に記憶される。そして、CPU1020が、メモリ1010やハードディスクドライブ1090に記憶されたプログラムモジュール1093やプログラムデータ1094を必要に応じてRAM1012に読み出して実行する。
【0104】
なお、プログラムモジュール1093やプログラムデータ1094は、ハードディスクドライブ1090に記憶される場合に限らず、例えば着脱可能な記憶媒体に記憶され、ディスクドライブ1100等を介してCPU1020によって読み出されてもよい。あるいは、プログラムモジュール1093及びプログラムデータ1094は、ネットワーク(LAN、WAN等)を介して接続された他のコンピュータに記憶されてもよい。そして、プログラムモジュール1093及びプログラムデータ1094は、他のコンピュータから、ネットワークインタフェース1070を介してCPU1020によって読み出されてもよい。
【0105】
以上、本発明者によってなされた発明を適用した実施の形態について説明したが、本実施の形態による本発明の開示の一部をなす記述及び図面により本発明は限定されることはない。すなわち、本実施の形態に基づいて当業者等によりなされる他の実施の形態、実施例及び運用技術等は全て本発明の範疇に含まれる。