(57)【特許請求の範囲】
【請求項１】
コンピュータに、
管理対象のシステムの状態を示す複数の項目の値の、複数の単位期間内での時間変化を示す情報に基づいて、前記複数の単位期間それぞれについて、前記複数の項目から２つの項目を選択した項目対ごとに、単位期間内での値の時間変化の相関係数を算出し、該相関係数の絶対値が閾値以上のとき、該項目対の間の相関を示す値を「１」とし、該相関係数の絶対値が閾値未満のとき、該項目対の間の相関を示す値を「０」とし、複数の項目対それぞれの相関を示す値を要素とする行列を、前記複数の項目間の値の時間変化の相関を示す相関情報として生成し、
類似度算出対象の２つの相関情報それぞれの行列内の対応する要素の論理和が「１」となる要素数と、該２つの行列内の対応する要素の論理積が「１」となる要素数との比率に応じて、該２つの相関情報間の類似度を算出することで、前記複数の単位期間それぞれの複数の相関情報の間の類似度を算出し、
算出した前記類似度に基づいて前記複数の相関情報をクラスタリングする、
処理を実行させるクラスタリングプログラム。
【請求項２】
コンピュータに、
管理対象のシステムの状態を示す複数の項目の値の、複数の単位期間内での時間変化を示す情報に基づいて、前記複数の単位期間それぞれについて、前記複数の項目から２つの項目を選択した項目対ごとに、単位期間内での値の時間変化の相関係数を算出し、該相関係数の絶対値が閾値以上のとき、該項目対の間の相関を示す値を「１」とし、該相関係数の絶対値が閾値未満のとき、該項目対の間の相関を示す値を「０」とし、複数の項目対それぞれの相関を示す値を要素とする行列を、前記複数の項目間の値の時間変化の相関を示す相関情報として生成し、
前記複数の単位期間それぞれの複数の相関情報の間の類似度を算出し、
算出した前記類似度に基づいて前記複数の相関情報をクラスタリングし、
クラスタリングにより生成された複数のクラスタそれぞれについて、クラスタに属する１以上の相関情報の行列における対応する要素間の論理和を採った代表和と、該クラスタに属する１以上の相関情報の行列における対応する要素間の論理積を採った代表積とを算出し、
新たな単位期間内での前記複数の項目に対応する値の時間変化に基づいて、前記複数の項目間の相関を示す新たな相関情報を生成し、
前記複数のクラスタのうち、前記新たな相関情報を追加しても代表和と代表積が変化しないクラスタを検出し、検出した該クラスタに前記新たな相関情報を帰属させる、
処理を実行させるクラスタリングプログラム。
【請求項３】
前記新たな相関情報を追加しても代表和と代表積が変化しないクラスタが存在しない場合は、前記新たな相関情報を追加した後の代表和と代表積との類似度が閾値以上となるクラスタを検出し、検出した該クラスタに前記新たな相関情報を帰属させる、
請求項２記載のクラスタリングプログラム。
【請求項４】
前記新たな相関情報を帰属させるクラスタが存在しない場合、新たなクラスタを生成し、前記新たな相関情報を該新たなクラスタに帰属させる、
請求項２または３記載のクラスタリングプログラム。
【請求項５】
コンピュータが、
管理対象のシステムの状態を示す複数の項目の値の、複数の単位期間内での時間変化を示す情報に基づいて、前記複数の単位期間それぞれについて、前記複数の項目から２つの項目を選択した項目対ごとに、単位期間内での値の時間変化の相関係数を算出し、該相関係数の絶対値が閾値以上のとき、該項目対の間の相関を示す値を「１」とし、該相関係数の絶対値が閾値未満のとき、該項目対の間の相関を示す値を「０」とし、複数の項目対それぞれの相関を示す値を要素とする行列を、前記複数の項目間の値の時間変化の相関を示す相関情報として生成し、
類似度算出対象の２つの相関情報それぞれの行列内の対応する要素の論理和が「１」となる要素数と、該２つの行列内の対応する要素の論理積が「１」となる要素数との比率に応じて、該２つの相関情報間の類似度を算出することで、前記複数の単位期間それぞれの複数の相関情報の間の類似度を算出し、
算出した前記類似度に基づいて前記複数の相関情報をクラスタリングする、
クラスタリング方法。
【請求項６】
管理対象のシステムの状態を示す複数の項目の値の、複数の単位期間内での時間変化を示す情報を記憶する記憶部と、
前記複数の項目の値の、複数の単位期間内での時間変化に基づいて、前記複数の単位期間それぞれについて、前記複数の項目から２つの項目を選択した項目対ごとに、単位期間内での値の時間変化の相関係数を算出し、該相関係数の絶対値が閾値以上のとき、該項目対の間の相関を示す値を「１」とし、該相関係数の絶対値が閾値未満のとき、該項目対の間の相関を示す値を「０」とし、複数の項目対それぞれの相関を示す値を要素とする行列を、前記複数の項目間の値の時間変化の相関を示す相関情報として生成し、類似度算出対象の２つの相関情報それぞれの行列内の対応する要素の論理和が「１」となる要素数と、該２つの行列内の対応する要素の論理積が「１」となる要素数との比率に応じて、該２つの相関情報間の類似度を算出することで、前記複数の単位期間それぞれの複数の相関情報の間の類似度を算出し、算出した前記類似度に基づいて前記複数の相関情報をクラスタリングする演算部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クラスタリングプログラム、クラスタリング方法、および情報処理装置に関する。
【背景技術】
【０００２】
現在のＩＣＴ（Information and Communication Technology）システム（以下、単にシステムと呼ぶ）は、サーバ・ストレージ装置・ネットワーク装置などの多数の装置を含む。またシステムには、システムの稼働状態を観測する観測装置も含まれる。観測装置は、システムが正常に稼働しているかどうかを判定するため、システムに含まれる多数の装置から膨大な時系列データを採取する。例えば観測装置は、各サーバのＣＰＵ（Central Processing Unit）やメモリの使用状況に関する情報を採取し、使用状況の時間変化をモニタにグラフで表示する。ただし、表示される項目が大量になると、運用管理者が目視で確認して、異常な状態の発生を認識するのは困難となる。
【０００３】
そこで、複雑なシステムにおいて、異常の種類・発生場所・原因を効率的に判断乃至支援する方法が考えられている。また、違反予兆条件を設定する際の作業負担を軽減する方法も考えられている。さらに機器状態を監視するための機器のセンサによって取得された多変量時系列データ内のアノマリを検出するための方法も考えられている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開第２０１２／０９０７１８号
【特許文献２】国際公開第２０１２／０６７０３１号
【特許文献３】特開２０１３−２４６８１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
従来の観測装置は、例えば、単一測定項目ごとに閾値を超えるか否かを監視し、閾値を超えた場合に異常と判断する。しかし、システムの異常状態のなかには、いずれの測定項目も閾値を超えないような異常（サイレント異常）がある。このような異常は、項目ごとの監視では検出が困難である。そのため、システムの異常状態を正しく検出できない場合がある。
【０００６】
１つの側面では、本発明は、システムの異常状態の検出精度を向上させることを目的とする。
【課題を解決するための手段】
【０００７】
１つの案では、コンピュータに、以下の処理を実行させるクラスタリングプログラムが提供される。
コンピュータは、管理対象のシステムの状態を示す複数の項目の値の、複数の単位期間内での時間変化を示す情報に基づいて、複数の単位期間それぞれについて、複数の項目間の値の時間変化の相関を示す相関情報を生成する。次にコンピュータは、複数の単位期間それぞれの複数の相関情報の間の類似度を算出する。そしてコンピュータは、算出した類似度に基づいて複数の相関情報をクラスタリングする。
【発明の効果】
【０００８】
１態様によれば、システムの異常状態の検出精度が向上する。
【図面の簡単な説明】
【０００９】
【図１】第１の実施の形態に係る情報処理装置の構成例を示す図である。
【図２】第２の実施の形態のシステム構成例を示す図である。
【図３】観測装置のハードウェアの一構成例を示す図である。
【図４】観測装置の機能を示すブロック図である。
【図５】動作ログ記憶部に格納されている動作ログの一例を示す図である。
【図６】事前学習モードでの動作状態解析処理を示す図である。
【図７】統計量生成処理の一例を示すフローチャートである。
【図８】ＳＤＲの生成例を示す図である。
【図９】事前学習処理の一例を示すフローチャートである。
【図１０】発生確率の算出例を示す図である。
【図１１】遷移確率の算出例を示す図である。
【図１２】学習結果の一例を示す図である。
【図１３】定常性判定処理の手順を示すフローチャートである。
【図１４】稼働診断モードでの動作状態解析処理を示す図である。
【図１５】オンライン識別処理の一例を示すフローチャートである。
【図１６】可視化の例を示す図である。
【発明を実施するための形態】
【００１０】
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第１の実施の形態〕
まず第１の実施の形態について説明する。第１の実施の形態では、情報処理装置が、システムの複数の項目間の値の時間変化の相関関係に基づいて、単位期間ごとに、システムの状態を示す相関情報を生成する。そして、情報処理装置は、複数の相関情報のクラスタリングを行う。このとき、「システムの状態」と「クラスタ」を同一視することができ、生成される相関情報がどのクラスタに属するかにより、システムの状態変化を適格に監視することができる。
【００１１】
図１は、第１の実施の形態に係る情報処理装置の構成例を示す図である。情報処理装置１０は、管理対象のシステム１に、例えばネットワークを介して接続されている。システム１は、例えば、複数のサーバ、複数のストレージ装置を含むコンピュータシステムである。情報処理装置１０は、システム１の動作状態を監視し、故障の予兆となるような異常な状態の発生を検出する。そのために情報処理装置１０は、記憶部１１と演算部１２とを有する。
【００１２】
記憶部１１は、システム１の状態を示す複数の項目の値の、単位期間ごとの時間変化を表す時系列データ１１ａ，１１ｂ，・・・を記憶する。例えば情報処理装置１０は、システム１を監視して、管理対象のシステムの状態を示す複数の項目の値の時系列データ１１ａ，１１ｂ，・・・を、システム１から取得し、記憶部１１に格納する。システム１の状態を示す複数の項目は、例えば、ＣＰＵの利用状況やメモリ利用状況などのシステム１の性能または負荷に関する項目である。
【００１３】
演算部１２は、記憶部１１内の時系列データ１１ａ，１１ｂ，・・に基づいて、複数の単位期間それぞれについて、複数の項目間の値の時間変化の相関を示す相関情報２ａ，２ｂ，・・・を生成する。例えば演算部１２は、複数の項目から２つの項目を選択した項目対を、すべての組み合わせについて生成する。演算部１２は、項目対ごとに、単位期間内での値の時間変化の相関係数を算出する。次に演算部１２は、項目対の相関係数の絶対値が閾値以上のとき、相関があると判断し、その項目対の間の相関を示す値を「１」とする。また演算部１２は、項目対の相関係数の絶対値が閾値未満のとき、相関がないと判断し、その項目対の間の相関を示す値を「０」とする。そして演算部１２は、相関情報２ａ，２ｂ，・・・として、複数の項目対それぞれの相関を示す値を要素とする行列を生成する。
【００１４】
次に演算部１２は、複数の単位期間それぞれの複数の相関情報２ａ，２ｂ，・・・の間の類似度を算出する。例えば演算部１２は、類似度算出対象の２つの相関情報それぞれの行列内の対応する要素の論理和が「１」となる要素数と、該２つの行列内の対応する要素の論理積が「１」となる要素数とを計数する。そいて、演算部１２は、論理和が「１」となる要素数と論理積が「１」となる要素数との比率に応じて、類似度算出対象の２つの相関情報間の類似度を算出する。演算部１２は、このような類似度算出処理を、複数の相関情報２ａ，２ｂ，・・・から２つの相関情報を選択して得られる相関情報対ごとに行う。
【００１５】
そして演算部１２は、算出した類似度に基づいて複数の相関情報をクラスタリングする。例えば演算部１２は、類似度が所定の閾値以上の相関情報同士を、同じクラスタに帰属させる。この場合、あるクラスタに属する相関情報は、そのクラスタに属する他のすべての相関情報との間で、類似度が閾値以上であるようにする。
【００１６】
このように相関情報をクラスタリングすることで、複数のクラスタ３ａ，３ｂ，３ｃ，３ｄが生成される。図１の例では、クラスタ３ａ，３ｂ，３ｃ，３ｄ内の点が、そのクラスタに属する相関情報を示している。図１に示すように、相関情報が１つしか属していないクラスタ３ｄの存在も許容される。
【００１７】
生成されたクラスタ３ａ，３ｂ，３ｃ，３ｄを参照すると、システム１の状態が、通常通りの時間帯と、通常と異なる状態の時間帯とを判別できる。例えばクラスタ３ｄに属する相関情報は、他のいずれの相関情報とも類似していない。このような相関情報の生成元となった時系列データに対応する単位期間は、システム１が異常な状態となっていた可能性がある。例えば演算部１２は、クラスタ３ｄに属する相関情報に対応する単位期間をモニタなどに表示する。これにより、管理者は、システム１が異常な状態となった時間帯を認識できる。
【００１８】
しかも相関情報は、複数の項目間の相関関係を用いて生成されている。そのため、項目ごとの観察では異常とはならない場合でも、システム１の状態の異常性が相関情報に反映されることがある。すなわち、システム１が通常の状態では相関がある２つの項目について、ある単位期間にその相関が崩れて、相関がなくなった場合、その単位期間内になんらかの異常が発生した可能性がある。このような相関の有無が変化は、相関情報に反映される。システム１に異常が発生し、多数の項目対について、相関の有無が変化すれば、生成される相関情報は、正常な状態のときとは異なるものとなる。
【００１９】
このような異常な状態を表す相関情報は、その相関情報しか属さないクラスタに属するか、あるいは、属する相関情報の発生確率が極めて低いクラスタに属する。そこで、情報処理装置１０は、例えば、ある単位期間内のシステム１の状態を示す相関情報が、属する相関情報の発生確率が極めて低いクラスタに属することになったことをモニタに表示する。これにより、管理者は、項目ごとの観察では認識できないような、システム１の異常の発生を容易に認識できる。このように、第１の実施の形態では、項目ごとの観察では認識できないようなシステム１の異常が検出でき、システム１の状態の異常の検出精度が向上している。
【００２０】
また情報処理装置１０は、記憶部１１に新たな時系列データが入力されるごとに、そのときのシステム１の状態を表す相関情報が属するクラスタを、動的に決定することもできる。例えば演算部１２は、クラスタリングにより生成された複数のクラスタそれぞれについて、代表和と代表積とを算出する。代表和は、クラスタに属する複数の相関情報の行列における対応する要素間の論理和を採ったものである。代表積は、クラスタに属する複数の相関情報の行列における対応する要素間の論理積を採ったものである。次に演算部１２は、新たな単位期間内での複数の項目に対応する値の時間変化に基づいて、複数の項目間の相関を示す新たな相関情報を生成する。そして演算部１２は、複数のクラスタのうち、新たな相関情報を追加しても代表和と代表積が変化しないクラスタを検出し、検出した該クラスタに新たな相関情報を帰属させる。
【００２１】
このようにして、システム１から、新たな単位期間の時系列データを取得するごとに、システム１の最新の状態が、どのクラスタに示される状態に該当するのかが判断できる。
なお、新たな相関情報を追加しても代表和と代表積が変化しないクラスタが存在しない場合もある。この場合、演算部１２は、例えば、新たな相関情報を追加した後の代表和と代表積との類似度が閾値以上となるクラスタを検出し、検出したクラスタに新たな相関情報を帰属させる。
【００２２】
新たな相関情報を帰属させるクラスタが存在しない場合、演算部１２は、新たなクラスタを生成し、新たな相関情報を新たなクラスタに帰属させる。このように新たな相関情報が属するクラスタを判別する際に、適切なクラスタがなければ、その相関情報のみが属するクラスタが新たに生成される。新たに生成されたクラスタは、これまでのシステム１の状態とは異なる状態を表している。そこで、例えば演算部１２が新たなクラスタが生成されたことをモニタに表示すれば、管理者は、現在のシステム１の状態が、通常状態とは異なっていることを、即座に把握できる。
【００２３】
なお、演算部１２は、例えば情報処理装置１０が有するプロセッサにより実現することができる。また、記憶部１１は、例えば情報処理装置１０が有するメモリまたはストレージ装置により実現することができる。
【００２４】
〔第２の実施の形態〕
次に第２の実施の形態について説明する。
図２は、第２の実施の形態のシステム構成例を示す図である。システム３０は、ネットワーク２０を介して観測装置１００に接続されている。システム３０は、サーバ、ストレージ装置、ネットワーク機器などの装置を含むＩＣＴシステムである。観測装置１００は、システム３０から動作状態を示す情報を取得し、取得した情報に基づいて、システム３０の動作を監視する。
【００２５】
図３は、観測装置のハードウェアの一構成例を示す図である。観測装置１００は、プロセッサ１０１によって装置全体が制御されている。プロセッサ１０１には、バス１０９を介してメモリ１０２と複数の周辺機器が接続されている。プロセッサ１０１は、マルチプロセッサであってもよい。プロセッサ１０１は、例えばＣＰＵ、ＭＰＵ（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 Represen-tations）を生成する。ＳＤＲとは、システムの動作に関する複数の項目から取得可能なすべての項目対の相関関係によって、システム３０の状態を表す情報である。ＳＤＲは、単位期間ごとに生成される。
【００４０】
事前学習部１４０は、生成された時系列のＳＤＲに基づいて、システム３０の通常状態を表すＳＤＲを学習する。例えば事前学習部１４０は、システム３０が、どのようなＳＤＲの状態になりやすいのかを解析する。また事前学習部１４０は、ある時間帯に、システム３０が特定のＳＤＲの状態にあるとき、次の時間帯に、システム３０がどのようなＳＤＲの状態に遷移しやすいのかを解析する。事前学習部１４０は、ＳＤＲを解析する場合、例えば単位期間ごとに生成したＳＤＲをクラスタリングすることでクラスタを生成する。なお事前学習部１４０が行うクラスタリングは、蓄積されたＳＤＲの類似度に基づく、静的類似度クラスタリングである。
【００４１】
事前学習部１４０は、同一クラスタに属するＳＤＲで示される状態は、同一状態にあるとみなす。事前学習部１４０は、学習結果を、学習結果記憶部１５０に格納する。なお事前学習部１４０は、例えば観測装置１００が事前学習モードで動作しているときに、処理を実行する。事前学習モードは、システム３０の通常の状態を学習するためのモードである。
【００４２】
学習結果記憶部１５０は、事前学習による学習結果を記憶する。例えばメモリ１０２またはストレージ装置１０３の記憶領域の一部が、学習結果記憶部１５０として使用される。
【００４３】
オンライン識別部１６０は、リアルタイムに収集された、システム３０の動作ログに基づくＳＤＲが、事前に学習した学習結果に示されるどのクラスタに属するのかを識別する。なおオンライン識別部１６０は、リアルタイムに判別したＳＤＲに基づいて、学習結果記憶部１５０内の学習結果を更新することもできる。なおオンライン識別部１６０は、例えば観測装置１００が稼働診断モードで動作しているときに、処理を実行する。稼働診断モードは、システム３０の状態が通常状態か否かを診断するためのモードである。
【００４４】
定常性判定部１７０は、学習結果を統計的に解析し、システム３０の状態における定常性の有無を判定する。例えば定常性判定部１７０は、学習期間を複数に分割し、分割された細分化期間それぞれにおける特定の統計情報を比較し、有意な差が検出されなければ、その統計情報について定常性がある（期間の違いによっては変化しない）と判断する。
【００４５】
可視化部１８０は、学習結果や定常性の判定結果を、モニタ２１などに表示する。例えば可視化部１８０は、生成されたクラスタを、モニタに表示する。また可視化部１８０は、例えば、属するＳＤＲの発生確率の低いクラスタに属するＳＤＲが生成された場合、その旨をモニタに表示する。
【００４６】
このような機能により、観測装置１００は、システム３０の動作状態を観測し、異常な状態が発生したときに管理者が認識しやすいように表示することができる。例えば事前学習モードにおいて生成されているクラスタに属していないＳＤＲが、稼働診断モードで発生する場合がある。このＳＤＲは新たに生成したクラスタに属することとなる。新たなクラスタに属するＳＤＲが発生したということは、システム３０が、これまでの通常の状態から逸脱したことを示しており、異常な状態の可能性がある。そこで、観測装置１００は、例えば、新たなクラスタが生成された旨を、モニタに表示する。このように、新たなクラスタが生成されたことを可視化することで、管理者は、システム３０が異常な状態になった可能性があることを容易に認識できる。
【００４７】
なお、図４に示した各要素間を接続する線は通信経路の一部を示すものであり、図示した通信経路以外の通信経路も設定可能である。また、図４に示した各要素の機能は、例えば、その要素に対応するプログラムモジュールをコンピュータに実行させることで実現することができる。
【００４８】
次に、システム３０から収集され動作ログ記憶部１２０に記憶される動作ログについて説明する。
図５は、動作ログ記憶部に格納されている動作ログの一例を示す図である。動作ログ記憶部１２０には、複数の動作ログ１２１，１２２，・・・が格納されている。
【００４９】
例えば動作ログ１２１には、その動作ログ１２１を出力した装置が属するシステム３０のシステム名、その装置の装置名、および動作ログ１２１の採取日時が設定されている。さらに、動作ログ１２１には、システム３０の、単位期間（例えば１０分）内の動作状態を示す性能項目に関する情報が含まれる。性能項目には、ＣＰＵ利用状況に関する項目、スワップ動作に関する項目、ｉノードに関する項目、ＣＰＵ実行待ち行列状況に関する項目、メモリ／スワップ状況に関する項目、ページングに関する項目などがある。性能項目に関する各情報は、例えば単位期間内の、その性能項目に関する数値の時間遷移である。
【００５０】
ＣＰＵ利用状況に関する性能項目には、例えば、ＣＰＵがディスクＩ／Ｏの待機によりアイドル状態であった時間の割合、ＣＰＵがユーザモード状態であった時間の割合、ＣＰＵがシステムモード状態であった時間の割合などがある。スワップ動作に関する性能項目には、例えば、１秒当たりのスワップインしたページ数、１秒当たりのスワップアウトしたページ数などがある。ｉノードに関する性能項目には、例えば、ｉノードの使用数などがある。ＣＰＵ実行待ち行列状況に関する性能項目には、例えば実行待ちのプロセスキュー（待ち行列）の長さ（プロセス数）などがある。メモリ／スワップ状況に関する性能項目には、例えば、空きメモリサイズ、カーネルのバッファとして使用しているメモリサイズ、キャッシュとして使用されているメモリサイズ、メモリのスワップ領域として使用している記憶領域のサイズなどがある。ページングに関する性能項目としては、１秒当たりに発生したページフォルトの回数などがある。
【００５１】
動作情報は、システム３０内に複数の装置があるとき、各装置から取得される。例えばシステム３０内に複数のサーバがあれば、動作情報収集部１１０は、各サーバから、ＣＰＵがディスクＩ／Ｏの待機によりアイドル状態であった時間の割合などの性能項目を含む動作情報を取得する。
【００５２】
このような動作ログ１２１，１２２，・・・に基づいて、システム３０の動作状態が解析される。観測装置１００による動作状態の解析は、まず事前学習モードで実行される。そして事前学習モードによる学習結果生成後に、稼働診断モードが実行される。
【００５３】
まず事前学習モードにおける動作状態の解析処理について説明する。
図６は、事前学習モードでの動作状態解析処理を示す図である。まず、統計量生成部１３０が、動作ログ１２１，１２２，・・・に基づいて統計量生成処理を実行し、多次元統計量（ＳＤＲ）４１，４２，・・・を生成する。１つのＳＤＲは、特定の単位期間の動作ログに基づいて生成される。性能項目がＮ個（Ｎは２以上の整数）の場合、ＳＤＲは、Ｎ行Ｎ列の行列（相関行列）で表すことができる。行列内の各要素は、２つの性能項目間の相関関係の有無を表している。相関行列内の要素を、一列に並べ、ＳＤＲをベクトルで表すこともできる。生成された複数のＳＤＲ４１，４２，・・・は、それぞれ、対応する単位期間内でのシステム３０の動作状態を表している。
【００５４】
生成された複数のＳＤＲ４１，４２，・・・に基づいて、事前学習部１４０により、システム３０の動作状態の発生傾向や動作状態の変化傾向に関する事前学習が行われる。そして事前学習部１４０によって、学習結果１５１が生成され、学習結果記憶部１５０に格納される。学習結果１５１に基づいて、定常性判定部１７０で定常性の有無が判定され、可視化部１８０によって、学習結果１５１や定常性判定結果が可視化される。
【００５５】
以下、図６に示す各処理を詳細に説明する。
図７は、統計量生成処理の一例を示すフローチャートである。以下、図７に示す処理をステップ番号に沿って説明する。
【００５６】
［ステップＳ１０１］統計量生成部１３０は、観測期間（例えば１月）内の複数の単位期間（例えば１０分）のうち、未処理の単位期間を１つ選択する。
［ステップＳ１０２］統計量生成部１３０は、システム３０に含まれる各装置の単位期間内の動作を示す動作ログに基づいて、単位期間内でのシステム３０の各性能項目の時間変化を算出する。例えば統計量生成部１３０は、性能項目ごとに、システム３０内の複数の装置それぞれの動作ログに示される数値（時系列データ）の時刻ごとの平均を採り、平均値の時間変化とする。
【００５７】
［ステップＳ１０３］統計量生成部１３０は、複数の性能項目から、２つの性能項目を選択した組み合わせをすべて生成し、性能項目の組み合わせごとに、相関係数を算出する。性能項目数がＮの場合、性能項目の独立な組み合わせの数は、「｛Ｎ×（Ｎ−１）｝／２」個である。すなわち、「｛Ｎ×（Ｎ−１）｝／２」個の相関係数が生成される。
【００５８】
相関係数とは、２つの変数の類似性の度合いを示す統計的指標である。相関係数は、「−１」から「１」の間の実数値であり、「１」に近いほど正の相関があり、「−１」に近いほど負の相関がある。「０」に近い場合、相関が弱い。統計量生成部１３０は、性能項目の組み合わせごとに求めた各相関係数の絶対値を求め、絶対値が閾値以上の場合、相関を示す値（相関値）を「１」とし、絶対値が閾値未満であれば、相関値を「０」とする。すなわち、負の相関であっても、相関があれば相関値は「１」となる。このように、相関係数を「１」または「０」の相関値に置き換えることで、以後のクラスタリングなどの処理の計算量を減らすことができる。
【００５９】
［ステップＳ１０４］統計量生成部１３０は、性能項目の対ごとに得られた相関値を、行列の要素として配置することで、相関行列を生成する。性能項目数をＮとすると、相関行列はＮ行Ｎ列である。複数の性能項目それぞれが、相関行列の行と列とに対応付けられる。相関行列の各要素には、その要素の行に対応する性能項目と列に対応する性能項目との相関値が設定される。得られる相関行列は対称行列となる。
【００６０】
［ステップＳ１０５］統計量生成部１３０は、相関行列からＳＤＲを生成する。例えば統計量生成部１３０は、相関行列の各要素を一列に並べて、多次元ベクトルに変換する。「｛Ｎ×（Ｎ−１）｝／２」個の独立な相関値が存在するため、ＳＤＲを多次元ベクトルで表した場合、「｛Ｎ×（Ｎ−１）｝／２」次元のベクトルとなる。変換により得られた多次元ベクトルがＳＤＲとなる。
【００６１】
［ステップＳ１０６］統計量生成部１３０は、すべての単位期間について処理を行ったか否かを判断する。すべての単位期間についての処理が完了していれば、統計量生成処理が終了する。未処理の単位期間があれば、処理がステップＳ１０１に進められる。
【００６２】
このようにして、観測期間内の単位期間ごとのＳＤＲが得られる。
図８は、ＳＤＲの生成例を示す図である。Ｎ個の性能項目があるとき、２つずつの組み合わせごとの相関係数が算出され、相関行列５１が生成される。例えば、性能項目Ｍ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に対応するＳＤＲ間で比較し、各ＳＤＲが属するクラスタの発生確率を算出する。事前学習部１４０は、同様に時刻Ｔ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｝    ・・・（１０）
［ステップＳ２０８］オンライン識別部１６０は、新たに生成したクラスタに基づいて、発生確率情報と遷移確率行列とを拡張する。具体的にはオンライン識別部２０８は、発生確率情報１５１ａ（図１２参照）に対して、クラスタＩＤの欄を１つ増やす。またオンライン識別部１６０は、遷移確率行列１５１ｂ（図１２参照）に対して、遷移元クラスタＩＤの列を１つ追加し、遷移先クラスタＩＤの行を１つ追加する。
【０１０８】
［ステップＳ２０９］オンライン識別部１６０は、オンライン学習モードか否かを判断する。オンライン学習モードであれば、処理がステップＳ２１０に進められる。オンライン学習モードでなければ、処理が終了する。
【０１０９】
［ステップＳ２１０］オンライン識別部１６０は、発生確率情報１５１ａにおける時刻ごとの発生確率分布と遷移確率行列１５１ｂ内の要素の値とを更新する。その後、処理が終了する。
【０１１０】
このようなオンライン識別により、ＳＤＲが生成されるごとに、そのＳＤＲを含めたクラスタリングが可能となる。クラスタリング結果を即座に可視化すれば、システム３０の状態を、リアルタイムに観察できる。
【０１１１】
図１６は、可視化の例を示す図である。 図１６には、ＳＤＲを点で表した可視化画面７０が示されている。可視化画面７０には、ある月の（休日、祝日を除く）平日の午前中のＳＤＲの２次元分布が表示されている。図１６の例では、高次元データが次元縮約して表示されている。
【０１１２】
１つのＳＤＲは、１０分ごとに計算されている。各ＳＤＲは、可視化画面７０中に白丸７４で表示されている。
なお、この月の最終営業日の午前中のシステム異常が発生したことがわかっている。そして、システム異常が発生した日のＳＤＲは、可視化画面７０中に黒丸７５で表示されている。また可視化画面７０では、時間によるＳＤＲの遷移が矢印７６で表示されている。
【０１１３】
午前、システムが稼働し始めた直後は、ほとんどすべてのＳＤＲは、クラスタ７１に属している。その後、時間の経過につれて稼働負荷があがり、クラスタ７２の領域にＳＤＲが移動することがわかっている。なお図の煩雑さを避けるために、クラスタ７１からクラスタ７２への遷移を示す矢印は省略されている。クラスタ７２は通常の午前中の正常な状態を表わしている。
【０１１４】
ここで、システムに異常が発生した最終営業日のＳＤＲの現れ方と時間変化を見てみる。最初はクラスタ７１に属しているが、システムが異常状態になり始めたことをきっかけに、クラスタ７１に属する状態から徐々に逸脱して、新しいクラスタ７３に属する状態に移行している。その後、一時的に正常な稼働状態となりＳＤＲがクラスタ７２に遷移しているが、すぐにまた異常な状態となりＳＤＲがクラスタ７３に戻っている。
【０１１５】
図１６では、平日午前中の状態を表示したが、平日午後の状態、平日１日の状態、休日の状態など、様々な時間帯の状態を可視化画面７０に表示することもできる。またＳＤＲを表す点は、例えば１日の時間帯ごとに異なる色で表示することができる。ＳＤＲを表す点の色を、ウィークデイなのか休日なのかによって分けてもよい。
【０１１６】
このようにＳＤＲのクラスタリングを行い、時間帯ごとに、その時間帯においてＳＤＲの出現頻度が高いクラスタを可視化表示することで、管理者は、システム３０の通常の運用状態を容易に認識できる。通常の状態が把握できれば、異常な状態の検出も容易となる。
【０１１７】
例えば、稼働診断モードにおいて、休日にシステム３０の状態を示すＳＤＲを生成したとき、そのＳＤＲがクラスタ７２に属する場合、何らかの異常な状態になっている可能性がある。例えば、可視化部１８０は、最後に生成したＳＤＲを、可視化画面７０上で強調表示することで、現在のシステム３０の状態を管理者に分かりやすく表示することができる。そして管理者は、強調表示されたＳＤＲの位置が、現在の時間帯におけるＳＤＲの通常の位置から大きく外れていれば、異常が発生した可能性があることを認識できる 。
【０１１８】
ところで、第２の実施の形態において、ジャッカード係数を用いてＳＤＲ間の類似度を計算し、その類似度を用いてクラスタリングを行っている。このようなクラスタリング手法により、他のクラスタリグ手法に比べ、様々な利点がある。
【０１１９】
例えば、クラスタリング手法として、与えられたデータの集合に対して、距離尺度や類似度をもとに部分集合に自動的に分割する手法がある。大きく分けて、クラスタリングの手法は以下に分類される。
１）階層的クラスタリング：距離行列（コーフェン行列）を用いて、クラスタリング結果を樹形図で表示。
２）非階層的クラスタリング（k-means法など）：クラスタ数を指定して距離尺度や類似度が最小になるよう分類。
３）モデルに基づくクラスタリング（混合分布法など）：確率分布のモデルに基づく。
【０１２０】
１）および２）は初期値依存性（最初に選択する要素に結果が依存）が強い。もっともよく使われる２）非階層的クラスタリングの代表的な手法として、k-means法がある。k-means法では、各データに対してクラスタがランダムに割り振られ、割り振ったデータに基づいて各クラスタの中心Ｖjが計算される。そして各データについて、各クラスタの中心との距離が求められ、最も近いクラスタにデータが割り当て直される。データｘiとクラスタの中心との距離は、例えば距離の尺度は以下の式で表される。
||ｘi−Ｖj||2    ・・・（１１）
ほかには、ユークリッド距離（３次元空間の通常の距離を高次元に拡張）等を使って距離を計算することもできる。このようなクラスタリング手法には、以下の課題がある。
Ａ）最適なクラスタ分割を求めるためには、生成するクラスタ数を様々に変えて、結果を考察する必要がある。
Ｂ）アルゴリズムは固定だが、どの要素から処理し始めるかで、結果が変わってくる（初期値依存性を持つ）。
Ｃ）クラスタリング手法ごとに、固定の距離尺度または類似度が採用されるが、ｖ＝（１／０，１／０，・・・，１／０）のようなベクトルで類似性をジャッカード係数で測ると、同一クラスタ間の中でも類似性の低いものも散見される。
Ｄ）元々の集合に要素が追加されることを想定していない（静的な手法）。すなわち、新しい要素を加えて、再度クラスタリングするしか方法がない。そのときには、新しい要素を加える前のクラスタリング結果は保障されない。
【０１２１】
それに対して、第２の実施の形態では、以下のような利点がある。
Ａ）アルゴリズムに対する独立変数が類似度閾値で、クラスタ分割数は従属変数となる。つまり最適なクラスタ数は後から決定される。
Ｂ）静的類似度クラスタリングは、初期値依存性を持たない（もっとも類似度閾値を超える仲間を持つ要素からクラスタリングを開始するため）。
Ｃ）類似度閾値を与えているため、類似度の高いもの同士がクラスタリングされる。
Ｄ）動的類似度クラスタリングにより、静的類似度クラスタリングの結果の上に、新しい要素を分類し、もしふさわしいものがなければ、新クラスタを生成しそこに位置付けるため、既存クラスタを解体させることなく動的にクラスタリングできる。
【０１２２】
このように第２の実施の形態では、クラスタ数を与える代わりに、ジャッカード係数で類似度に対して基準（類似度閾値）を与えてクラスタを生成するため、生成されるクラスタ数に関する制約がない。その一方、同じクラスタに属するＳＤＲ間であれば、閾値以上の類似度を有することが保証される。
【０１２３】
しかも、静的類似度クラスタリングと動的類似度クラスタリングとで別の手法を採用しており、静的類似度クラスタリングによるクラスタリング結果に、動的類似度クラスタリングによってＳＤＲを追加していくことができる。これにより、システム３０の状態が異常か否かの判定を、リアルタイムに実施できる。
【０１２４】
なお、第２の実施の形態におけるＳＤＲ間の類似度の計算方法は、様々な方法が適用できる。適用可能な類似度の計算方法は、大別すると「１次元ビット列の類似度計算」、「ベクトルの類似度計算」、「ｎ次元ベクトル空間のノルムから派生する距離の計算」が考えられる。なお、以下の説明では、集合Ａに含まれる要素の個数を｜Ａ｜と表すものとする。
【０１２５】
＜１次元ビット列の類似度計算＞
＜＜１．ジャッカード係数（第２の実施の形態で採用）＞＞
ジャッカード係数は、集合ＸとＹの共通要素数（｜Ｘ∩Ｙ｜）を少なくとも１方にある要素の総数（｜Ｘ∪Ｙ｜）で割ったものである。ジャッカード係数を集合で表すと、以下の式で表される。
・ｓｉｍ＝｜Ｘ∩Ｙ｜／｜Ｘ∪Ｙ｜    ・・・（１２）
ジャッカード係数をベクトルの計算で求めることもできる。例えばＸ∪Ｙの要素をｚ1，ｚ2，・・・，ｚnとして、ベクトルｘ＝（ｘ1，ｘ2，・・・，ｘn）を、ｘi＝１（ｉｆ  ｚi∈Ｘ），ｘi＝０（otherwise）として定める。ベクトルｙも同様に定めると、ジャッカード係数は以下のように表すことができる。
・ｓｉｍ＝ｘ・ｙ／（Σｘi＋Σｙi−ｘ・ｙ）    ・・・（１３）
ここでｘ・ｙは、ベクトルｘとベクトルｙとの内積である。
＜＜２．ダイス係数＞＞
ダイス係数は、集合ＸとＹの共通要素数を各集合の要素数の平均で割ったものである。ダイス係数を集合で表すと，以下の式で表される。
・ｓｉｍ＝（２×｜Ｘ∩Ｙ｜）／（｜Ｘ｜＋｜Ｙ｜）    ・・・（１４）
ダイス係数をベクトルの計算で求める場合、以下の式で求められる。
・ｓｉｍ＝（２×ｘ・ｙ）／（Σｘi＋Σｙi）    ・・・（１５）
＜＜３．シンプソン係数＞＞
シンプソン係数は、集合ＸとＹの共通要素数を、各集合の要素数の最小値で割ったものである。シンプソン係数を、集合で表すと以下の式で表される。
・ｓｉｍ＝｜Ｘ∩Ｙ｜／ｍｉｎ（｜Ｘ｜，｜Ｙ｜）    ・・・（１６）
ｍｉｎ（｜Ｘ｜，｜Ｙ｜）は、括弧内の値のうちの小さい方の値を示す。シンプソン係数をベクトルの計算で求める場合、以下の式で求められる。
・ｓｉｍ＝ｘ・ｙ／ｍｉｎ（Σｘi，Σｙi）    ・・・（１７）
【０１２６】
＜ベクトルの類似度＞
＜＜コサイン類似度＞＞
コサイン類似度は、ベクトルｘ，ｙのなす角θの余弦cosθである。コサイン類似度は、ベクトルの向きの近さを類似性の指標としたものである。コサイン類似度は、以下の式で表される。
・ｓｉｍ＝ｘ・ｙ／（｜ｘ｜×｜ｙ｜）    ・・・（１８）
なお｜ｘ｜、｜ｙ｜は、ベクトルｘ、ｙの長さ（ノルム）である。
＜＜ピアソンの相関係数＞＞
ピアソンの相関係数は、２つの確率変数の相関関係である。ピアソンの相関係数も類似度の尺度として使うことができる。ｘとｙを２つの変数と考え、次元ごとの値の組（ｘi，ｙi）（ｉ＝１，２，・・・，ｎ）の相関係数として算出する。ピアソンの相関係数が「１」であれば、完全に一致していることを示す。ピアソンの相関係数が「０」であれば、無相関であることを示す。ピアソンの相関係数が「−１」であれば、完全に不一致であることを示す。
【０１２７】
例えばベクトルｘの次元要素ｘi（ｉ＝１，２，・・・，ｎ）の平均をｍxとし、ベクトルｖ＝ｘ−ｍｘ＝（ｘ1−ｍx，ｘ2−ｍx，・・・，ｘn−ｍx）とおく。同様にベクトルｙに対して、ベクトルｗ＝ｙ−ｍy＝（ｙ1−ｍy，ｙ2−ｍy，・・・，ｙn−ｍy）とおくと、ｓｉｍ＝ｖとｗのコサイン類似度＝ｖ・ｗ／（｜ｖ｜×｜ｗ｜）で表される。
＜＜偏差パターン類似度＞＞
ピアソンの相関係数では、各ベクトルの次元要素の値の平均からの偏差ベクトルを考えたが、偏差パターン類似度では、全ベクトルの平均ベクトルからの偏差ベクトルを使う。
【０１２８】
第ｉ次元要素ｘiの平均をｍiとし平均ベクトルをｍ＝（ｍ1，ｍ2，・・・，ｍn）とする。
ｘ，ｙの偏差ベクトルをｖ＝ｘ−ｍ＝（ｘ1−ｍ1，ｘ2−ｍ2，・・・，ｘn−ｍn），ｗ＝ｙ−ｍ＝（ｙ1−ｍ1，ｙ2−ｍ2，・・・，ｙn−ｍn）とする。そのとき偏差パターン類似度は、ｓｉｍ＝ｖとｗのコサイン類似度＝ｖ・ｗ／（｜ｖ｜×｜ｗ｜）で表される。
【０１２９】
＜ｎ次元ベクトル空間のノルムから派生する距離＞
これは、距離の近さで類似性を図るものである。ＳＤＲをｘ＝（ｘ1，ｘ2，・・・，ｘN）とする（Ｎ次元のベクトル空間）。このとき、「長さ」の概念の拡張である「ノルム」を以下のように定義する。
【０１３０】
「ノルム」は以下の定義を満たすものである。
１．｜｜ｖ｜｜＝０⇔ｖ＝０    ・・・（１９）
２．｜｜ａｖ｜｜＝｜ａ｜｜｜ｖ｜｜    ・・・（２０）
３．｜｜ｕ＋ｖ｜｜≦｜｜ｕ｜｜＋｜｜ｖ｜｜    ・・・（２１）
ノルムが定義できると、２点間の距離ｄ（ｘ，ｙ）＝｜｜ｘ−ｙ｜｜が定義できる。これらはノルムの定義から、距離の公理を満たすことが証明できる。つまり、ノルムの定義が異なれば、異なる距離（＝類似度）が定義できることになる。
【０１３１】
ノルムの例としては、以下のようなものがある。
ｐ次平均ノルム（ミンコフスキー・ノルムとも呼ぶ）
Ｌp＝（｜ｘ１−ｙ１｜p＋｜ｘ２−ｙ２｜p＋…＋｜ｘＮ−ｙＮ｜p）(1/p)   ・・（２２）
（ｐは正の定数）
・ｐ＝１のとき、このノルムから生成される距離はマンハッタン距離と呼ばれる。
・ｐ＝２のとき、このノルムから生成される距離はユークリッド距離と呼ばれる。
・ｐ＝∞のとき、このノルムは最大値ノルムと一致し、チェビシェフ距離と呼ばれる。最大値ノルムは、以下の式で表される。
Ｌmax＝ｍａｘ（｜ｘ1｜，｜ｘ2｜，・・・，｜ｘN｜）    ・・・（２３）
ｍａｘは引数の最大値を返す関数である。
【０１３２】
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の２以上の構成（特徴）を組み合わせたものであってもよい。
【符号の説明】
【０１３３】
１  システム
２ａ，２ｂ，・・・  相関情報
３ａ，３ｂ，３ｃ，３ｄ  クラスタ
１０  情報処理装置
１１  記憶部
１１ａ，１１ｂ，・・・  時系列データ
１２  演算部
【図１】
0006555061.tif 000002
【図２】
0006555061.tif 000003
【図３】
0006555061.tif 000004
【図４】
0006555061.tif 000005
【図５】
0006555061.tif 000006
【図６】
0006555061.tif 000007
【図７】
0006555061.tif 000008
【図８】
0006555061.tif 000009
【図９】
0006555061.tif 000010
【図１０】
0006555061.tif 000011
【図１１】
0006555061.tif 000012
【図１２】
0006555061.tif 000013
【図１３】
0006555061.tif 000014
【図１４】
0006555061.tif 000015
【図１５】
0006555061.tif 000016
【図１６】
0006555061.tif 000017