【解決手段】本発明の実施形態に係る情報処理装置は、データ加工部と、学習部とを備える。前記データ加工部は、複数の対象装置の状態を表すN次元のデータ群を、複数のパターンで離散化する。前記学習部は、前記複数のパターンで前記データ群を離散化した複数の離散化データ群と、LOF(Local outlier factor)のパラメータKの複数の候補値とをそれぞれ1つずつ組み合わせて複数の仮モデルを生成し、前記データ群に基づき前記複数の仮モデルを評価することにより、前記複数の仮モデルからモデルを選択する。
前記データ加工部は、前記データに含まれるN個の値のそれぞれを第1の値〜第Nの値により除算し、除算後の値を端数処理し、端数処理後の値に前記第1の値〜第Nの値のそれぞれを乗じることにより、前記データ群を離散化し、前記第1の値〜第Nの値は、前記データ群における前記N個の値のそれぞれのばらつきを表す値を所定値で除算した値である
請求項1ないし7のいずれか一項に記載の情報処理装置。
【発明を実施するための形態】
【0011】
以下、図面を参照しながら、本発明の実施形態について説明する。
【0012】
本実施形態は、LOF(Local outlier factor)による機械学習において、現実的な学習データ数(サンプル数)に基づき、高い精度で外れ値を検知可能とするモデル(LOFモデル)、すなわち、誤検知の極めて少ないモデルを学習することを特徴の1つとする。
【0013】
以下、LOF(Local outlier factor)の概要と、本発明者が本発明をなすに至った経緯について説明する。
【0014】
図1に、多数のデータを複数次元空間にプロットした図を示す。黒いドット(点)が、プロットされたデータを表す。ここでは、説明のため、2次元を想定するが、3次元以上でもかまわない。データ集団C
1とデータ集団C
2が存在し、さらに、これらのデータ集団から離れた位置にデータO
2とデータO
1が存在する。データ集団C
2の密度は、データ集団C
1の密度より高く、全体のデータ分布で見ると、データの密度が偏っているといえる。データ集団C
1とデータ集団C
2はともに正常データであり、データO
1とデータO
2共に外れ値であるとする。人間の目で見ると、データO
1とデータO
2共に外れ値であることが容易に分かるが、これを自動で認識しようとする場合、単純には実現できない。
【0015】
図1のデータ群を対象に、距離ベース外れ値検知(例えばK−近傍法)を行うことを考える。この場合、データ集団C
2から見てデータO
2が外れ値となるような基準(閾値)を設定すると、データ集団C
2に比べて密度が低いデータ集団C
1に属する個々のデータは、この基準に照らすと、全て外れ値とみなされてしまう。逆に、データ集団C
1から見てデータO
1が外れ値となるような基準を設定してしまうと、データO
2は、データ集団C
2と距離が近いと判断され、正常データとみなされてしまう。
【0016】
このように、データが生成されるメカニズムが本質的に異なるために空間内で正常データの分布(密度)に格差がある場合、K−近傍法等では、検知基準を適切に設定できず、外れ値を正しく検出できなくなる場合がある。このような場合においても、外れ値を正しく検知可能とするアルゴリズムがLOFである。
【0017】
図2は、LOFのアルゴリズムを説明するための図である。正常データであるデータ集団Cと、データPとが、複数次元空間(本例では2次元空間)にプロットされている。この図に基づき、LOFにおける基礎的な概念である「K距離」について説明する。
【0018】
ある点に注目し、周囲の点を、注目点から近い順に数えていくとする。このとき、K番目に近い点(近傍点)までの距離をK距離と呼ぶ。Kは、LOFのパラメータ情報であり、注目点に対する近傍点の個数を定める。パラメータKは、注目点を中心とする球(円)に入る点数の閾値(MinPts:a minimum number of points)であるとも言える。
【0019】
図2の点Pに着目し、K=3とすると、図のd
maxが、点PにとってのK距離となる。なお、d
minは、点Pから最も近い点までの距離である。点Pを中心とする半径Kの距離の球の領域を考えると、その中に点が3つ入っている。点Pに関する密度(局所到達可能密度)は、一例として、点Pから上記の3つの点までの距離の平均の逆数により計算できる。図には、点Pを中心とする半径Kの距離の球(2次元球、すなわち円)が描かれている。もし点Pが外れ値であれば、K距離は長くなるため、球の体積が大きくなり、密度は低くなることが想定される。
【0020】
ここで、点PのK距離圏内に存在する3つの点についても同様に、K距離を求める。図には、これら3つの点のそれぞれを中心とする半径Kの距離の球(円)が描かれている。
これら3つの点のそれぞれに関する密度も計算する。密度の計算は、上記同様に、3つの点のそれぞれについて、K距離圏内の3つの点までの距離の平均の逆数を計算することで行う。これら3つの点は外れ値ではないため、これら3つの点に関する密度はいずれも高くなることが想定される。なお、これら3つの点のそれぞれについてd
maxとd
minを計算した場合に、これらのうち最も大きなものがi
max、最も小さなものがi
minである。
【0021】
ここで、点Pの外れ度合いを、以下の式で算出されるスコアによって評価する。
【数1】
もし、点Pが3つの点と同じ集団に属していれば、点PのK距離圏の密度は、3つの点それぞれのK距離圏の密度と同程度となり、上記スコアは1または1に近い値となる。一方、点Pが外れ値であれば、点PのK距離圏の密度は、3つの点それぞれのK距離圏の密度に比べて小さくなるため、スコアは1より十分大きくなる。1より大きい閾値を設定し、スコアが閾値より大きければ、点Pは外れ値、スコアが閾値以下であれば、点Pは外れ値でない(正常データ)であると判断できる。この際に用いる閾値は、操作者が評価時に適宜設定すればよい。あるいは、閾値を、事前に定めておき、評価時にこの値を用いてもよい。
【0022】
上述したLOFによれば、空間内でデータの分布(密度)に本質的な格差がある場合でも、外れ値を高い精度で検出できる。しかしながら、LOFは機械学習であるため、過学習の問題がある。LOFにおける過学習とは、本来正常のはずのデータが、現状得られているデータ分布から見ると外れ値に見えてしまうことである。これは、限られたデータサンプリングにおいて、データがたまたまある領域に集中してしまうと、LOFの利点が逆に弊害となり、そこから若干離れた領域は、本来正常な領域であっても、スコアが高くなってしまうことに起因する。このような偶発的なデータ分布の格差は、十分なデータサンプルを集めることで解消されるものである。しかしながら、多次元空間では、次元数の増加に伴い、爆発的に体積が増加する。そのため、空間内全体においてデータの揺らぎに影響を受けないほどデータを集めることは、容易でない。
【0023】
そこで、本実施形態は、LOF(Local outlier factor)による機械学習において、現実的なデータサンプル数に基づき、高精度に外れ値を検知できるモデルの学習を実現しようとするものである。
【0024】
図3は、本実施形態に係る情報処理システムの全体構成を示す図である。
図3の情報処理システムは、情報処理装置10と、複数の監視対象装置(以下、対象装置)20と、監視装置30とを備える。情報処理装置10は、ネットワーク40を介して、複数の対象装置20および監視装置30と接続されている。ネットワーク40は、有線ネットワークでも、無線ネットワークでも、これらのハイブリッドのネットワークであってもかまわない。情報処理装置10と対象装置20とを接続するネットワークと、情報処理装置10と監視装置30とを接続するネットワークが物理的に同一でも、異なってもかまわない。
【0025】
情報処理装置10は、大きく、学習段階と、判定段階との2つの動作を実行する。学習段階では、情報処理装置10は、複数の対象装置20のそれぞれからデータを収集し、収集したデータを学習データとして用いて、外れ値を検知するためのモデルを構築する。判定段階では、情報処理装置10は、各対象装置20からデータを受信し、受信したデータが外れ値であるかを、モデルに基づき判定する。外れ値である場合は、情報処理装置10は、監視装置30に、外れ値と判断されたデータおよび当該データの発生元の対象装置に関する情報を送信する。以下、このような本システムについてさらに詳細に説明する。
【0026】
複数の対象装置20のそれぞれは、情報処理装置10による監視対象となる装置である。対象装置20は、例えば、計算機能を備えたコンピュータ装置、ネットワーク機器、ビルや工場等の設備機器、および、家庭内の家電機器などである。コンピュータ装置の例として、デスクトップ型パーソナルコンピュータ(PC)、ノート型PC、移動体端末(スマートフォン、タブレット端末、携帯電話など)などがある。設備機器の例として、空調機器や照明機器などがある。家電機器の例として、空調機器、照明機器、TVなどがある。ネットワーク機器の例として、ルータ、LAN(Local Area Network)スイッチ、アクセスポイントなどがある。ここで列挙した以外に、ウェアラブルデバイスなど、他にも様々な装置が考えられる。複数の対象装置20のそれぞれが、1つのLANスイッチが備える複数のポートのそれぞれに対応してもよい。以下の説明において、複数の対象装置20はいずれも同じ種類の装置であるとする。
【0027】
複数の対象装置20のそれぞれは、データ測定部21と、データ送信部22とを備える。
【0028】
データ測定部21は、対象装置20の状態を測定することにより、対象装置20の状態を表す複数の特徴量(第1の特徴量〜第Nの特徴量)を取得する。データ測定部21は、取得した複数の特徴量(第1の特徴量〜第Nの特徴量)を含むデータを、メモリ等の記憶部(図示せず)に格納する。特徴量は、対象装置20の測定値に基づく値である限り、何でもよい。一例として、特徴量は、測定値そのものでもよいし、測定値の統計値(平均、最大値、最小値、標準偏差など)でもよいし、測定値に基づき対象装置20を分類したときのカテゴリ(例えば温度を測定した場合の高温、中温、低温のカテゴリなど)を表す値でもよい。または特徴量は、異なる種類の測定値間の演算値(例えば電流と電圧とを乗じた電力)でもよいし、その他の値でもよい。以下では、特徴量が測定値の場合を例に説明を行うが、測定値を特徴量と読み替えることで、特徴量が、測定値以外の値の場合に対しても、本発明は実施可能である。
【0029】
ここで、データ測定部21が測定する値の例として、コンピュータ装置の場合、CPUの稼働率、通信特性値(通信量(送信量、受信量)、通信のエラー率(送信エラー率、受信エラー率)、平均スループットなど)、ストレージ装置に対するデータの読み出しまたは書き込み量などがある。空調機器の場合、運転状態(オン、オフなど)、温度、湿度などがある。照明機器の場合、動作状態(オン、オフなど)、照度などがある。測定は、センサを用いて行ってもよいし、CPU(具体的にはCPUで動作するアプリケーションまたはOS(オペレーティングシステム))が計算した値を取得することで行ってもよい。CPUからの値の取得は、データ測定部21が、CPUに値の取得要求を行い、CPUから値を取得することで行ってもよいし、CPUが所定の記憶領域(レジスタまたはメモリ)に、演算した値を定期的に書き込み、この値を読み出すことで行ってもよい。ここで述べた以外の方法で、測定を行ってもよい。
【0030】
データ送信部22は、データ測定部21により測定されたデータを、ネットワーク40を介して、情報処理装置10に送信する。データは、実際には、使用する通信プロトコルに応じてパケットまたはフレームに整形されて、送信される。一例として、データは、TCP/IPに従って送信される。データの送信タイミングは、データ測定が一定時間間隔(例えば1分間隔、10分間隔、30分間隔、1時間間隔、1日間隔など)で行われる場合は、当該データ測定のタイミングに合わせて、一定時間間隔ごとに送信してもよいし、情報処理装置10がデータの送信要求を、対象装置20に送信し、この送信要求に応じてデータを送信してもよい。送信するデータは、送信要求で指定されたデータ(例えば所定の時刻のデータなど)でもよいし、対象装置20が測定した最新のデータでもよい。ここで述べた以外の方法で、データを送信してもよい。なお、データ送信部22は、送信するデータをデータ測定部21から直接受け取ってもよいし、図示しない記憶部から読み出すことで、送信するデータを取得してもよい。
【0031】
情報処理装置10は、データ受信部11、制御部12、データ加工部13、外れ値検知部14、アラート送信部15、学習部16、および記憶装置17を備える。記憶装置17は、受信データ記憶部D1と、設定データ記憶部D2と、結果データ記憶部D3とを含む。
【0032】
情報処理装置10は、上述したように、大きく学習段階の動作と、判定段階の動作とを実行する。学習段階では、各対象装置20からデータを収集および蓄積し、蓄積したデータに基づいて、モデル(LOFモデル)の生成を行う。判定段階では、各対象装置20から受信したデータに対して、LOFモデルに基づいて、外れ値か否かの判定を行う。
【0033】
学習段階における各対象装置20からのデータ収集は、各対象装置20が正常状態であるときに行い、収集されたデータが正常データであることを前提としてもよい。あるいは、そのような前提を課すことなく、各対象装置からデータを収集してもよい。対象装置20が1年に数回しか異常にならないのが一般的であれば、1か月分のデータを収集すると、収集されるデータに異常データが含まれないことが普通であるが、若干の異常データが含まれる可能性もある。本実施形態は、収集されるデータがすべて正常データである場合、および、収集されるデータに若干の異常データが含まれる場合のいずれも対応可能である。
【0034】
図4は、学習段階および判定段階のそれぞれの動作シーケンスを示す。
【0035】
[学習段階]
データ受信部11は、各対象装置20から送信されたデータを受信する(S11)。
【0036】
制御部12は、本情報処理装置の全体の動作を司る。制御部12は、データ受信部11に接続されており、データ受信部11を用いて、各対象装置20からデータを収集する(S12)。制御部12は、記憶装置17に接続されており、収集したデータを、記憶装置17における受信データ記憶部D1に保存する(S13)。受信データ記憶部D1は、一例としてデータベースにより構成される。ここで、データ収集時、各対象装置20は、正常状態である(異常状態でない)ことを前提としてもよい場合、本システムの管理者が、各対象装置20の管理者に、各対象装置20が正常状態であることを事前に確認してもよい。
【0037】
各対象装置20から送信されるデータは、予め定めたフォーマットに従っているものとする。データに含まれるN個の測定値は、フォーマットに従った順序で並べられている。
【0038】
また、データには、対象装置20の識別子(対象装置ID)、およびデータの識別子(データID)が関連づけられていてもよい。この場合、対象装置IDは、各対象装置20を区別可能な値であれば何でもよい。対象装置IDは、本情報処理装置が予め各対象装置に割り当てたIDでもよいし、対象装置のユーザのユーザIDでもよい。制御部12が、受信したデータのパケットの宛先アドレスを特定し、予め保持しているアドレスと対象装置IDとの対応表から、対象装置IDを特定してもよい。また、データIDは、同じ対象装置から収集したデータ間を区別可能な値であれば、何でもよい。データの送信毎に1インクリメントする値でもよいし、対象装置におけるデータの生成時刻または測定時刻でもよい。データIDは、制御部12がデータを取得した時点で、当該データに割り当ててもよい。例えばデータを取得するごとに、1インクリメントした値をデータIDとして割り当ててもよい。また、データ内にN個の各測定値を識別可能となるような要素識別子を含めてもよい。
【0039】
ここでは、複数の測定値が一度にまとめて送信される場合を想定しているが、複数の測定値がそれぞれ別々のタイミングで送信されてもよい。この場合、制御部12が、それぞれ別々に受信された測定値を並べて、並べた後の測定値を含むデータを、受信データ記憶部D1に保存すればよい。あるいは、個々の測定値を受信するごとに、受信した測定値を、データベースの該当する項目に保存してもよい。但し、その場合は、要素識別子をデータ内に含めるか、分割シーケンスIDをデータに含める必要がある。
【0040】
図5に、受信データ記憶部D1に保存されたデータ例を示す。各対象装置20から収集したデータが、データベースに保存されている。この例では、各対象装置(対象装置1〜h)からそれぞれs個のデータを受信している。データベースにおける個々のエントリ(横一列)は、対象装置IDと、データIDと、N個の測定値とを含んでいる。
【0041】
ここで、i番目の対象装置におけるj番目のデータのr番目の測定値を、“x
i,j,r”と表す。例えば、1番目の対象装置における1番目のデータの2番目(種類2)の測定値は、“x
1,1,2”である。
図5の例では、この値は0.7である。
【0042】
学習部16は、本実施形態に係るモデルを生成する学習処理を行う。学習部16は、予め定めた条件が成立したかを判断し、予め定めた条件が成立すると、学習処理を開始する。予め定めた条件としては、受信データ記憶部D1に一定量のデータが蓄積されたことでもよいし、予め定めた時刻になったことでもよいし、本情報処理装置の管理者がユーザインタフェース(キーボード、マウス、タッチパネル、または音声入力など)を用いて学習指示を入力し、この学習指示を受けたことでもよい。ここで述べた以外の条件でもよい。
【0043】
学習処理において、学習部16は、受信データ記憶部D1から、モデル学習に用いる複数のデータ(データセット)を読み出す(S14)。読み出したデータを、学習データと呼ぶ。学習部16は、任意の方法で、受信データ記憶部D1において学習データを特定する。一例として、現在からX日前(30日前など)までの過去のデータを、学習データとして特定する。別の方法として、期間の開始時刻と終了時刻を指定し、これらの期間に含まれるデータを学習データとして特定してもよい。以下の説明では、
図5に示したデータベースにおいて、対象装置1〜hのデータ1〜sが学習データとして特定された場合を想定する。
【0044】
学習部16は、データ加工部13で行うデータ加工用のパラメータ情報を生成する(S15)。データ加工は、正規化と、本実施形態で新たに定義および導入した“離散化”とからなる。この離散化は、過学習対策として行うものである。このため、データ加工用のパラメータ情報は、正規化用のパラメータ情報と、離散化用のパラメータ情報とを含む。
【0045】
正規化は、学習データセットを対象に、測定値の種類毎に、尺度調整と重心移動とを行うものである。尺度調整は、複数の測定値のうちの最大値により各測定値を除算することで、各測定値を0〜1までの値となるように調整するものである。重心移動は、尺度調整後の複数の測定値からこれらの平均値を減算することで、平均値が原点(ゼロ)となるように調整するものである。学習部16は、測定値の種類毎に算出した最大値と平均値とを、正規化用のパラメータ情報として取得する。学習部16は、正規化用のパラメータ情報を、設定データ記憶部D2に格納する。
【0046】
離散化は、正規化完了後の学習データセットをN次元空間にプロットした場合に、学習データを表す点の分布(密度)の偏りに過剰に反応することを避けるため、学習データを加工するものである。
【0047】
学習部16は、加工の荒さ(目盛りの荒さまたは精度の荒さとも言う)に違いを付けた複数の離散化パターンを生成する。予め複数の離散化パターンを記憶装置17または別の記憶装置に記憶させておき、これらを学習部16が候補として読み出してもよい。以下の説明では、離散パターンを、単にパターンと呼ぶこともある。
【0048】
離散化パターンの例を以下に3つ示す。パラメータmは1以上の任意の実数である。[・・・]はガウス記号であり、小数点以下の切り捨てを行う。例えば[1.45]は、1である。
【数2】
【0049】
x’
i,j,rは、i番目の対象装置のj番目のデータにおけるr番目の測定値の正規化後の値である。σ
x’i,rは、種類rの正規化後の測定値(正規化後のr番目の測定値)の標準偏差である。標準偏差はばらつきを表す値の一例であり、分散など、ばらつきを表す別の値を用いることも可能である。学習部16は、測定値の種類毎に、正規化後の測定値の標準偏差σ
x’i,rを計算する。また、学習部16は、m(1以上の任意の実数)の値を決定する。mの値は、予めメモリまたはアプリケーションプログラム等に格納されていて、それを読み出してもよいし、本情報処理装置の管理者がユーザインタフェースを用いて、mの値を指定してもよい。あるいは、予め定めた範囲の中から学習部16がランダムに選択することも可能である。mの決定方法は任意でかまわない。一例としてmの値は、10である。m、m
2、m
3は、例えば加工の荒さ(目盛りの荒さまたは精度の荒さ)に対応する。
【0050】
パターン1は、正規化後の測定値x’
i,j,rを、σ
x’i,r/m(σ
x’i,rをmで除算した値)で除算し、小数点以下を切り捨てた後に、再度、σ
x’i,r/mを積算する。r=1〜Nとした場合に、σ
x’i,1/m〜σ
x’i,N/mは、本実施形態に係る第1の値〜第Nの値に対応する。
パターン2は、正規化後の測定値x’
i,j,rを、σ
x’i,r/m
2(σ
x’rをmの二乗で除算した値)で除算し、小数点以下を切り捨てた後に、再度、σ
x’i,r/m
2を積算する。r=1〜Nとした場合に、σ
x’i,1/m
2〜σ
x’i,N/m
2は、本実施形態に係る第1の値〜第Nの値に対応する。
パターン3は、正規化後の測定値x’
i,j,rを、σ
x’i,r/m
3(σ
x’rをmの三乗で除算した値)で除算し、小数点以下を切り捨てた後に、再度、σ
x’i,r/m
3を積算する。r=1〜Nとした場合に、σ
x’i,1/m
3〜σ
x’i,N/m
3は、本実施形態に係る第1の値〜第Nの値に対応する。
【0051】
例えば、mを10とすると、パターン1は、標準偏差の1/10の目盛り幅で離散化するパターン、パターン2は標準偏差の1/100の目盛り幅で離散化するパターン、パターン3は標準偏差の1/1000の目盛り幅で離散化するパターンであるといえる。ここでは離散化パターンを3つ示したが、4つ以上でもよいし、2つ以下でもよい。
また、mの値は10に限定されない。
【0052】
上述した例では、端数処理として、小数点第1位以下の切り捨てを行ったが、四捨五入または小数点以下の切り上げを行ってもよい。また、小数点第1位ではなく、第2位またはそれより下位を対象として、端数処理を行ってもよい。また、本実施形態では、離散化の前に正規化を行っているが、正規化を省略する構成も可能である。
【0053】
学習部16は、複数の離散化パターン(離散化用のパラメータ情報)を、設定データ記憶部D2、または別の記憶部に格納してもよい。
【0054】
学習部16は、学習データセットの加工(正規化と、離散化)を依頼する指示情報を、正規化用のパラメータ情報および複数の離散化パターン(離散化用のパラメータ情報)とともに、データ加工部13に出力する(S16)。
【0055】
データ加工部13は、学習部16から提供された正規化用のパラメータ情報と、離散化用のパラメータ情報に基づき、学習データセットに対して、正規化と離散化を行う。
【0056】
すなわち、データ加工部13は、正規化用のパラメータ情報(測定値の種類毎の最大値と平均値)に基づき、学習データセットを正規化する。具体的には、前述したように、個々の学習データに対して、測定値の種類毎に、上記最大値で測定値を除算することで、測定値を、0〜1の範囲内の値に調整する(尺度調整)。そして、尺度調整後の測定値から上記平均値を減算する(重心移動)。正規化後の学習データセットのイメージを
図6に示す。なお、本実施形態では、学習データを直接、正規化しているが、学習データに含まれる複数の測定値から複数の第2特徴量を計算し、複数の第2特徴量を含む第2学習データを生成し、第2学習データに対して正規化を行ってもよい。この場合、以降の処理も、第2学習データを対象に行う。第2特徴量は、前述した特徴量と同様、測定値そのものでもよいし統計値でもよいし、カテゴリ値でもよいし、2つ以上の測定値間の演算値でもよいし、その他の値でもよい。なお、第2特徴量を計算する元となる値は、測定値以外の第1特徴量でもよい。
【0057】
また、データ加工部13は、正規化後の学習データセットに対して、複数の離散化パターンのそれぞれを用いて、離散化を行う。これにより、複数の離散化パターンのそれぞれについて、離散化された学習データセットが得られる。離散化された学習データを、加工データと呼ぶ。
図7に、離散化パターンごとに得られた加工データセットのイメージを示す。
図7(A)が離散化パターン1に対応する加工データセット、
図7(B)が離散化パターン2に対応する加工データセット、
図7(C)が離散化パターン3に対応する加工データセットを表す。
【0058】
また、加工データセット内に複数の同じ加工データが存在する場合、1つの加工データのみを残し、残りを削除することで、加工データセットに含まれる複数の加工データをユニーク化する。これにより、同一座標にK個以上のデータが存在することで注目点のK距離が0となり逆数が発散してスコアが計算できなくなることを阻止できる。
【0059】
ある3つの学習データ(仮に学習データA、B、Cとする)を対象に、離散化の具体例を示す。各学習データにおいて、種類rの正規化後の測定値が0.777、0.776、0.778であったとする。また、当該種類rの標準偏差は、0.598であったとする。また、m=10とする。
【0060】
このとき、パターン1を用いた場合、0.777の離散化後の値は、[0.777/(0.598/10)]×(0.598/10)=[12.9933]×(0.598/10)=12×(0.598/10)=0.7176となる。
0.776の離散化後の値は、[0.776/(0.598/10)]×(0.598/10)=[12.9765]×(0.598/10)=12×(0.598/10)=0.7176となる。
0.778の離散化後の値は、[0.778/(0.598/10)]×(0.598/10)=[13.0100]×(0.598/10)=13×(0.598/10)=0.7774となる。
離散化前の測定値(正規化後の測定値)と、離散化後の測定値をまとめると、以下のようになる。
【表1】
学習データAとCに着目すると、離散化前の値の差分は、0.778−0.777=0.001である。一方、離散化後の値の差分は、0.7774−0.7176=0.0598である。離散化前の間隔0.001に比べて、離散化後では間隔が0.0598となり、大きく離散化されたことが分かる。つまり、種類rの測定値の間隔が、離散化により、大きく広げられている。このことから、離散化を行うことで、データ密度を低くできることが理解される。
【0061】
同じ例を用いて、パターン2を適用した場合の、離散化前の値と、離散化後の値は以下のようになる。この例では、どの学習データ間でも、離散化による値の幅の変化はパターン1と比べて小さい。
【表2】
【0062】
同じ例を用いて、パターン3を適用した場合の、離散化前の値と、離散化後の値は以下のようになる。この例では、どの学習データ間でも、離散化による値の幅の変化はパターン1と比べてさらに小さい。
【表3】
【0063】
図8は、本実施形態に係る離散化を概念的に表したものである。
図8(A)は正規化後の学習データセットを2次元空間にプロットしたものである。横方向が種類1の離散化後の測定値、縦方向が種類2の離散化後の測定値に対応する。
図8(B)は、
図8(A)の学習データセットを離散化することで得られた加工データセットを2次元空間にプロットしたものである。離散化前では、学習データ分布(データ密度)に偏りが見られるが、離散化後では、データ分布の偏りが緩和されている。より具体的には、密度の高い領域の密度が低くなることで、全体のデータ分布が均一に近づいている。前述した目盛り幅に応じた離散化が行われることで、元々密度の低い領域では、密度が低くなることが抑制されている。
【0064】
学習部16は、以降の処理において、上述した複数の離散化パターンを用いて、高い精度で外れ値を検知できるモデル(LOFモデル)を構築する。
【0065】
このために、学習部16は、データ加工部13から、各離散化パターンで離散化された加工データセットを取得する(S17)。学習部16は、各離散化パターンに対応する加工データセットと、LOFのパラメータKの候補値の範囲とに基づいて、LOFの学習アルゴリズムを利用して、複数の仮モデルを生成する(S18)。複数の仮モデルを、正規化データセットを用いて評価することにより、各仮モデルの評価値をそれぞれ計算する(同S18)。そして、評価値に基づき、複数の仮モデルのうちの1つのモデルを、外れ値検知用のモデル(LOFモデル)として選択する(S19)。
【0066】
以下、LOFモデルを生成する方法について詳細に説明する。
【0067】
学習部は、複数の離散化パターンのうちの1つと、パラメータKの候補値の範囲に含まれる複数の候補値(以下、K値と記述)のうちの1つとの全ての組み合わせについて、仮モデルを生成する。仮モデルは、当該組み合わせ数だけ生成される。例えば離散化パターン数が3、K値の個数が10であれば、3×10=30の仮モデルが生成される。
【0068】
仮モデルは、当該組み合わせに含まれる離散化パターンで離散化された加工データセットと、当該組み合わせに含まれるK値とを少なくとも含む。仮モデルは、判定対象となるデータが与えられた場合に、仮モデルに含まれる加工データセットとK値に基づき、当該データのスコア(式1)を計算する関数として構成されてもよい。この場合、仮モデルは、判定対象となるデータを入力変数xとし、スコアを計算して出力変数zとする関数(z=f(x))と、当該スコアの計算に用いる加工データセットとを含むモデルファイルである。関数は、加工データセットとK値に基づき、LOFアルゴリズムにより当該データのスコア(式1)を計算するプログラムコードを含む。関数に、スコアを閾値と比較するプログラムコードと、比較結果として外れ値か否かを示す値を出力するプログラムコードとを含めてもよい。
【0069】
ここで、Kの候補値の範囲は、予めメモリ等の記憶部に設定しておき、学習部16は、これを読み出してもよい。あるいは、候補値の範囲を複数設定しておき、管理者が1つの範囲を、ユーザインタフェースを介して選択し、選択された範囲を学習部16が読み出してもよい。または、管理者がユーザインタフェースを介して候補値の範囲を入力してもよい。候補値の範囲は、開始位置と終了位置とによって表現してもよいし、開始位置と幅とによって表現してもよい。例えば、候補値の範囲が10以上50以下の場合、前者の例では、“開始位置10、終了位置50”を指定し、後者の例では、“開始位置10、幅40”を指定する。
【0070】
学習部16は、正規化データセットに基づき、仮モデルの評価値を計算する。より詳細には、学習部16は、仮モデルに基づき、正規化データセットに含まれる複数のデータのスコア(式1参照)を計算する。この計算は、仮モデルにおける加工データセットを空間に展開し、データ(正規化されたデータ)を当該空間に注目点P(
図2参照)としてマッピングした場合に、仮モデルに含まれるK値と、式1に従って、当該データのスコアを計算することに相当する。注目点Pに対するK距離圏内の各点は加工データである。仮モデルがデータを入力変数、スコアを出力変数とする関数として構成されていれば、この関数にデータを入力することでスコアを計算する。学習部16は、複数のデータのスコアのばらつきを表す値を、仮モデルの評価値として計算する。
【0071】
ここで、ばらつきを表す値の具体例として、標準偏差、不偏標準偏差または分散などがある。ここでは標準偏差を想定する。標準偏差の計算式を以下に示す。
【数3】
σ
eはスコアの標準偏差、nは正規化データセットに含まれるデータ数、yはデータiのスコア、μはn個のデータのスコアの平均である。
【0072】
学習部16は、以上の処理を、上記の組み合わせ数分繰り返す。すなわち、学習部16は、上記の組み合わせ数の仮モデルのそれぞれについて、評価値(スコアの標準偏差)を計算する。これにより、複数の仮モデルのそれぞれについて、スコアの標準偏差を得る。
【0073】
学習部16は、複数の仮モデルのうち、標準偏差が最も小さい仮モデルを選択する。あるいは、これとは別の例として、標準偏差が閾値以下の仮モデルを選択してもよい。例えば複数の仮モデルについて順番に評価値(スコアの標準偏差)を計算し、閾値以下の標準偏差が計算された時点で、以降の処理を停止する。これにより、処理の高速化を図ることができる。
【0074】
図9に、3つの離散化パターン1、2、3と、96個のK値(5〜100)との組み合わせに基づき、複数の仮モデルを生成し、これらの仮モデルに対して、スコアの標準偏差を計算した例を表形式で示す。この例では、仮モデル1〜288が生成されている。一例として、仮モデル1は、離散化パターン1で正規化データセットを離散化した加工データセットと、K値=5とに基づき生成された仮モデルである。また、仮モデル97は、離散化パターン2で正規化データセットを離散化した加工データセットと、K値=5とに基づき生成された仮モデルである。仮モデル193は、離散化パターン3で正規化データセットを離散化した加工データセットと、K値=5とに基づき生成された仮モデルである。
【0075】
学習部16は、仮モデル1〜288の中で最も標準偏差が小さい仮モデルを、LOFモデルとして選択する(S19)。
図9の例では、仮モデル1〜288のうち、最小の標準偏差は、仮モデル8の標準偏差0.134である。よって、学習部16は、仮モデル8をLOFモデルとして選択する。LOFモデルに含まれるK値は12である。LOFモデルに含まれる加工データセットは、離散化パターン1で正規化データセットを離散化した加工データセットである。
【0076】
ここで、最小の標準偏差を有する仮モデルをLOFモデルとする理由について説明する。加工データセットには、ノイズが含まれる可能性や、若干の異常データが含まれる可能性はあるものの、大多数のデータは正常である。このため、大多数のデータのスコアは1.0近傍になり、したがって、スコア分布の標準偏差は小さいことが期待される。したがって、スコアの標準偏差を指標とし、これが最小になる仮モデルを、LOFモデルとする方法は有効であると言える。
【0077】
最小の標準偏差が2つもしくはそれ以上存在する場合、一例として、K値が最も小さい仮モデルをLOFモデルとする。この理由は、K値は小さいほど感度が高くなるためである。また、別の方法として、離散化幅が最も大きい離散化パターンで離散化した加工データセットを含む仮モデルをLOFモデルとする方法も可能である。離散化幅が大きいほど、加工化データの値の有効桁数を短くできるため、LOFモデルファイルのデータ容量が小さくなるためである。
【0078】
学習部16は、LOFモデルを、外れ値検知部14に提供する(S20)。また、学習部16は、このLOFモデルを、設定データ記憶部D2に格納する(S21)。なお、学習部16は、LOFモデルの生成に利用された離散化パターンを表す情報(パラメータmの値を含む)を、設定データ記憶部D2に格納してもよい。
【0079】
(変形例)LOFモデルを構築する別の方法として、以下のようにしてもよい。上記と同様にして複数の仮モデルを生成する。仮モデルのうち、最も識別率(識別精度)が良い、すなわち誤検知率が最も低い仮モデルをLOFモデルとする。誤検知率または識別率は、仮モデルの評価値の一例である。誤検知率は、例えば以下のようにして計算できる。正規化データセットに含まれる各データについて、仮モデルでスコア(式(1)参照)を計算し、スコアが予め定めた閾値(1より大きい閾値)以上であれば、外れ値(不正解)、閾値未満であれば、外れ値でない(正解)と判断する。そして、不正解の回数を、正解と不正解の回数の合計で除算することにより、誤検知率を計算する。本方法は、各データが正常データであることを前提としている。一般に、識別率には、誤検知率と、検知率との2つの意味が含まれる。誤検知率は、正常データのうちのいくつが異常と判定されたかを意味する。検知率は、異常データのうち、いくつが異常と判定されかを意味する。各データが正常データであることを前提としている場合、検知率は確認できないため、誤検知率のみで識別率を評価する。ここでは誤検知率が最も低い仮モデルをLOFとしたが、誤検知率が閾値以下の仮モデルのうちの1つをLOFモデルとしてもよい。
【0080】
上述した変形例に対して、交差検証法を適用してもよい。例えば、まずKの値を仮決めする。その上で、加工データセットを、W個の部分データセットに分割する。2番目〜W番目の部分データセットを訓練事例、1番目の部分データセットに対応する部分正規化データセットをテスト事例として利用して、誤検知率を計算する。W個の部分データセットそれぞれが1回ずつテスト事例として利用されるまで同様の処理を繰り返す。結果として得られたW個の誤検知率の代表値を統計的な方法で決定する。一例として、平均をとる方法がある。この代表値を仮決めしたKにおける誤検知率と定義する。当該仮決めしたKと、使用した加工データセットとに基づく仮モデルを生成する。このプロセスを、Kを変えながら各離散化パターンに対して繰り返し、仮モデルと誤検知率のテーブルを作成する。このテーブルの中から、最適な仮モデルをLOFモデルとする。例えば最も誤検知率の低かった仮モデルを採択する。
【0081】
図10に、仮モデル(図では離散化パターンとK値の組によって仮モデルを表現している)と、誤検知率とをまとめた表を示す。この例では、交差検証法を用いて、各仮モデルについて、誤検知率を求めている。学習部16は、この中から、最も誤検知率が低い仮モデル(離散化パターンとK値との組)を選択する。
図10の例では、離散化パターン1とKの値(=11)の組に対応する仮モデルが、誤検知率が最も低い。このため、離散化パターン1とKの値(=11)の組に対応する仮モデルをLOFモデルとして選択する。
【0082】
[判定段階]
制御部12は、データ受信部11を介して、各対象装置からデータを取得し(S31、S32)、取得したデータを受信データ記憶部D1に格納する(S33)。なお、学習段階と、判定段階とで、データを保存するデータベースを分けてもよいし、同じデータベースを用いてもよい。
【0083】
また、制御部12は、データの正規化に必要なパラメータ情報(測定値の種類ごとの最大値と平均値)を、設定データ記憶部D2から読み出す(S34)。このパラメータ情報は、学習段階で設定データ記憶部D2に格納したものと同じである。そして、制御部12は、対象装置から取得したデータの加工(ここでは正規化のみ)を依頼する指示情報を、読み出したパラメータ情報とともにデータ加工部13に出力する(S35)。
【0084】
データ加工部13は、制御部12に指示されたデータを、正規化用のパラメータ情報に従って加工(ここでは正規化のみ)し、正規化したデータを制御部12に返す(S36)。
【0085】
制御部12は、データ加工部13から受け取った正規化後のデータについて、当該データが外れ値か否かの判定を行うことを依頼する指示情報を、外れ値検知部14に出力する(S37)。
【0086】
外れ値検知部14は、制御部12から指示されたデータが外れ値か否か(すなわち対象装置が異常か否か)を、LOFモデルに基づき判定する。外れ値検知部14は、当該判定結果を、制御部12に返す(S38)。
【0087】
具体的な動作例として、外れ値検知部14は、制御部12から指示されたデータと、LOFモデルとからスコアを計算する。このスコアの計算の動作例を説明する。LOFモデルに含まれる加工データセットをプロットしたN次元空間対象に、判定対象となるデータをさらにプロットした場合に、判定対象となるデータを表す点を注目点として、注目点から近い順に、K番目に近い点まで(すなわちK距離圏内のK個の点)を特定する。注目点について、K個の点のそれぞれとの距離を計算し、注目点に対する密度を算出する。例えば、注目点からK個の点までの距離の平均の逆数により、密度を計算する。特定したK個の点のそれぞれについても同様にして、K距離圏内のK個の点を特定し、密度を求める。
【0088】
注目点に対して求めた密度と、特定したK個の点のそれぞれについて求めた密度とから、スコアを計算する。そして、スコアを閾値と比較し、スコアが閾値以上であれば、判定対象となるデータは外れ値である(すなわち、対象装置は異常状態にある、もしくは異常状態にある可能性がある)と判断する。一方、スコアが閾値未満であれば、判定対象となるデータは、外れ値でない(対象装置は正常状態にある)と判断する。ここで用いる閾値(判定段階用の閾値)は、学習段階で用いたものと同じ値でもよいし、学習段階で用いたものと異なる値でもよい。後者の場合、管理者がユーザインタフェースを介して閾値を入力してもよいし、予めメモリ等の記憶部に判定段階用の閾値を格納しておき、これを読み出してもよい。
【0089】
判定時の演算量を低減するため、LOFモデルに使用した加工データセットの各データについて、K距離内のK個のデータがどれであるかを特定した情報(近傍データ情報と呼ぶ)を、テーブル等の形式で保存しておいてもよい。この近傍データ情報を利用することで、注目点のK距離圏内に存在するK個の各点についてK距離を求める際、各点のK距離圏に存在する点(データ)を特定する処理を高速に行うことができる。この場合、本実施形態のLOFモデルは、Kの値に加え、当該近傍データ情報を含んでもよい。
【0090】
制御部12は、外れ値検知部14から受けとった判定結果と、判定対象となったデータ(正規化前のデータとするが、正規化後のデータでもよい)とを、結果データ記憶部D3に格納する(S39)。制御部12は、データ加工部13から受けた判定結果が、判定対象となったデータが外れ値であることを示す場合、アラート送信部15にアラート送信を依頼する指示情報を出力する(S40)。アラート送信部15は、制御部12の指示情報に従って、監視装置30にアラートメッセージを送信する(S41)。アラートメッセージの構成は任意でよいが、一例として、外れ値と判定されたデータ(正規化前のデータとするが、正規化後のデータでもよい)、および当該データの送信元となる対象機器の識別情報を含む。
【0091】
図11に監視装置30のブロック図を示す。通信部33は、情報処理装置10の制御部12からアラートメッセージを受信する。制御部31は、アラートメッセージを表示部35に表示するとともに、記憶部32に格納する。操作部34は、監視装置30の管理者により操作される入力インタフェースである。管理者は、表示部35に表示されたアラートメッセージを確認すると、操作部34を用いて、対象装置20の管理者端末または対象装置20に、外れ値が検出されたことを通知するメッセージを送信する操作を行ってもよい。
【0092】
以上、本実施形態によれば、LOFによる機械学習において、学習データセットをデータ分布の偏りを緩和するように(データ分布を均一化するように)加工することにより、学習データ数が少ない場合においても、誤検知の極めて少ないモデルを作成することが可能となる。すなわち、学習データセットに偶発的なデータ分布の偏りが存在する場合においても、精度の高いモデルを作成できる。さらに、データ数削減による演算速度の向上も見込める。
【0093】
また、本実施形態で、標準偏差の値と端数処理とを利用した離散化を行っており、この方式を利用することで、データ分布の偏りを緩和して(密度の高い領域の密度を低くして)、精度の高いLOFモデルを生成できることが、本発明者により確認されている。ただし、本実施形態は、標準偏差の値を用いることに限定されず、目盛り幅に応じて密度の高い領域に属する点間の距離を広げることができる加工が可能な限り、別の値を利用することも可能である。
【0094】
本実施形態に係る情報処理装置のハードウェア構成について、
図12を参照して説明する。本実施形態に係る情報処理装置は、コンピュータ100により構成される。
図12は、コンピュータ100の一例を示す図である。
【0095】
図12のコンピュータ100は、プロセッサ101と、入力装置102と、表示装置103と、通信装置104と、記憶装置105と、を備える。プロセッサ101、入力装置102、表示装置103、通信装置104、および記憶装置105は、バス106により相互に接続されている。
【0096】
プロセッサ101は、コンピュータ100の制御装置および演算装置を含む電子回路である。プロセッサ101として、例えば、汎用目的プロセッサ、中央処理装置(CPU)、マイクロプロセッサ、デジタル信号プロセッサ(DSP)、コントローラ、マイクロコントローラ、状態マシン、特定用途向け集積回路、フィールドプログラマブルゲートアレイ(FPGA)、プログラム可能論理回路(PLD)、およびこれらの組合せを用いることができる。
【0097】
プロセッサ101は、バス106を介して接続された各装置(例えば、入力装置102、通信装置104、記憶装置105)から入力されたデータやプログラムに基づいて演算処理を行い、演算結果や制御信号を、バス106を介して接続された各装置(例えば、表示装置103、通信装置104、記憶装置105)に出力する。具体的には、プロセッサ101は、コンピュータ100のOS(オペレーティングシステム)や、
図3の情報処理装置の機能を実現する情報処理プログラムなどを実行し、コンピュータ100を構成する各装置を制御する。
【0098】
情報処理プログラムは、コンピュータ100に、情報処理装置の上述の各機能構成を実現させるプログラムである。情報処理プログラムは、コンピュータ読み取り可能な記憶媒体に記憶される。上記の記憶媒体は、例えば、光ディスク、光磁気ディスク、磁気ディスク、磁気テープ、フラッシュメモリ、半導体メモリであるが、これに限られない。プロセッサ101が情報処理プログラムを実行することにより、コンピュータ100が情報処理装置として機能する。
【0099】
入力装置102は、コンピュータ100に情報を入力するための装置である。入力装置102は、例えば、キーボード、マウス、およびタッチパネルであるが、これに限られない。ユーザは、入力装置102を用いることにより、各種の設定を行うことができる。
【0100】
表示装置103は、画像や映像を表示するための装置である。表示装置103は、例えば、LCD(液晶ディスプレイ)、CRT(ブラウン管)、およびPDP(プラズマディスプレイ)であるが、これに限られない。表示装置103は、GUI又はCUIを表示する。また、表示装置103は、記憶装置105に記憶された各種のデータを表示してもよい。
【0101】
通信装置104は、コンピュータ100が外部装置と無線又は有線で通信するための装置である。通信装置104は、例えば、モデム、ハブ、およびルータであるが、これに限られない。センサのデータは、通信装置104を介して外部装置から入力され、記憶装置105に記憶されてもよい。
【0102】
記憶装置105は、コンピュータ100のOSや、情報処理プログラム、情報処理プログラムの実行に必要なデータ、および情報処理の実行により生成されたデータなどを記憶するハードウェアの記憶媒体である。記憶装置105には、主記憶装置と外部記憶装置とが含まれる。主記憶装置は、例えば、RAM、DRAM、SRAM、NANDフラッシュ型メモリであるが、これに限られない。また、外部記憶装置は、例えば、ハードディスク、光ディスク、SSD、および磁気テープであるが、これに限られない。記憶装置105は、
図3の記憶装置17に対応する。
【0103】
なお、コンピュータ100は、プロセッサ101、入力装置102、表示装置103、通信装置104、および記憶装置105を、それぞれ1つ又は複数備えてもよいし、プリンタやスキャナなどの周辺機器を接続されていてもよい。また、コンピュータ100は、表示装置103または入力装置102を備えない構成でもよい。
【0104】
また、
図3の情報処理装置は、単一のコンピュータ100により構成されてもよいし、相互に接続された複数のコンピュータ100からなるシステムとして構成されてもよい。
【0105】
さらに、情報処理プログラムは、コンピュータ100の記憶装置105に予め記憶されていてもよいし、コンピュータ100の外部の記憶媒体に記憶されていてもよいし、インターネット上にアップロードされていてもよい。いずれの場合も、情報処理プログラムをコンピュータ100にインストールして実行することにより、情報処理装置の機能が実現される。
【0106】
本実施形態における用語“プロセッサ”は汎用目的プロセッサまたは中央処理装置(CPU)でもよいし、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等の回路でもよいし、これらの組合せでもよい。汎用目的プロセッサまたはCPUの場合、命令コードを記述したプログラムを、汎用目的プロセッサまたはCPUに実行させることにより、本実施形態の情報処理装置の機能を実現できる。
【0107】
また、用語“記憶装置”は、ハードディスク装置、SSD(Solid State Drive)等、データを永続的に記憶可能なストレージ装置でもよいし、メモリでもよい。メモリは、DRAM(Dynamic RAM(Random Access Memory))、SRAM(Static RAM)等の揮発性メモリでもよいし、MRAM(Magnetoresistive RAM)、NAND(inverted AND)型フラッシュメモリ等の不揮発性メモリでもよいし、これらの両方でもよい。これらのメモリは、プロセッサによって読み出しおよび書き込みの少なくとも一方が可能である。
【0108】
本発明は、上述した実施形態に限定されるものではなく、本発明の構成要素を種々に具体化できる。また、上記実施形態における各構成要素を適宜、拡張し、変更し、削除し、または組み合わせて、本発明を形成することも可能である。また、別の構成要素を新たに追加して、本発明を形成することも可能である。
前記データ加工部は、前記データに含まれるN個の値のそれぞれを第1の値〜第Nの値により除算し、除算後の値を端数処理し、端数処理後の値に前記第1の値〜第Nの値のそれぞれを乗じることにより、前記データ群を離散化し、前記第1の値〜第Nの値は、前記データ群における前記N個の値のそれぞれのばらつきを表す値を所定値で除算した値である
請求項1ないし7のいずれか一項に記載の情報処理装置。