(57)【特許請求の範囲】
【請求項１】
コンピュータに、
時系列に連続する複数の単位期間ごとの、管理対象のシステムの状態を示す状態情報を、所定の条件でクラスタリングし、
クラスタリングにより生成された複数のクラスタそれぞれを状態の遷移元および遷移先とし、前記複数の単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、該遷移元と該遷移先との組ごとの、該遷移元から該遷移先への前記システムの状態の遷移確率を示す、遷移確率行列を生成し、
前記遷移確率行列生成後の時系列に連続する複数の第１の単位期間それぞれと複数の前記第１の単位期間のいずれよりも後の第２の単位期間との、管理対象のシステムの状態を示す状態情報を、前記所定の条件でクラスタリングし、
複数の前記第１の単位期間それぞれについて、前記第１の単位期間の状態情報が属する第１のクラスタを遷移元として、前記遷移確率行列に示される遷移確率で遷移する前記システムの状態が、前記第１の単位期間から１回以上の前記単位期間の遷移を経て前記第２の単位期間における状態に達したときに、前記第２の単位期間の状態情報が属する第２のクラスタが前記システムの状態の遷移先となることの発生確率を計算し、
複数の前記第１の単位期間ごとに求めた前記発生確率に基づいて、複数の前記第１の単位期間の状態情報それぞれに示される状態から、前記第２の単位期間の状態情報に示される状態へ、前記システムの状態が遷移する可能性を示す評価値を算出し、
前記評価値に基づいて、複数の前記第１の単位期間の状態情報に示される状態から前記第２の単位期間の状態情報に示される状態への、前記システムの状態の遷移が、アノマリか否かを判定する、
処理を実行させるアノマリ評価プログラム。
【請求項２】
前記評価値の算出では、前記第１の単位期間と前記第２の単位期間との時間差が小さいほど、前記第１の単位期間について求めた前記発生確率に対して高い重み付けを行い、前記評価値を算出する、
請求項１記載のアノマリ評価プログラム。
【請求項３】
コンピュータが、
時系列に連続する複数の単位期間ごとの、管理対象のシステムの状態を示す状態情報を、所定の条件でクラスタリングし、
クラスタリングにより生成された複数のクラスタそれぞれを状態の遷移元および遷移先とし、前記複数の単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、該遷移元と該遷移先との組ごとの、該遷移元から該遷移先への前記システムの状態の遷移確率を示す、遷移確率行列を生成し、
前記遷移確率行列生成後の時系列に連続する複数の第１の単位期間それぞれと複数の前記第１の単位期間のいずれよりも後の第２の単位期間との、管理対象のシステムの状態を示す状態情報を、前記所定の条件でクラスタリングし、
複数の前記第１の単位期間それぞれについて、前記第１の単位期間の状態情報が属する第１のクラスタを遷移元として、前記遷移確率行列に示される遷移確率で遷移する前記システムの状態が、前記第１の単位期間から１回以上の前記単位期間の遷移を経て前記第２の単位期間における状態に達したときに、前記第２の単位期間の状態情報が属する第２のクラスタが前記システムの状態の遷移先となることの発生確率を計算し、
複数の前記第１の単位期間ごとに求めた前記発生確率に基づいて、複数の前記第１の単位期間の状態情報それぞれに示される状態から、前記第２の単位期間の状態情報に示される状態へ、前記システムの状態が遷移する可能性を示す評価値を算出し、
前記評価値に基づいて、複数の前記第１の単位期間の状態情報に示される状態から前記第２の単位期間の状態情報に示される状態への、前記システムの状態の遷移が、アノマリか否かを判定する、
アノマリ評価方法。
【請求項４】
時系列に連続する複数の単位期間ごとの、管理対象のシステムの状態を示す状態情報を記憶する記憶部と、
前記複数の単位期間ごとの状態情報を所定の条件でクラスタリングし、クラスタリングにより生成された複数のクラスタそれぞれを状態の遷移元および遷移先とし、前記複数の単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、該遷移元と該遷移先との組ごとの、該遷移元から該遷移先への前記システムの状態の遷移確率を示す、遷移確率行列を生成し、前記遷移確率行列生成後の時系列に連続する複数の第１の単位期間それぞれと複数の前記第１の単位期間のいずれよりも後の第２の単位期間との、管理対象のシステムの状態を示す状態情報を、前記所定の条件でクラスタリングし、複数の前記第１の単位期間それぞれについて、前記第１の単位期間の状態情報が属する第１のクラスタを遷移元として、前記遷移確率行列に示される遷移確率で遷移する前記システムの状態が、前記第１の単位期間から１回以上の前記単位期間の遷移を経て前記第２の単位期間における状態に達したときに、前記第２の単位期間の状態情報が属する第２のクラスタが前記システムの状態の遷移先となることの発生確率を計算し、複数の前記第１の単位期間ごとに求めた前記発生確率に基づいて、複数の前記第１の単位期間の状態情報それぞれに示される状態から、前記第２の単位期間の状態情報に示される状態へ、前記システムの状態が遷移する可能性を示す評価値を算出し、前記評価値に基づいて、複数の前記第１の単位期間の状態情報に示される状態から前記第２の単位期間の状態情報に示される状態への、前記システムの状態の遷移が、アノマリか否かを判定する演算部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アノマリ評価プログラム、アノマリ評価方法、および情報処理装置に関する。
【背景技術】
【０００２】
現在のＩＣＴ（Information and Communication Technology）システム（以下、単にシステムと呼ぶ）は、サーバ・ストレージ装置・ネットワーク装置などの多数の装置を含む。またシステムには、システムの稼働状態を観測する観測装置も含まれる。観測装置は、システムが正常に稼働しているかどうかを判定するため、システムに含まれる多数の装置から膨大な時系列データを採取する。例えば観測装置は、各サーバのＣＰＵ（Central Processing Unit）やメモリの使用状況に関する情報を採取し、使用状況の時間変化をモニタにグラフで表示する。ただし、表示される項目が大量になると、運用管理者が目視で確認して、異常な状態の発生を認識するのは困難となる。
【０００３】
そこで、複雑なシステムにおいて、異常の種類・発生場所・原因を効率的に判断乃至支援する方法が考えられている。また、違反予兆条件を設定する際の作業負担を軽減する方法も考えられている。さらに機器状態を監視するための機器のセンサによって取得された多変量時系列データ内のアノマリを検出するための方法も考えられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１２／０９０７１８号
【特許文献２】国際公開第２０１２／０６７０３１号
【特許文献３】特開２０１３−２４６８１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の観測装置は、例えば、単一測定項目ごとに閾値を超えるか否かを監視し、閾値を超えた場合に異常と判断する。しかし、システムの異常状態の中には、いずれの測定項目も閾値を超えないような異常（サイレント異常）がある。このような異常は、項目ごとの監視では検出が困難である。そのため、システムの異常状態を正しく検出できない場合がある。
【０００６】
１つの側面では、本発明は、システムの異常状態の検出精度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、コンピュータに、以下の処理を実行させるアノマリ評価プログラムが提供される。
コンピュータは、時系列に連続する複数の単位期間ごとの、管理対象のシステムの状態を示す状態情報を、所定の条件でクラスタリングする。次にコンピュータは、クラスタリングにより生成された複数のクラスタそれぞれを状態の遷移元および遷移先とし、複数の単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、該遷移元と該遷移先との組ごとの、該遷移元から該遷移先へのシステムの状態の遷移確率を示す、遷移確率行列を生成する。そしてコンピュータは、遷移確率行列に基づいて、複数の単位期間のうちの第１の単位期間の状態情報に示される状態から、第１の単位期間よりも後の第２の単位期間の状態情報に示される状態への、システムの状態の遷移が、アノマリか否かを判定する。
【発明の効果】
【０００８】
１態様によれば、システムの異常状態の検出精度が向上する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態に係る情報処理装置の構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】観測装置のハードウェアの一構成例を示す図である。
【図４】観測装置の機能を示すブロック図である。
【図５】動作ログ記憶部に格納されている動作ログの一例を示す図である。
【図６】事前学習モードでの動作状態解析処理を示す図である。
【図７】統計量生成処理の一例を示すフローチャートである。
【図８】ＳＤＲの生成例を示す図である。
【図９】事前学習処理の一例を示すフローチャートである。
【図１０】発生確率の算出例を示す図である。
【図１１】遷移確率の算出例を示す図である。
【図１２】学習結果の一例を示す図である。
【図１３】定常性判定処理の手順を示すフローチャートである。
【図１４】稼働診断モードでの動作状態解析処理を示す図である。
【図１５】オンライン識別処理の一例を示すフローチャートである。
【図１６】状態アノマリの第１の例を示す図である。
【図１７】状態アノマリの第２の例を示す図である。
【図１８】遷移確率行列を用いた発生確率の算出例を示す図である。
【図１９】アノマリ判定処理の手順の一例を示すフローチャートである。
【図２０】アノマリ発生状況の可視化の一例を示す図である。
【図２１】アノマリスコアの可視化の一例を示す図である。
【図２２】性能項目の可視化の一例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。第１の実施の形態では、情報処理装置が、システムの複数の項目間の値の時間変化の相関関係に基づいて、単位期間ごとに、システムの状態を示す相関情報を生成する。そして、情報処理装置は、複数の相関情報のクラスタリングを行う。このとき、「システムの状態」と「クラスタ」を同一視することができ、生成される相関情報がどのクラスタに属するかにより、システムの状態変化を的確に監視することができる。
【００１１】
図１は、第１の実施の形態に係る情報処理装置の構成例を示す図である。情報処理装置１０は、管理対象のシステム１に、例えばネットワークを介して接続されている。システム１は、例えば、複数のサーバ、複数のストレージ装置を含むコンピュータシステムである。情報処理装置１０は、システム１の動作状態を監視し、故障の予兆となるような異常な状態の発生を検出する。そのために情報処理装置１０は、記憶部１１と演算部１２とを有する。
【００１２】
記憶部１１は、システム１の状態を示す複数の項目の値の、単位期間ごとの時間変化を表す時系列データ１１ａ，１１ｂ，・・・を記憶する。例えば情報処理装置１０は、システム１を監視して、管理対象のシステムの状態を示す複数の項目（Ｍ1，Ｍ2，・・・，ＭN）の値の時系列データ１１ａ，１１ｂ，・・・を、システム１から取得し、記憶部１１に格納する。システム１の状態を示す複数の項目は、例えば、ＣＰＵの利用状況やメモリ利用状況などのシステム１の性能または負荷に関する項目である。
【００１３】
また記憶部１１は、状態管理テーブル１１−１を記憶する。状態管理テーブル１１−１は、単位期間ごとの時系列データ１１ａ，１１ｂ，・・・に基づいて算出された状態情報が登録される。状態情報は、例えば、複数の項目間の値の時間変化の相関を示す情報である。相関を示す状態情報は、例えば「０」または「１」の値を採る複数の要素を含むベクトルで表される。この場合、ベクトル内の各要素は、２つの項目の対に対応しており、項目の対の間に相関があれば値が「１」であり、相関がなければ値が「０」である。さらに状態管理テーブル１１−１には、各状態情報が属するクラスタのクラスタＩＤが設定される。
【００１４】
演算部１２は、時系列に連続する複数の単位期間ごとの、管理対象のシステム１の状態を示す状態情報を、所定の条件でクラスタリングする（ステップＳ１）。例えば演算部１２は、類似度が所定の閾値以上の状態情報同士を、同じクラスタに帰属させる。この場合、あるクラスタに属する状態情報は、そのクラスタに属する他のすべての状態情報との間で、類似度が閾値以上であるようにする。演算部１２は、各状態情報が属するクラスタの識別子（クラスタＩＤ）を、状態管理テーブル１１−１に設定する。
【００１５】
次に演算部１２は、クラスタリングにより生成された複数のクラスタそれぞれを状態の遷移元および遷移先とする。そして演算部１２は、複数の単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、遷移元と遷移先との組ごとの、遷移元から遷移先へのシステム１の状態の遷移確率を示す、遷移確率行列２を生成する（ステップＳ２）。例えばある単位期間の状態情報がクラスタＩＤ「１」のクラスタに属していたものとする。この場合、図１に示した遷移確率行列２によれば、次の単位期間の状態情報は、クラスタＩＤ「１」のクラスタに属する確率が「６０％」、クラスタＩＤ「２」のクラスタに属する確率が「１０％」、クラスタＩＤ「３」のクラスタに属する確率が「２０％」、クラスタＩＤ「４」のクラスタに属する確率が「１０％」である。
【００１６】
次に、演算部１２は、複数の単位期間の中から、アノマリの判定対象とする第１の単位期間と、第１の単位期間よりも後の第２の単位期間とを特定する。第１の単位期間と第２の単位期間とは、例えば時系列上で連続する単位期間である。そして演算部１２は、遷移確率行列２に基づいて、第１の単位期間の状態情報に示される状態から、第２の単位期間の状態情報に示される状態への、システム１の状態の遷移が、アノマリか否かを判定する（ステップＳ３）。例えば演算部１２は、新たに取得した時系列データに基づく状態情報のクラスタリングを行い、その状態情報が属するクラスタのクラスタＩＤを取得する。そして演算部１２は、１つ前の単位期間における状態情報が属するクラスタから、最新の単位期間における状態情報が属するクラスタへの遷移確率が極めて低い場合、アノマリが発生したと判定する。例えば図１の例では、１つ前の単位期間における状態情報は、クラスタＩＤ「２」のクラスタに属している。最新の単位期間における状態情報をクラスタリングしたところ、その状態情報は、クラスタＩＤ「４」のクラスタに属すると判断されたものとする。遷移確率行列２によれば、クラスタＩＤ「２」のクラスタからクラスタＩＤ「４」のクラスタに遷移する確率は「０．０」である。すると、最新の状態情報にシステム１の状態は、異常な状態である可能性が高く、アノマリと判定される。
【００１７】
このような情報処理装置１０によれば、システム１の状態の遷移状況に基づいて、異常状態の発生を検出できる。そのため、例えば、時系列データ１１ａ，１１ｂ，・・・の各項目の値が閾値を超えていない場合でも、システム１が通常の状態から逸脱したことを検知できる。しかも状態の遷移状況に基づいてアノマリかどうかを判定することで、通常では起こりえない状態遷移が発生したことを検出できる。
【００１８】
例えばシステム１では、運用停止後に、かならずデータのバックアップを採るものとする。この場合、システム１は、通常であれば「運用状態（高負荷状態）」→「バックアップ実行状態」→「運用停止（低負荷）状態」と、状態が遷移する。ところが「運用状態」から「バックアップ実行状態」を経ずに「運用停止状態」に移行した場合、システム１に何らかの異常が生じたものと考えられる。ここで、「運用状態」、「バックアップ実行状態」、「運用停止状態」は、それぞれ負荷のかかる部分が異なり、各状態のときに生成される状態情報が属するクラスタも異なる。そのためシステム１の状態が、「運用状態」から「運用停止状態」に移行すると、情報処理装置１０では、クラスタリングおよびアノマリ判定により、発生確率の低い状態遷移が生じたことを検出し、アノマリと判定することができる。
【００１９】
このように状態の遷移状況によってアノマリを検出できることで、異常状態の検出精度が向上する。なお、システム１がこれまでに発生していない状態になった場合、クラスタリングにより新たなクラスタが生成され、その状態を示す状態情報は新たに生成されたクラスタに属することとなる。このように新たなクラスタが生成されるような、発生確率の低い状態が発生した場合にも、アノマリとして検出してもよい。このように、様々なアノマリ検出方法を組み合わせて、異常状態の検出精度をより高めることができる。
【００２０】
演算部１２は、アノマリ判定では、例えば時系列上で連続する２つの単位期間それぞれの状態情報が属するクラスタのクラスタＩＤを比較して、アノマリか否かを判定する。また演算部１２は、アノマリ判定において、複数の単位期間を第１の単位期間（遷移前の単位期間）とすることもできる。この場合、演算部１２は、複数の第１の単位期間のすべてより後の単位期間を、第２の単位期間（遷移後の単位期間）とする。
【００２１】
複数の単位期間を第１の単位期間とする場合、複数の第１の単位期間それぞれに応じた遷移確率が、アノマリ判定に用いられる。例えば演算部１２は、複数の第１の単位期間それぞれについて、第１の単位期間の状態情報が属する第１のクラスタと、第２の単位期間の状態情報が属する第２のクラスタとの組に対応する遷移確率を、遷移確率行列２から取得する。
【００２２】
次に、演算部１２は、複数の第１の単位期間それぞれに対応する遷移確率に基づいて、複数の第１の単位期間の状態情報それぞれに示される状態から、第２の単位期間の状態情報に示される状態へ、システム１の状態が遷移する可能性を示す評価値を算出する。そして演算部１２は、評価値に基づいてアノマリか否かを判定する。このように複数の第１の単位期間に基づいて、第２の単位期間におけるシステム１の状態がアノマリか否かを判断することで、異常状態の検出精度を向上させることができる。評価値の算出では、例えば演算部１２は、第１の単位期間と第２の単位期間との時間差が小さいほど、第１の単位期間に応じて取得した遷移確率に対して高い重み付けを行い、評価値を算出する。これにより、評価値の信頼性を高めることができる。
【００２３】
アノマリの検出例としては、例えば定常性からの逸脱をアノマリとして検出することもできる。その場合、演算部１２は、例えば、複数の単位期間を包含する全期間の中から、全期間の少なくとも一部である第１の期間と、全期間の少なくとも一部であり、第１の期間とは異なる第２の期間とを特定する。例えば全期間を２分割した前半を第１の期間、後半を第２の期間とする。次に演算部１２は、第１の期間に含まれる単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、遷移元と遷移先との組ごとの、遷移元から遷移先へのシステム１の状態の遷移確率を示す、第１の遷移確率行列を生成する。同様に演算部１２は、第２の期間に含まれる単位期間それぞれの状態情報が属するクラスタの時間変化に基づいて、遷移元と遷移先との組ごとの、遷移元から遷移先へのシステム１の状態の遷移確率を示す、第２の遷移確率行列を生成する。そして演算部１２は、第１の遷移確率行列と第２の遷移確率行列とに有意な差があるか否かにより、アノマリか否かを判定する。
【００２４】
例えば演算部１２は、システム１が通常の状態では、第１の期間について生成した第１の遷移確率行列と、第２の期間について生成した第２の遷移確率行列とに、有意な差はないことが分かっている場合がある。遷移確率行列の生成対象となる期間が異なっても、同様の遷移確率行列が生成されることは、定常性があるということである。システム１が通常状態であれば定常性がある場合において、第１の遷移確率行列と第２の遷移確率行列との間に有意な差が生じていれば、定常性から逸脱している。定常性から逸脱している場合、システム１に異常が生じている可能性があるため、演算部１２はアノマリであると判定する。このように、定常性からの逸脱に基づいてアノマリを検出できることで、異常な状態の検出精度がより向上する。
【００２５】
なお、演算部１２は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば情報処理装置１０が有するメモリまたはストレージ装置により実現することができる。
【００２６】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。
図２は、第２の実施の形態のシステム構成例を示す図である。システム３０は、ネットワーク２０を介して観測装置１００に接続されている。システム３０は、サーバ、ストレージ装置、ネットワーク機器などの装置を含むＩＣＴシステムである。観測装置１００は、システム３０から動作状態を示す情報を取得し、取得した情報に基づいて、システム３０の動作を監視する。
【００２７】
図３は、観測装置のハードウェアの一構成例を示す図である。観測装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＭＰＵ（Micro Processing Unit）、またはＤＳＰ（Digital Signal Processor）である。プロセッサ１０１がプログラムを実行することで実現する機能の少なくとも一部を、ＡＳＩＣ（Application Specific Integrated Circuit）、ＰＬＤ（Programmable Logic Device）などの電子回路で実現してもよい。
【００２８】
メモリ１０２は、観測装置１００の主記憶装置として使用される。メモリ１０２には、プロセッサ１０１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ１０２には、プロセッサ１０１による処理に必要な各種データが格納される。メモリ１０２としては、例えばＲＡＭ（Random Access Memory）などの揮発性の半導体記憶装置が使用される。
【００２９】
バス１０９に接続されている周辺機器としては、ストレージ装置１０３、グラフィック処理装置１０４、入力インタフェース１０５、光学ドライブ装置１０６、機器接続インタフェース１０７およびネットワークインタフェース１０８がある。
【００３０】
ストレージ装置１０３は、内蔵した記憶媒体に対して、電気的または磁気的にデータの書き込みおよび読み出しを行う。ストレージ装置１０３は、コンピュータの補助記憶装置として使用される。ストレージ装置１０３には、ＯＳのプログラム、アプリケーションプログラム、および各種データが格納される。なお、ストレージ装置１０３としては、例えばＨＤＤ（Hard Disk Drive）やＳＳＤ（Solid State Drive）を使用することができる。
【００３１】
グラフィック処理装置１０４には、モニタ２１が接続されている。グラフィック処理装置１０４は、プロセッサ１０１からの命令に従って、画像をモニタ２１の画面に表示させる。モニタ２１としては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００３２】
入力インタフェース１０５には、キーボード２２とマウス２３とが接続されている。入力インタフェース１０５は、キーボード２２やマウス２３から送られてくる信号をプロセッサ１０１に送信する。なお、マウス２３は、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００３３】
光学ドライブ装置１０６は、レーザ光などを利用して、光ディスク２４に記録されたデータの読み取りを行う。光ディスク２４は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク２４には、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００３４】
機器接続インタフェース１０７は、観測装置１００に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース１０７には、メモリ装置２５やメモリリーダライタ２６を接続することができる。メモリ装置２５は、機器接続インタフェース１０７との通信機能を搭載した記録媒体である。メモリリーダライタ２６は、メモリカード２７へのデータの書き込み、またはメモリカード２７からのデータの読み出しを行う装置である。メモリカード２７は、カード型の記録媒体である。
【００３５】
ネットワークインタフェース１０８は、ネットワーク２０に接続されている。ネットワークインタフェース１０８は、ネットワーク２０を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００３６】
以上のようなハードウェア構成によって、第２の実施の形態の処理機能を実現することができる。なお、第１の実施の形態に示した情報処理装置１０も、図３に示した観測装置１００と同様のハードウェアにより実現することができる。
【００３７】
観測装置１００は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第２の実施の形態の処理機能を実現する。観測装置１００に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、観測装置１００に実行させるプログラムをストレージ装置１０３に格納しておくことができる。プロセッサ１０１は、ストレージ装置１０３内のプログラムの少なくとも一部をメモリ１０２にロードし、プログラムを実行する。また観測装置１００に実行させるプログラムを、光ディスク２４、メモリ装置２５、メモリカード２７などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ１０１からの制御により、ストレージ装置１０３にインストールされた後、実行可能となる。またプロセッサ１０１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００３８】
このようなハードウェアの観測装置１００により、システム３０の状態が、ネットワーク２０を介して観測される。
図４は、観測装置の機能を示すブロック図である。観測装置１００は、動作情報収集部１１０、動作ログ記憶部１２０、統計量生成部１３０、事前学習部１４０、学習結果記憶部１５０、オンライン識別部１６０、定常性判定部１７０、アノマリ判定部１８０、および可視化部１９０を有する。
【００３９】
動作情報収集部１１０は、システム３０内の装置から動作情報を収集する。例えば動作情報収集部１１０は、システム３０内の各装置に対して、情報収集用のコマンド（sarコマンドなど）を送信する。すると、各装置から、動作情報が返答される。動作情報収集部１１０は、収集した動作情報を、動作ログ記憶部１２０に、動作ログとして格納する。動作情報収集部１１０による動作情報の収集方法は、「リアルタイム方式」と「バッチ方式」とが考えられる。「リアルタイム方式」は、システム３０を構成する各装置からリアルタイムにデータを収集する方式である。「バッチ方式」は、システム３０内のストレージ装置に蓄積された過去の動作情報を、そのストレージ装置から一括して入力する方式である。
【００４０】
動作ログ記憶部１２０は、システム３０内の装置から収集された動作情報のログ（動作ログ）を記憶する。例えば、ストレージ装置１０３の記憶領域の一部が、動作ログ記憶部１２０として使用される。
【００４１】
統計量生成部１３０は、動作ログ記憶部１２０内の動作ログを解析し、多次元統計量（ＳＤＲ：State Description Representations）を生成する。ＳＤＲとは、システムの動作に関する複数の項目から取得可能なすべての項目対の相関関係によって、システム３０の状態を表す情報である。ＳＤＲは、単位期間ごとに生成される。
【００４２】
事前学習部１４０は、生成された時系列のＳＤＲに基づいて、システム３０の通常状態を表すＳＤＲを学習する。例えば事前学習部１４０は、システム３０が、どのようなＳＤＲの状態になりやすいのかを解析する。また事前学習部１４０は、ある時間帯に、システム３０が特定のＳＤＲの状態にあるとき、次の時間帯に、システム３０がどのようなＳＤＲの状態に遷移しやすいのかを解析する。事前学習部１４０は、ＳＤＲを解析する場合、例えば単位期間ごとに生成したＳＤＲをクラスタリングすることでクラスタを生成する。なお事前学習部１４０が行うクラスタリングは、蓄積されたＳＤＲの類似度に基づく、静的類似度クラスタリングである。
【００４３】
事前学習部１４０は、同一クラスタに属するＳＤＲで示される状態は、同一状態にあるとみなす。事前学習部１４０は、学習結果を、学習結果記憶部１５０に格納する。なお事前学習部１４０は、例えば観測装置１００が事前学習モードで動作しているときに、処理を実行する。事前学習モードは、システム３０の通常の状態を学習するためのモードである。
【００４４】
学習結果記憶部１５０は、事前学習による学習結果を記憶する。例えばメモリ１０２またはストレージ装置１０３の記憶領域の一部が、学習結果記憶部１５０として使用される。
【００４５】
オンライン識別部１６０は、リアルタイムに収集された、システム３０の動作ログに基づくＳＤＲが、事前に学習した学習結果に示されるどのクラスタに属するのかを識別する。なおオンライン識別部１６０は、リアルタイムに判別したＳＤＲに基づいて、学習結果記憶部１５０内の学習結果を更新することもできる。なおオンライン識別部１６０は、例えば観測装置１００が稼働診断モードで動作しているときに、処理を実行する。稼働診断モードは、システム３０の状態が通常状態か否かを診断するためのモードである。
【００４６】
定常性判定部１７０は、学習結果を統計的に解析し、システム３０の状態における定常性の有無を判定する。例えば定常性判定部１７０は、学習期間を複数に分割し、分割された細分化期間それぞれにおける特定の統計情報を比較し、有意な差が検出されなければ、その統計情報について定常性がある（期間の違いによっては変化しない）と判断する。
【００４７】
アノマリ判定部１８０は、事前学習による学習結果や、オンライン識別による識別結果、統計情報の定常性の有無などに基づいて、アノマリが発生したか否かを判定する。例えばアノマリ判定部１８０は、アノマリが発生したかどうかの判断指標（評価値）として、アノマリスコアを計算する。アノマリ判定部１８０は、アノマリスコアが所定値以上であれば、アノマリが発生したと判断する。
【００４８】
可視化部１９０は、アノマリの発生状況を、モニタ２１などに表示する。例えば可視化部１９０は、アノマリ発生時刻をモニタに表示する。また可視化部１９０は、例えば、アノマリ発生時刻における、各性能項目の値の時間変化をモニタに表示する。
【００４９】
このような機能により、観測装置１００は、システム３０の動作状態を観測し、アノマリを自動で検出することができる。例えば事前学習において生成されているクラスタに属していないＳＤＲが、稼働診断モードで発生する場合がある。このＳＤＲは新たに生成したクラスタに属することとなる。新たなクラスタに属するＳＤＲが発生したということは、システム３０が、これまでの通常の状態から逸脱したことを示しており、異常な状態の可能性がある。そこで、観測装置１００は、例えば、新たなクラスタが生成されたとき、アノマリが発生したと判断し、その旨をモニタに表示する。このように、アノマリの発生を可視化することで、管理者は、システム３０が異常な状態になった可能性があることを容易に認識できる。
【００５０】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００５１】
次に、システム３０から収集され動作ログ記憶部１２０に記憶される動作ログについて説明する。
図５は、動作ログ記憶部に格納されている動作ログの一例を示す図である。動作ログ記憶部１２０には、複数の動作ログ１２１，１２２，・・・が格納されている。
【００５２】
例えば動作ログ１２１には、その動作ログ１２１を出力した装置が属するシステム３０のシステム名、その装置の装置名、および動作ログ１２１の採取日時が設定されている。さらに、動作ログ１２１には、システム３０の、単位期間（例えば１０分）内の動作状態を示す性能項目に関する情報が含まれる。性能項目には、ＣＰＵ利用状況に関する項目、スワップ動作に関する項目、ｉノードに関する項目、ＣＰＵ実行待ち行列状況に関する項目、メモリ／スワップ状況に関する項目、ページングに関する項目などがある。性能項目に関する各情報は、例えば単位期間内の、その性能項目に関する数値の時間遷移である。
【００５３】
ＣＰＵの利用状況に関する性能項目には、例えば、ＣＰＵがディスクＩ／Ｏの待機によりアイドル状態であった時間の割合、ＣＰＵがユーザモード状態であった時間の割合、ＣＰＵがシステムモード状態であった時間の割合などがある。スワップ動作に関する性能項目には、例えば、１秒当たりのスワップインしたページ数、１秒当たりのスワップアウトしたページ数などがある。ｉノードに関する性能項目には、例えば、ｉノードの使用数などがある。ＣＰＵ実行待ち行列状況に関する性能項目には、例えば実行待ちのプロセスキュー（待ち行列）の長さ（プロセス数）などがある。メモリ／スワップ状況に関する性能項目には、例えば、空きメモリサイズ、カーネルがバッファとして使用しているメモリサイズ、キャッシュとして使用されているメモリサイズ、メモリのスワップ領域として使用している記憶領域のサイズなどがある。ページングに関する性能項目としては、１秒当たりに発生したページフォルトの回数などがある。
【００５４】
動作情報は、システム３０内に複数の装置があるとき、各装置から取得される。例えばシステム３０内に複数のサーバがあれば、動作情報収集部１１０は、各サーバから、ＣＰＵがディスクＩ／Ｏの待機によりアイドル状態であった時間の割合などの性能項目を含む動作情報を取得する。
【００５５】
このような動作ログ１２１，１２２，・・・に基づいて、システム３０の動作状態が解析される。観測装置１００による動作状態の解析は、まず事前学習モードで実行される。そして事前学習モードによる学習結果生成後に、稼働診断モードが実行される。
【００５６】
まず事前学習モードにおける動作状態の解析処理について説明する。
図６は、事前学習モードでの動作状態解析処理を示す図である。まず、統計量生成部１３０が、動作ログ１２１，１２２，・・・に基づいて統計量生成処理を実行し、多次元統計量（ＳＤＲ）４１，４２，・・・を生成する。１つのＳＤＲは、特定の単位期間の動作ログに基づいて生成される。性能項目がＮ個（Ｎは２以上の整数）の場合、ＳＤＲは、Ｎ行Ｎ列の行列（相関行列）で表すことができる。行列内の各要素は、２つの性能項目間の相関関係の有無を表している。相関行列内の要素を、一列に並べ、ＳＤＲをベクトルで表すこともできる。生成された複数のＳＤＲ４１，４２，・・・は、それぞれ、対応する単位期間内でのシステム３０の動作状態を表している。
【００５７】
生成された複数のＳＤＲ４１，４２，・・・に基づいて、事前学習部１４０により、システム３０の動作状態の発生傾向や動作状態の変化傾向に関する事前学習が行われる。そして事前学習部１４０によって、学習結果１５１が生成され、学習結果記憶部１５０に格納される。学習結果１５１に基づいて、定常性判定部１７０で定常性の有無が判定される。
【００５８】
以下、図６に示す各処理を詳細に説明する。
図７は、統計量生成処理の一例を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
【００５９】
［ステップＳ１０１］統計量生成部１３０は、観測期間（例えば１月）内の複数の単位期間（例えば１０分）のうち、未処理の単位期間を１つ選択する。
［ステップＳ１０２］統計量生成部１３０は、システム３０に含まれる各装置の単位期間内の動作を示す動作ログに基づいて、単位期間内でのシステム３０の各性能項目の時間変化を算出する。例えば統計量生成部１３０は、性能項目ごとに、システム３０内の複数の装置それぞれの動作ログに示される数値（時系列データ）の時刻ごとの平均を採り、平均値の時間変化とする。
【００６０】
［ステップＳ１０３］統計量生成部１３０は、複数の性能項目から、２つの性能項目を選択した組み合わせをすべて生成し、性能項目の組み合わせごとに、相関係数を算出する。性能項目数がＮの場合、性能項目の組み合わせの数は、「｛Ｎ×（Ｎ−１）｝／２」個である。すなわち、「｛Ｎ×（Ｎ−１）｝／２」個の相関係数が生成される。
【００６１】
相関係数とは、２つの変数の関連性の度合いを示す統計的指標である。相関係数は、「−１」から「１」の間の実数値であり、「１」に近いほど正の相関があり、「−１」に近いほど負の相関がある。「０」に近い場合、相関が弱い。統計量生成部１３０は、性能項目の組み合わせごとに求めた各相関係数の絶対値を求め、絶対値が閾値以上の場合、相関を示す値（相関値）を「１」とし、絶対値が閾値未満であれば、相関値を「０」とする。すなわち、負の相関であっても、相関があれば相関値は「１」となる。このように、相関係数を「１」または「０」の相関値に置き換えることで、以後のクラスタリングなどの処理の計算量を減らすことができる。
【００６２】
［ステップＳ１０４］統計量生成部１３０は、性能項目の対ごとに得られた相関値を、行列の要素として配置することで、相関行列を生成する。性能項目数をＮとすると、相関行列はＮ行Ｎ列である。複数の性能項目それぞれが、相関行列の行と列とに対応付けられる。相関行列の各要素には、その要素の行に対応する性能項目と列に対応する性能項目との相関値が設定される。得られる相関行列は対称行列となる。
【００６３】
［ステップＳ１０５］統計量生成部１３０は、相関行列からＳＤＲを生成する。例えば統計量生成部１３０は、相関行列の各要素を一列に並べて、多次元ベクトルに変換する。「｛Ｎ×（Ｎ−１）｝／２」個の相関値が存在するため、ＳＤＲを多次元ベクトルで表した場合、「｛Ｎ×（Ｎ−１）｝／２」次元のベクトルとなる。変換により得られた多次元ベクトルがＳＤＲとなる。
【００６４】
［ステップＳ１０６］統計量生成部１３０は、すべての単位期間について処理を行ったか否かを判断する。すべての単位期間についての処理が完了していれば、統計量生成処理が終了する。未処理の単位期間があれば、処理がステップＳ１０１に進められる。
【００６５】
このようにして、観測期間内の単位期間ごとのＳＤＲが得られる。
図８は、ＳＤＲの生成例を示す図である。Ｎ個の性能項目があるとき、２つずつの組み合わせごとの相関係数が算出され、相関行列５１が生成される。例えば、性能項目Ｍ1と性能項目Ｍ2との相関係数が、相関行列５１の第１行・第２列の要素および第２行・第１列の要素として設定されている。
【００６６】
相関行列５１の各要素の相関係数は、絶対値が所定の閾値以上か否かにより、粗視化される。図８の例では、相関係数の絶対値が「０．５」以上であれば相関値「１」、相関係数の絶対値が「０．５」未満であれば相関値「０」としている。これにより、「０」または「１」にデジタル化された相関行列５２が生成される。
【００６７】
そして、相関行列５２の各要素が一列に並べ替えられ、ＳＤＲが生成される。なお、同じ性能項目の組み合わせに対応する要素は、一方の要素のみがＳＤＲに含まれる。例えば統計量生成部１３０は、相関行列５２内の第ａ行・第ｂ列（ａは１以上の整数、ｂはａ＋１以上の整数）の要素を一列に並べて、ＳＤＲを生成する。
【００６８】
このようなＳＤＲが、観測期間内の単位期間ごとに生成される。
次に、事前学習処理について詳細に説明する。
図９は、事前学習処理の一例を示すフローチャートである。以下、図９に示す処理をステップ番号に沿って説明する。
【００６９】
［ステップＳ１１１］事前学習部１４０は、ｎ個（ｎは１以上の整数）のＳＤＲがあるとき、ＳＤＲの集合Ｓ＝｛ｘ1，ｘ2，・・・，ｘn｝を統計量生成部１３０から取得する。
【００７０】
事前学習部１４０は、ステップＳ１１２以降の処理により、ＳＤＲのクラスタリングを行う。クラスタリング手法としては、k-means法、階層的クラスタリング法、スペクトラルクラスタリング法などを用いることができる。第２の実施の形態では、生成されるクラスタがシステム３０の状態を適切に表すことができるようなクラスタリング手法を用いる。第２の実施の形態に適用するクラスタリング手法を、「類似度クラスタリング」と呼ぶこととする。
【００７１】
以下、類似度クラスタリングの手順を説明する。
［ステップＳ１１２］事前学習部１４０は、集合Ｓに属するＳＤＲ間の類似度を計算する。類似度としては、例えばジャッカード（Jaccard）係数を用いることができる。ジャッカード係数を類似度とする場合、任意のｘ，ｙ∈Ｓに対して、類似度Ｊ（ｘ，ｙ）は以下の式で定義される。
Ｊ（ｘ，ｙ）＝Ｂｉｔ（ｘ∩ｙ）／Ｂｉｔ（ｘ∪ｙ）    ・・・（１）
Ｂｉｔ（）関数は、ベクトルの「１」の数を数える関数である。「ｘ∩ｙ」は、ｘのＳＤＲのベクトルとｙのＳＤＲのベクトルとの要素ごとの論理積である。例えばｘ＝（１，０，０，１）、ｙ＝（０，１，０，１）のとき、「ｘ∩ｙ＝（０，０，０，１）」となる。「ｘ∪ｙ」は、ｘのＳＤＲのベクトルとｙのＳＤＲのベクトルとの要素ごとの論理和である。例えばｘ＝（１，０，０，１）、ｙ＝（０，１，０，１）のとき、「ｘ∪ｙ＝（１，１，０，１）」となる。類似度の値が大きいほど、比較された２つのＳＤＲ（ＳＤＲペア）が類似していることを示す。
【００７２】
［ステップＳ１１３］事前学習部１４０は、類似度が所定の閾値ｔｈ以上のＳＤＲペア間の関係を、類似関係にあるとする。すなわち、以下の式を満たすＳＤＲペアについて、類似関係があると判断する。
ｘ，ｙ∈Ｓ，ｘ〜ｙ  ⇔  Ｊ（ｘ，ｙ）≧ｔｈ    ・・・（２）
［ステップＳ１１４］事前学習部１４０は、集合Ｓに属するＳＤＲのうち、類似関係にある相手を最も多く有するＳＤＲを、中心核Ｓ1*に決定する。
【００７３】
［ステップＳ１１５］事前学習部１４０は、中心核Ｓ1*を基準とするクラスタＣを決定する。例えば事前学習部１４０は、中心核Ｓ1*を元に、順序付き類似集合Ｓｉｍ（Ｓ1*）を生成する。類似集合Ｓｉｍ（Ｓ1*）は、以下のように定義される。
Ｓｉｍ（Ｓ1*）＝｛∀Ｓi∈Ｓ｜Ｊ（Ｓ1*，Ｓi）≧ｔｈ｝    ・・・（３）
類似集合Ｓｉｍ（Ｓ1*）内の要素の順序は、類似度による降順である。すなわち、類似集合Ｓｉｍ（Ｓ1*）の要素の先頭は、中心核Ｓ1*である。類似集合Ｓｉｍ（Ｓ1*）に含まれる要素数をｍ（ｍは１以上の整数）とすると、類似集合Ｓｉｍ（Ｓ1*）は、以下のように表すことができる。
Ｓｉｍ（Ｓ1*）＝｛ｓ1＝Ｓ1*，ｓ2，・・・，ｓm｝    ・・・（４）
事前学習部１４０は、類似集合Ｓｉｍ（Ｓ1*）に含まれるＳＤＲのうち、互いに類似関係を有するＳＤＲの集合により、クラスタＣを生成する。互いに類似関係を有するＳＤＲの数がｋ（ｋは１以上の整数）のとき、クラスタＣは以下の式で表される。
Ｃ＝｛ｓ1，ｓ2，・・・，ｓk｝    ・・・（５）
ここで、クラスタＣ内の任意の２つのＳＤＲをｓi，ｓjとしたとき、常に類似度Ｊ（ｓi，ｓj）≧ｔｈが成り立つ。
【００７４】
なお、第２の実施の形態では、生成したクラスタに属するＳＤＲ数が「１」になることを許容する。すなわち、集合Ｓ内に中心核Ｓ1*と類似関係にある他のＳＤＲが存在しない場合、中心核Ｓ1*のみを要素とするクラスタが生成される。
【００７５】
事前学習部１４０は、生成したクラスタＣにクラスタＩＤを付与し、メモリ１０２に記憶する。例えば、最初に生成したクラスタＣのクラスタＩＤを「１」、その後、クラスタを生成するごとに、生成したクラスタのクラスタＩＤを２，３，・・・とする。
【００７６】
［ステップＳ１１６］事前学習部１４０は、集合Ｓから、ステップＳ１１５で作成したクラスタＣに属するＳＤＲを除外する（集合Ｓ＝Ｓ−Ｃ）。
［ステップＳ１１７］事前学習部１４０は、集合Ｓが空集合になったか否かを判断する。集合Ｓが空集合であれば、処理がステップＳ１１８に進められる。集合Ｓに少なくとも１つのＳＤＲが含まれていれば、処理がステップＳ１１４に進められる。
【００７７】
［ステップＳ１１８］事前学習部１４０は、基本とする期間を複数に分割して得られる時間帯ごとに、生成した各クラスタに属するＳＤＲの発生確率を算出する。例えば基本とする期間を１日（２４時間）とし、１日分の動作ログに基づいて、Ｋ個（Ｋは１以上の整数）のＳＤＲが生成されたものとする。このとき１日分のＫ個の動作ログの採取時刻を、動作ログの時刻が早い順にＴ1，Ｔ2，・・・ＴKとする。
【００７８】
事前学習部１４０は、観測期間内の各日の時刻Ｔ1に対応するＳＤＲ間で比較し、時刻Ｔ1に出現するＳＤＲが属するクラスタの発生確率を算出する。事前学習部１４０は、同様に時刻Ｔ2，・・・ＴKそれぞれについて、クラスタの発生確率を算出する。これにより、１日の特定の時間帯において、システム３０がどのようなクラスタの状態になりやすいのかが分かる。
【００７９】
［ステップＳ１１９］事前学習部１４０は、クラスタ間の遷移確率行列を生成する。遷移確率行列は、システム３０の状態を示すＳＤＲが、あるクラスタから別のクラスタに遷移する確率を示す行列である。
【００８０】
事前学習部１４０は、例えば、ＳＤＲが属するクラスタのクラスタＩＤを、そのＳＤＲの生成元となった動作ログの採取時刻に基づいて時系列に並べる。次に、事前学習部１４０は、隣接するクラスタＩＤの対を抽出し、時系列で前のクラスタＩＤを遷移元、時系列で後のクラスタＩＤを遷移先とする。遷移元と遷移先とを示すクラスタＩＤの対の発生回数を計数する。そして、同じ遷移元からの発生回数の総数に対する、各遷移先の発生回数の割合を、そのクラスタＩＤの対に示す遷移の遷移確率とする。事前学習部１４０は、各クラスタＩＤの対に対応する遷移確率を行列の要素として配置して、遷移確率行列を生成する。
【００８１】
［ステップＳ１２０］事前学習部１４０は、学習結果１５１を、学習結果記憶部１５０に格納する。学習結果１５１には、発生確率を示す情報、遷移確率行列、および各クラスタに属するＳＤＲの集合に関する情報が含まれる。
【００８２】
このようにして、発生確率と遷移確率行列とが生成される。
図１０は、発生確率の算出例を示す図である。例えば事前学習部１４０は、１日の時間帯ごとのシステム３０の状態を示すクラスタＩＤを、クラスタＩＤ管理表６１に設定する。クラスタＩＤ管理表６１には、１日をＫ個の時間帯に分割して得られる時間帯の終了する時刻に対応付けて、各日における該当時間帯内でのシステム３０の状態を示すクラスタＩＤが設定されている。事前学習部１４０は、観測期間内の各日の時刻Ｔ1に設定されたクラスタＩＤを抽出し、各クラスタＩＤの出現頻度（出現した回数）を計数する。これにより、時刻Ｔ1におけるクラスタＩＤの頻度分布が得られる。
【００８３】
各クラスタＩＤの頻度を、時刻Ｔ1に設定されたクラスタＩＤの総数で除算すれば、各クラスタＩＤの発生確率となる。例えば観測期間が３０日であれば、各クラスタＩＤの頻度を３０で除算することで、発生確率が得られる。その結果、時刻Ｔ1におけるクラスタＩＤの確率分布が得られる。事前学習部１４０は、同様にして、他の時刻Ｔ2，・・・，ＴKの確率分布も算出する。
【００８４】
図１１は、遷移確率の算出例を示す図である。例えば事前学習部１４０は、クラスタＩＤ管理表６１から、クラスタＩＤが「ｉ」の日時（何日目のどの時刻か）を特定する。事前学習部１４０は、該当する日時の次の時刻のクラスタＩＤをすべて抽出する。事前学習部１４０は、抽出したクラスタＩＤそれぞれについて発生確率を計算する。クラスタの総数がＭ（Ｍは１以上の整数）の場合、クラスタＩＤ「ｉ」のクラスタから、すべてのクラスタＩＤ「１，２，・・・，ｊ，・・・，Ｍ」それぞれへの遷移確率「Ｄ1,i，Ｄ2,i，・・・，Ｄj,i，・・・，ＤM,i」が算出される。
【００８５】
このような遷移確率の計算が、すべてのクラスタＩＤそれぞれを遷移前のクラスタＩＤとする場合について計算される。その結果、遷移前と遷移後とのすべてのクラスタＩＤの組み合わせについて、遷移確率が計算される。そして、計算した遷移確率を行列の要素とすることで、遷移確率行列が生成される。
【００８６】
以上のような事前学習により、学習結果１５１が生成される。
図１２は、学習結果の一例を示す図である。学習結果１５１には、例えば発生確率情報１５１ａ、遷移確率行列１５１ｂ、およびクラスタ情報１５１ｃが含まれる。発生確率情報１５１ａには、時刻ごとに、該当時刻におけるクラスタＩＤごとの発生確率が設定される。
【００８７】
遷移確率行列１５１ｂは、遷移元のクラスタのクラスタＩＤが列に対応付けられ、遷移先のクラスタのクラスタＩＤが行に対応付けられている。遷移確率行列１５１ｂにおける列と行の交わる位置の要素として、その列のクラスタＩＤが遷移元であり、その行のクラスタＩＤが遷移先である場合の遷移確率が設定されている。
【００８８】
クラスタ情報１５１ｃには、クラスタＩＤに対応付けて、そのクラスタＩＤに示されるクラスタに属するＳＤＲの集合が設定されている。各ＳＤＲには、システム３０がそのＳＤＲに示される状態になった日時が設定されている。
【００８９】
このような学習結果に基づいて、統計的な性質が判定される。統計的な性質は、発生確率や遷移確率の定常性の有無である。定常性とは、期間が異なっても確率分布が変化しないことである。
【００９０】
図１３は、定常性判定処理の手順を示すフローチャートである。以下、図１３に示す処理をステップ番号に沿って説明する。
［ステップＳ１３１］定常性判定部１７０は、事前学習期間Ｌtrainを２分割する。定常性判定部１７０は、２分割で得られた分割期間を、ＬA，ＬBとする。
【００９１】
［ステップＳ１３２］定常性判定部１７０は、発生確率情報１５１ａに基づき、事前学習期間Ｌtrainおよび分割期間ＬA，ＬBそれぞれについて、クラスタＩＤの発生確率分布を生成する。
【００９２】
［ステップＳ１３３］定常性判定部１７０は、３つの期間から２つずつの組（３通り）を生成し、組となった２つの期間の発生確率分布の間に、有意な差が存在するか否かを検定する。検定方法としては、適合度検定（χ二乗検定）、Kolmogorov-Smirnov検定などを用いることができる。適合度検定を用いる場合、比較する２つの発生確率分布の一方を期待値、他方を観測値として統計量「χ二乗」を計算する。χ二乗の値が所定値以上の場合、有意な差があると判断できる。
【００９３】
［ステップＳ１３４］定常性判定部１７０は、３つの期間の間に有意な差があるか否かを判断する。例えば定常性判定部１７０は、３通りの期間の組み合わせのうち、少なくとも１つの組み合わせにおいて、発生確率分布に有意な差が認められる場合、有意な差があると判断する。有意な差がある場合、処理がステップＳ１３５に進められる。有意な差がない場合、処理がステップＳ１３６に進められる。
【００９４】
［ステップＳ１３５］定常性判定部１７０は、発生確率分布の定常性（Ｐ−定常性）が存在しないと判断し、処理をステップＳ１３７に進める。
［ステップＳ１３６］定常性判定部１７０は、Ｐ−定常性が存在すると判断する。
【００９５】
［ステップＳ１３７］定常性判定部１７０は、３つの各期間について、クラスタＩＤ間の遷移確率行列を生成する。
［ステップＳ１３８］定常性判定部１７０は、３つの期間から２つずつの組（３通り）を生成し、組となった２つの期間の遷移確率行列の間に、有意な差が存在するか否かを検定する。
【００９６】
［ステップＳ１３９］定常性判定部１７０は、３つの期間の間に有意な差があるか否かを判断する。例えば定常性判定部１７０は、３通りの期間の組み合わせのうち、少なくとも１つの組み合わせにおいて、遷移確率行列に有意な差が認められる場合、有意な差があると判断する。有意な差がある場合、処理がステップＳ１４０に進められる。有意な差がない場合、処理がステップＳ１４１に進められる。
【００９７】
［ステップＳ１４０］定常性判定部１７０は、遷移確率行列の定常性（Ｔ−定常性）が存在しないと判断する。その後、処理がステップＳ１４２に進められる。
［ステップＳ１４１］定常性判定部１７０は、Ｔ−定常性が存在すると判断する。その後、処理がステップＳ１４３に進められる。
【００９８】
［ステップＳ１４２］定常性判定部１７０は、Ｔ―定常性がない場合は、アノマリ判定処理を適用するのに適さないものと判断し、処理を終了する。
［ステップＳ１４３］定常性判定部１７０は、Ｔ−定常性がある場合、Ｐ−定常性の判定結果により、処理を分岐させる。Ｐ−定常性がない場合、処理がステップＳ１４４に進められる。Ｐ−定常性がある場合、処理がステップＳ１４５に進められる。
【００９９】
［ステップＳ１４４］定常性判定部１７０は、Ｔ−定常性はあるもののＰ−定常性がない場合、アノマリ判定の動作モードを「非周期モード」に設定し、処理を終了する。
［ステップＳ１４５］定常性判定部１７０は、Ｔ−定常性とＰ−定常性との両方がある場合、アノマリ判定の動作モードを「通常モード」に設定し、処理を終了する。
【０１００】
定常性の判定により、Ｐ−定常性とＴ−定常性との有無が分かる。Ｐ−定常性とＴ−定常性との有無により、学習結果の統計的な信頼性が判断できる。例えば、Ｐ−定常性があれば、発生確率情報１５１ａの統計的信頼性が高い。その場合、発生確率情報１５１ａを用いて、以後のシステム３０の状態を示すＳＤＲが属するクラスタの発生確率の定常性からの逸脱を検出できる。また、Ｔ−定常性があれば、遷移確率行列１５１ｂの統計的信頼性が高い。その場合、遷移確率行列１５１ｂを用いて、以後のシステム３０の状態を示すＳＤＲが属するクラスタの遷移確率の定常性からの逸脱を検出できる。
【０１０１】
学習後の定常性からの逸脱は、観測装置１００を稼働診断モードで動作させることにより検出できる。以下、稼働診断モードにおける観測装置１００の処理を詳細に説明する。
図１４は、稼働診断モードでの動作状態解析処理を示す図である。稼働診断モードでは、システム３０からリアルタイム方式により、動作ログ１２１ａ，１２２ａ，・・・が収集される。そして動作ログ１２１ａ，１２２ａ，・・・を取得するごとに、統計量生成部１３０により、ＳＤＲ４１ａ，４２ａ，・・・が生成される。
【０１０２】
オンライン識別部１６０は、事前学習で得られた学習結果１５１に基づいて、オンライン識別処理を行う。オンライン識別処理では、稼働監視中の新規のＳＤＲに対し、動的類似度クラスタリングが行われる。動的類似度クラスタリングでは、ＳＤＲが生成されるごとに、ＳＤＲが属するクラスタが判断される。オンライン学習モードであれば、判断したクラスタリングの結果に基づいて、学習結果１５１が更新される。
【０１０３】
その後、事前学習モードと同様に、定常性判定部１７０による定常性判定が行われる。このとき定常性判定部１７０は、事前学習モードで判定した定常性の判定結果と、稼働診断モードで判定した定常性の判定結果とを、アノマリ判定部１８０に送信する。
【０１０４】
アノマリ判定部１８０は、学習結果１５１、オンライン識別部１６０による識別結果、および定常性判定部１７０による定常性判定結果に基づいて、アノマリの発生の有無を判定する。そしてアノマリの発生状況などを示す情報が、可視化部１９０により可視化される。
【０１０５】
次に、オンライン識別処理について詳細に説明する。
図１５は、オンライン識別処理の一例を示すフローチャートである。以下、図１５に示す処理をステップ番号に沿って説明する。
【０１０６】
［ステップＳ２０１］オンライン識別部１６０は、クラスタを１つ選択する。
［ステップＳ２０２］オンライン識別部１６０は、選択したクラスタの代表和と代表積とを算出する。
【０１０７】
例えば事前学習で、以下のクラスタが得られたとする。
Ｃtrain＝｛Ｃ1，Ｃ2，・・・，Ｃn｝    ・・・（６）
各クラスタ∀Ｃiについての代表和Ｓi:+と代表積Ｓi:Xとを、以下のように定義する。
∀Ｃi∈Ｃtrain，∀Ｓk∈Ｃi，Ｓi:+＝∪kＳk，Ｓi:X＝∩kＳk    ・・・（７）
代表和は、クラスタ内のＳＤＲの要素ごとのビット値の論理和である。すなわち代表和は、いずれか１つのＳＤＲにおいて「１」の要素については「１」、すべてのＳＤＲにおいて「０」の要素は「０」としたベクトルである。代表積は、クラスタ内のＳＤＲの要素ごとのビット値の論理積である。すなわち代表積は、クラスタ内のすべてのＳＤＲにおいて「１」の要素については「１」、いずれか１つのＳＤＲにおいて「０」の要素は「０」としたベクトルである。
【０１０８】
［ステップＳ２０３］オンライン識別部１６０は、代表和および代表積のそれぞれと、新規に生成されたＳＤＲとを比較する。例えばオンライン識別部１６０は、新規に入力されたＳＤＲをＳxとする。このときオンライン識別部１６０は、Ｓxに対して、Ｃ1，Ｃ2，・・・，Ｃnのいずれかに属するかどうかの判定を、代表和と代表積とを用いて、以下の計算により高速に実施する。
Ｓx∈Ｃi  ⇔  ∃Ｃi∈Ｃtrain，（Ｓx⊂Ｓi:+）＆（Ｓx⊃Ｓi:X）    ・・・（８）
式（８）において、「Ｓx⊂Ｓi:+」は、新たなＳＤＲのベクトルにおいて「１」となっている要素は、クラスタＣiの代表和においても「１」となっていることを示す。「Ｓx⊃Ｓi:X」は、クラスタＣiの代表積で「１」となっている要素は、新たなＳＤＲのベクトルにおいても「１」となっていることを示す。新たなＳＤＲが「Ｓx⊂Ｓi:+」と「Ｓx⊃Ｓi:X」との両方を満たす場合、そのＳＤＲはクラスタＣiに属するものと判断できる。このような計算により、ビットベクトルの比較を２回行うだけで、新たなＳＤＲがどのクラスタに属するのかを判定できる。
【０１０９】
なお新たなＳＤＲ（Ｓx）が、クラスタＣiとの間で式（８）の関係を満たさない場合であっても、ＳＤＲ（Ｓx）とクラスタＣiに属するすべてのＳＤＲとの間で、類似度Ｊ（ｓi，ｓj）≧ｔｈが成り立つ場合もあり得る。そこでオンライン識別部１６０は、式（８）による判定において、新たなＳＤＲが属するクラスタが見つからなかった場合、例えば以下の式で属するクラスタを判定する。
Ｊ（（Ｓi:+∪Ｓx），（Ｓi:X∩Ｓx））≧ｔｈ    ・・・（９）
新たなＳＤＲに対して、式（８）を満たさなくても式（９）を満たすクラスタＣiがあれば、新たなＳＤＲはそのクラスタＣiに属していると判断できる。
【０１１０】
［ステップＳ２０４］オンライン識別部１６０は、新たなＳＤＲが、選択したクラスタに属するか否かを判断する。属する場合、処理がステップＳ２０５に進められる。属していない場合、処理がステップＳ２０６に進められる。
【０１１１】
［ステップＳ２０５］オンライン識別部１６０は、新たなＳＤＲが、選択中のクラスタに属するものとして、そのＳＤＲに、選択中のクラスタのクラスタＩＤを付与する。その後、処理がステップＳ２０９に進められる。
【０１１２】
［ステップＳ２０６］オンライン識別部１６０は、未選択のクラスタがあるか否かを判断する。未選択のクラスタがあれば、処理がステップＳ２０１に進められる。すべてのクラスタが選択済みであれば、処理がステップＳ２０７に進められる。
【０１１３】
［ステップＳ２０７］オンライン識別部１６０は、新たなＳＤＲが既存のいずれのクラスタにも属さない場合、オンライン識別部１６０は、以下のような新しいクラスタを生成する。
Ｃn+1＝｛Ｓx｝    ・・・（１０）
［ステップＳ２０８］オンライン識別部１６０は、新たに生成したクラスタに基づいて、発生確率情報１５１ａ（図１２参照）と遷移確率行列１５１ｂ（図１２参照）とを拡張する。具体的にはオンライン識別部２０８は、発生確率情報１５１ａに対して、クラスタＩＤの欄を１つ増やす。またオンライン識別部１６０は、遷移確率行列１５１ｂに対して、遷移元クラスタＩＤの列を１つ追加し、遷移先クラスタＩＤの行を１つ追加する。
【０１１４】
［ステップＳ２０９］オンライン識別部１６０は、オンライン学習モードか否かを判断する。オンライン学習モードであれば、処理がステップＳ２１０に進められる。オンライン学習モードでなければ、処理が終了する。
【０１１５】
［ステップＳ２１０］オンライン識別部１６０は、発生確率情報１５１ａにおける時刻ごとの発生確率分布と遷移確率行列１５１ｂ内の要素の値とを更新する。その後、処理が終了する。
【０１１６】
このようなオンライン識別により、ＳＤＲが生成されるごとに、そのＳＤＲを含めたクラスタリングが可能となる。
次に、アノマリ判定処理について詳細に説明する。第２の実施の形態では、アノマリ判定として、「状態アノマリ」、「時系列アノマリ」、「定常性アノマリ」の有無を判定する。
【０１１７】
「状態アノマリ」は、新規にクラスタが生成されたこと（新規の状態が発生）、または発生確率の少ないクラスタに属するＳＤＲが生成されたこと（稀な状態が発生）を示すアノマリである。状態アノマリは、発生確率情報１５１ａと、オンライン識別部１６０による識別結果とに基づいて判定できる。
【０１１８】
図１６は、状態アノマリの第１の例を示す図である。例えば事前学習において、複数のクラスタ７１〜７３が生成されていたものとする。なお、図１６中、クラスタ７１〜７３内の点は、各クラスタに属するＳＤＲを示している。
【０１１９】
その後、稼働診断モードでのオンライン識別により、まず、新たに生成されたＳＤＲが、既存のクラスタ７１〜７３のいずれかに属するか否かが判断される。いずれのクラスタにも属さなければ、新たなクラスタ７４が生成され、新規のＳＤＲは、そのクラスタ７４に属するものと判定される。
【０１２０】
このように、新たなクラスタ７４が生成された場合、アノマリ判定部１８０は、状態アノマリが発生したものと判断する。
また、アノマリ判定部１８０は、新規のＳＤＲが既存のクラスタに属する場合でも、そのＳＤＲの生成元となる動作ログの採取時刻において、そのＳＤＲが属するクラスタについてのクラスタＩＤ発生確率が所定の閾値以下であれば、状態アノマリとする。
【０１２１】
図１７は、状態アノマリの第２の例を示す図である。例えば、稼働診断モードにおいて、２０１５年４月２７日の１１：００に動作ログ８１を採取したものとする。この動作ログ８１には、同日の１０：５０〜１１：００までの各性能項目の値についての時系列データである。この動作ログ８１に基づいて、動作ログ８１採取時のシステム３０の状態を示すＳＤＲが生成される。オンライン識別によりこのＳＤＲが属するクラスタを判別したところ、クラスタＩＤ「１２」の既存のクラスタに属すると判定されたものとする。
【０１２２】
この場合、アノマリ判定部１８０は、発生確率情報１５１ａを参照し、時刻「１１：００」のクラスタＩＤ「１２」の発生確率Ｐ（12,11:00）を取得する。その発生確率の値が所定の閾値以下であれば、アノマリ判定部１８０は、状態アノマリが発生したと判定する。
【０１２３】
図１６、図１７に示したような状態アノマリの判定を実施するために、アノマリ判定部１８０は、状態アノマリスコアを計算する。状態アノマリスコアは、以下の式で表される。
Ａｓｅ（ｉｄ）＝Ｎ（Ｆ（Ｅｖａｌ（Ｐ（ｉｄ，ｔ））））    ・・・（１１）
式（１１）において、Ｐ（ｉｄ，ｔ）は、時刻ｔにおける「ｉｄ」に示されるクラスタＩＤの発生確率である。Ｅｖａｌ（ｘ）は、確率評価関数である。Ｆ（ｘ）は、フィルタ関数であり、Ｅｖａｌ関数の結果を強調するなどの変換を行う関数である。Ｎ（ｘ）は、規格化関数であり、アノマリの値を０〜１に収める働きをする。
【０１２４】
以下に、状態アノマリスコアの計算式の具体例を示す。
＜状態アノマリスコア（第１の例）＞
Ｐ（ｉｄ，ｔ）＝０の場合、Ａｓｅ（ｉｄ）＝１    ・・・（１２）
Ｐ（ｉｄ，ｔ）≠０の場合、
・Ｅｖａｌ（ｘ）＝１／Ｐ（ｉｄ，ｔ）    ・・・（１３）
・Ｆ（ｘ）＝ｉｆ（ｘ＞１０）  ｔｈｅｎ  １  ｅｌｓｅ  ０    ・・・（１４）
・Ｎ（ｘ）＝ｘ    ・・・（１５）
式（１２）は、新規のＳＤＲが属するクラスタについて、そのＳＤＲのオンライン識別前におけるそのクラスタのクラスタＩＤに対する発生確率が「０」の場合である。この場合、状態アノマリスコアを最大値「１」にすることで、状態アノマリの発生が表される。
【０１２５】
式（１３）は、発生確率が小さいほど、確率評価関数の値が大きくなるような式である。そして式（１４）では、確率評価関数の値が閾値「１０」より大きければフィルタ関数の値を「１」、そうでなければフィルタ関数の値を「０」としている。この例では、フィルタ関数の値が「１」または「０」であり、すでに０〜１に収まっている。そのため、式（１５）の規格化関数ではなにもせず、フィルタ関数の値がそのまま出力される。
【０１２６】
＜状態アノマリスコア（第２の例）＞
Ｐ（ｉｄ，ｔ）＝０の場合、Ａｓｅ（ｉｄ）＝１    ・・・（１６）
Ｐ（ｉｄ，ｔ）≠０の場合、
・Ｅｖａｌ（ｘ）＝１／Ｐ（ｉｄ，ｔ）    ・・・（１７）
・Ｆ（ｘ）＝ｌｎ（ｘ）    ・・・（１８）
・Ｎ（ｘ）＝ｘ     ・・・（１９）
第２の例における式（１６）、（１７）、（１９）は、それぞれ第１の例の式（１２）、（１３）、（１５）と同じである。式（１８）のｌｎ（ｘ）は自然対数を表している。
【０１２７】
＜状態アノマリスコア（第３の例）＞
Ｐ（ｉｄ，ｔ）＝０の場合、Ａｓｅ（ｉｄ）＝１    ・・・（２０）
Ｐ（ｉｄ，ｔ）≠０の場合、
・Ｅｖａｌ（ｘ）＝Ｒａｎｋ（Ｐ（ｉｄ，ｔ））    ・・・（２１）
・Ｆ（ｘ）＝ｘ    ・・・（２２）
・Ｎ（ｘ）＝ｘ／ＩＤmax    ・・・（２３）
第３の例における式（２０）は、第１の例の式（１２）と同じである。式（２１）におけるＲａｎｋ（ｘ）は、存在するクラスタＩＤそれぞれの発生確率を、値の大きい順でソートしたときの、クラスタＩＤ「ｉｄ」の発生確率の順位である。例えば、クラスタＩＤ＝１〜３について、発生確率がＰ（１，ｔ）＝０．１、Ｐ（２，ｔ）＝０．７、Ｐ（３，ｔ）＝０．２であるものとする。このとき、Ｒａｎｋ（Ｐ（１，ｔ））＝３、Ｒａｎｋ（Ｐ（２，ｔ））＝１、Ｒａｎｋ（Ｐ（３，ｔ））＝２となる。式（２２）に示すフィルタ関数では何もせず、入力された値がそのまま出力される。式（２３）の「ＩＤmax」は、クラスタＩＤの最大値である。クラスタＩＤ＝１〜３であればＩＤmax＝３であり、Ｎ（ｘ）＝ｘ／３である。新規に生成されたＳＤＲが属するクラスタのクラスタＩＤが「１」（Ｐ（１，ｔ）＝０．１、Ｒａｎｋ（Ｐ（１，ｔ））＝３）の場合、状態アノマリスコアは以下の通りとなる。
Ａｓｅ（１）＝Ｒａｎｋ（Ｐ（１，ｔ））／ＩＤmax＝３／３＝１    ・・・（２４）
上記のいずれかの計算式により状態アノマリスコアを算出できる。そして状態アノマリスコアが所定値以上であれば、状態アノマリが発生していると判断される。
【０１２８】
次に、時系列アノマリについて詳細に説明する。時系列アノマリは、遷移確率行列１５１ｂに基づいて判定できる。
例えば，時刻ｔ０−１における各クラスタに属するＳＤＲの発生頻度が得られているものとする。このとき、時刻ｔ０における各クラスタに属するＳＤＲの発生頻度は、以下の式で表される。
【０１２９】
【数１】
0006652699.tif 000002
【０１３０】
ここで、Φt0-1（Ｓi）は、クラスタＩＤが「ｉ」（ｉ＝１，２，・・・，Ｍ）のクラスタに属するＳＤＲの、時刻ｔ０−１における発生確率である。Φt0（Ｓi）は、クラスタＩＤが「ｉ」のクラスタに属するＳＤＲの、時刻ｔ０における発生確率である。
【０１３１】
式（２５）を簡素化して、以下のように表すことができる。
Φt0＝ＴΦt0-1    ・・・（２６）
Φt0は、Φt0＝（Φt0（Ｓ1），Φt0（Ｓ2），・・・，Φt0（ＳM））の列ベクトルである。Φt0-1は、Φt0-1＝（Φt0-1（Ｓ1），Φt0-1（Ｓ2），・・・，Φt0-1（ＳM））の列ベクトルである。Ｔは、遷移確率行列である。
【０１３２】
例えば、ｔ＝１からｔ＝ｎまでの各時刻における、各クラスタに属するＳＤＲの発生確率は、以下の通りとなる。
Φ1＝ＴΦ0
Φ2＝ＴΦ1
：
Φn＝ＴΦn-1    ・・・（２７）
すると、任意の時刻における各クラスタに属するＳＤＲの発生確率は、遷移確率行列Ｔを用いて、以下のように表すことができる。
Φn＝ＴnΦ0    ・・・（２８）
式（２８）を用いれば、任意の時刻における各クラスタに属するＳＤＲの発生確率について、その時刻の過去の複数の時刻の発生確率分布それぞれから計算できる。
【０１３３】
図１８は、遷移確率行列を用いた発生確率の算出例を示す図である。例えば時刻ｔ＝ｔ０において収集した動作ログから生成したＳＤＲが、クラスタＩＤ「１」のクラスタに属すると判定された場合を想定する。この場合、アノマリ判定部１８０は、過去の数回分の動作ログによるＳＤＲが属するクラスタに基づいて、時刻ｔ＝ｔ０における、各クラスタに属するＳＤＲの発生確率を計算する。
【０１３４】
図１８の例では、３回前の動作ログ（時刻：ｔ０−３）から生成したＳＤＲは、クラスタＩＤ「４」に属している。２回前の動作ログ（時刻：ｔ０−２）から生成したＳＤＲは、クラスタＩＤ「１」に属している。１回前の動作ログ（時刻：ｔ０−１）から生成したＳＤＲは、クラスタＩＤ「３」に属している。
【０１３５】
アノマリ判定部１８０は、時刻ｔ０−３におけるＳＤＲの発生確率Φt0-3について、クラスタＩＤ「４」のクラスタの発生確率を「１」、その他のクラスタの発生確率を「０」として、ベクトルで表す。そしてアノマリ判定部１８０は、発生確率Φt0-3に対して、遷移確率行列Ｔを左から３回かける。これにより、現在の時刻ｔ０における、各クラスタに属するＳＤＲの発生確率Φ3が得られる。
【０１３６】
同様にアノマリ判定部１８０は、時刻ｔ０−２におけるＳＤＲの発生確率Φt0-2について、クラスタＩＤ「１」のクラスタの発生確率を「１」、その他のクラスタの発生確率を「０」として、ベクトルで表す。そしてアノマリ判定部１８０は、発生確率Φt0-2に対して、遷移確率行列Ｔを左から２回かける。これにより、現在の時刻ｔ０における、各クラスタに属するＳＤＲの発生確率Φ2が得られる。
【０１３７】
さらにアノマリ判定部１８０は、時刻ｔ０−１におけるＳＤＲの発生確率Φt0-1について、クラスタＩＤ「３」のクラスタの発生確率を「１」、その他のクラスタの発生確率を「０」として、ベクトルで表す。そしてアノマリ判定部１８０は、発生確率Φt0-1に対して、遷移確率行列Ｔを左から１回かける。これにより、現在の時刻ｔ０における、各クラスタに属するＳＤＲの発生確率Φ1が得られる。
【０１３８】
このように、現在の時刻ｔ０における、各クラスタに属するＳＤＲの発生確率が３通り算出される。これらの発生確率を用いて、時系列アノマリスコアが計算される。
現在から「τ×Δｔ」（τ＝１，２，・・・，τｍａｘ）だけ遡った時点から、クラスタＩＤ「ｉｄ」の遷移確率行列を用いて計算した発生確率を、Φ1（ｉｄ），Φ2（ｉｄ），…，Φτmax（ｉｄ）とする。なお、Δｔは、例えば動作ログの取得間隔である。このとき時系列アノマリスコアは、例えば以下の式で計算できる。
Ａｓｓ（ｉｄ）＝Ｎ（Ｆ（Ｅｖａｌ（Φ1（ｉｄ），Φ2（ｉｄ），…，Φτmax（ｉｄ））））    ・・・（２９）
ここで「Ｅｖａｌ（ｘ1，ｘ2，  …ｘτmax）」は、遷移確率評価関数である。Ｆ（ｘ）は、遷移確率評価関数の結果を強調するためのフィルタ関数である。Ｎ（ｘ）は、アノマリ値を０〜１に収めるための規格化関数である。具体的には、以下のような計算式で時系列アノマリスコアを計算できる。
Ｅｖａｌ（ｘ1，…，ｘτmax）＝Ａ1×Ｒａｎｋ（ｘ1）＋Ａ2×Ｒａｎｋ（ｘ2）＋…＋Ａτmax×Ｒａｎｋ（ｘτmax）    ・・・（３０）
Ｆ（ｘ）＝ｘ    ・・・（３１）
Ｎ（ｘ）＝ｘ／（τmax×ＩＤmax）    ・・・（３２）
式（３０）のＡ1，・・・，Ａτmaxは、重みを示す定数である。例えばＡ1＝１，Ａ2＝１／２，Ａ3＝１／３，・・・，Ａτmax＝１／τmaxである。このように重み付けをすることで、現在に近いほど高い重み付けとなり、過去に遡るほど低い重み付けとなる。これにより、現在に近い時点の状態に基づく発生確率ほど時系列アノマリスコアに対する影響度が高くなる。現在に近い時点の状態に基づく発生確率の方が、現在から遠い時点の状態に基づく発生確率よりも信頼性が高い。そのため、このような重み付けを行うことで、信頼性の高い時系列アノマリスコアを計算できる。
【０１３９】
式（３０）のＲａｎｋ（ｘ）は、ｘの値で降順にソートしたｉｄの順位である。式（３０）を式（２９）に適用すると、例えば「Ｒａｎｋ（ｘ1）」は「Ｒａｎｋ（Φ1（ｉｄ））」となる。「Ｒａｎｋ（Φ1（ｉｄ））」は、「Φ1（ｉｄ），Φ2（ｉｄ），・・・，Φτmax（ｉｄ）」を、その値によって降順にソートしたときの「Φ1（ｉｄ）」の順位である。式（３１）は、入力値をそのまま出力する関数である。式（３２）の「ＩＤmax」は、クラスタＩＤの最大値である。
【０１４０】
このような計算式により、時系列アノマリを計算することができる。
なお、アノマリ判定部１８０は、状態アノマリスコアと時系列アノマリスコアとを統合したアノマリスコア（状態・時系列アノマリスコア）を計算することもできる。状態・時系列アノマリスコアは、時系列アノマリスコアを拡張して、例えば以下の式で表される。
Ａｓｓ（ｉｄ）＝Ｎ（Ｆ（Ｅｖａｌ（Φ0（ｉｄ），Φ1（ｉｄ），Φ2（ｉｄ），…，Φτmax（ｉｄ））））    ・・・（３３）
式（３３）の「Φ0（ｉｄ）」は、発生確率情報１５１ａに示されている、現在の時刻におけるクラスタＩＤ「ｉｄ」の発生確率「Ｐ（ｉｄ，ｔ）」である。「Ｅｖａｌ（ｘ0，ｘ1，ｘ2，  …ｘτmax）」は、評価関数である。Ｆ（ｘ）は、評価関数の結果を強調するためのフィルタ関数である。Ｎ（ｘ）は、アノマリ値を０〜１に収めるための規格化関数である。
【０１４１】
このように、現在の時刻の発生確率Ｐ（ｉｄ，ｔ）を含め、「τmax＋１」個の時点それぞれから算出した発生確率に基づいて、状態・時系列アノマリスコアを計算できる。
次に、アノマリ判定処理の手順について説明する。
【０１４２】
図１９は、アノマリ判定処理の手順の一例を示すフローチャートである。以下、図１９に示す処理をステップ番号に沿って説明する。
［ステップＳ２２１］アノマリ判定部１８０は、定常性判定部１７０から直近とその前との定常性判定結果を取得する。定常性判定結果には、例えばＴ−定常性の有無、Ｐ−定常性の有無、アノマリ判定の適用が不適かどうか、動作モードが非周期モードなのか通常モードなのかの情報が含まれる。
【０１４３】
［ステップＳ２２２］アノマリ判定部１８０は、直近の定常性判定結果に基づいて、アノマリ判定の適用が適切か否かを判断する。アノマリ判定の適用が適切であれば、処理がステップＳ２２３に進められる。アノマリ判定の適用が不適であれば、アノマリ判定処理が終了する。
【０１４４】
［ステップＳ２２３］アノマリ判定部１８０は、直近の定常性判定結果に基づいて、動作モードが通常モードか否かを判定する。通常モードであれば、処理がステップＳ２２４に進められる。非周期モードであれば、処理がステップＳ２２６に進められる。
【０１４５】
［ステップＳ２２４］アノマリ判定部１８０は、発生確率情報１５１ａに基づいて、状態アノマリスコアを計算する。
［ステップＳ２２５］アノマリ判定部１８０は、状態アノマリスコアが所定値以上か否かを判断する。所定値以上であれば、処理がステップＳ２２６に進められる。所定値未満であれば、処理がステップＳ２２７に進められる。
【０１４６】
［ステップＳ２２６］アノマリ判定部１８０は、状態アノマリが発生していると判定する。
［ステップＳ２２７］アノマリ判定部１８０は、遷移確率行列１５１ｂに基づいて、時系列アノマリスコアを計算する。
【０１４７】
［ステップＳ２２８］アノマリ判定部１８０は、時系列アノマリスコアが所定値以上か否かを判断する。所定値以上であれば、処理がステップＳ２２９に進められる。所定値未満であれば、処理がステップＳ２３０に進められる。
【０１４８】
［ステップＳ２２９］アノマリ判定部１８０は、時系列アノマリが発生していると判定する。
［ステップＳ２３０］アノマリ判定部１８０は、定常性から逸脱したか否かを判断する。例えば、Ｔ−定常性またはＰ−定常性について、前回の定常性判定において定常性が存在していたのに、今回の定常性判定において定常性が存在しないと判断された場合、定常性から逸脱したと判断する。定常性から逸脱した場合、処理がステップＳ２３１に進められる。定常性から逸脱していない場合、アノマリ判定処理が終了する。
【０１４９】
［ステップＳ２３１］アノマリ判定部１８０は、定常性アノマリが発生していると判定する。
このようにして、システム３０の状態を表すＳＤＲが、どのクラスタに属するのかによって、アノマリの検出が可能となる。アノマリの検出状況は、可視化部１９０によって、モニタ２１に表示される。
【０１５０】
図２０は、アノマリ発生状況の可視化の一例を示す図である。図２０の例では、生成されたＳＤＲが属するクラスタのクラスタＩＤを、システム３０の状態としている。可視化画面８２には、状態遷移表示部８２ａと状態分布表示部８２ｂとが設けられている。
【０１５１】
状態遷移表示部８２ａには、システム３０の状態を示すＳＤＲの属するクラスタのクラスタＩＤの時間遷移が折れ線グラフで示されている。図２０の例では、クラスタＩＤ「１」の状態が継続していたが、４月２７日の１２時前に、一度だけクラスタＩＤ「１２」のクラスタに属するＳＤＲが生成されている。
【０１５２】
状態分布表示部８２ｂには、状態を示すクラスタＩＤの発生頻度が、棒グラフで示されている。図２０の例では、クラスタＩＤ「１」のクラスタに属するＳＤＲが４００回以上生成されているのに対し、クラスタＩＤ「１２」のクラスタに属するＳＤＲが１回だけ生成されている。
【０１５３】
このような、ＳＤＲが属するクラスタのクラスタＩＤの遷移状況や発生頻度がアノマリであるかどうかは、アノマリスコアによって判定できる。可視化部１９０は、例えばアノマリスコアの時間遷移を表示して、アノマリの発生の有無を可視化する。
【０１５４】
図２１は、アノマリスコアの可視化の一例を示す図である。可視化画面８３には、アノマリスコア表示部８３ａ、相関を失った項目表示部８３ｂ、および項目値表示部８３ｃが設けられている。
【０１５５】
アノマリスコア表示部８３ａには、アノマリスコア（状態アノマリまたは時系列アノマリ）の値の時間遷移が折れ線グラフで表されている。図２１の例では、アノマリスコアが、４月２７日の１２時前に一度だけ高い値となっている。このグラフから、４月２７日の１２時前に、アノマリが発生したことが理解できる。
【０１５６】
相関を失った項目表示部８３ｂには、観測期間に対応付けて、以前は相関が存在したが、その期間において相関がなくなった項目対（第１の項目と第２の項目）が表示されている。
【０１５７】
項目値表示部８３ｃには、相関を失った項目対の２つの項目それぞれについての値の時間変化が、折れ線グラフで示されている。値の変化を比較することで、相関が失われている状況を、管理者が把握できる。
【０１５８】
また可視化部１９０は、複数の性能項目それぞれの値の変化を画面表示することもできる。
図２２は、性能項目の可視化の一例を示す図である。図２２の例では、可視化画面８４内に、複数の性能項目表示部８４ａ，８４ｂ，８４ｃ，８４ｄ，・・・が設けられている。性能項目表示部８４ａ，８４ｂ，８４ｃ，８４ｄ，・・・それぞれには、項目の値の時間変化が示されている。
【０１５９】
図２０〜図２２に示したように可視化を行うことで、システム３０の動作状況を容易に把握することができ、アノマリの発生の有無も容易に認識できる。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１６０】
１  システム
２  遷移確率行列
１０  情報処理装置
１１  記憶部
１１ａ，１１ｂ，・・・  時系列データ
１１−１  状態管理テーブル
１２  演算部
【図１】
0006652699.tif 000003
【図２】
0006652699.tif 000004
【図３】
0006652699.tif 000005
【図４】
0006652699.tif 000006
【図５】
0006652699.tif 000007
【図６】
0006652699.tif 000008
【図７】
0006652699.tif 000009
【図８】
0006652699.tif 000010
【図９】
0006652699.tif 000011
【図１０】
0006652699.tif 000012
【図１１】
0006652699.tif 000013
【図１２】
0006652699.tif 000014
【図１３】
0006652699.tif 000015
【図１４】
0006652699.tif 000016
【図１５】
0006652699.tif 000017
【図１６】
0006652699.tif 000018
【図１７】
0006652699.tif 000019
【図１８】
0006652699.tif 000020
【図１９】
0006652699.tif 000021
【図２０】
0006652699.tif 000022
【図２１】
0006652699.tif 000023
【図２２】
0006652699.tif 000024