(57)【特許請求の範囲】
【請求項１】
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶媒体と、前記プロセッサに接続され、他の装置と接続するためのインタフェースとを備え、監視対象の計算機システムから継続して到来するストリームデータを処理するストリームデータ処理サーバであって、
前記ストリームデータは、タイムスタンプが付与された複数のデータを含み、
前記ストリームデータ処理サーバは、予め登録されたクエリにしたがって、スライディングウィンドウを用いて前記ストリームデータから対象となる処理範囲に含まれる前記データを切り出し、前記切り出されたデータに対して分析処理を実行するストリームデータ処理部を備え、
前記ストリームデータ処理部は、
前記切り出されたデータを用いて前記タイムスタンプと前記データの値との対応関係を示す近似式を算出する近似式算出部と、
前記算出された近似式を用いて前記データの予測値を算出し、前記算出された予測値に基づいて前記計算機システムの異常の発生を予測する異常検出部と、を備え、
前記近似式算出部は、
前記切り出されたデータのいずれかのタイムスタンプを時刻の原点に決定し、
前記切り出されたデータの前記タイムスタンプを、前記決定された時刻の原点からの相対的な時刻値に修正し、
修正された前記タイムスタンプと、前記データの値とを用いて前記近似式を算出することを特徴とするストリームデータ処理サーバ。
【請求項２】
前記近似式算出部は、最小二乗法を用いて前記近似式を算出し、
前記近似式算出部は、
前記切り出されたデータの入力を受け付ける入力部と、
前記入力部が受け付けたデータを格納するデータ格納部と、
前記切り出されたデータに基づいて前記近似式の係数を算出するために用いる統計値を算出する統計値算出部と、
前記算出された統計値を格納する統計値格納部と、
前記統計値を用いて前記近似式の係数を算出する係数算出部と、
を有し、
前記入力部が第１のデータの入力を受け付けた場合に、前記統計値算出部は、前記第１のデータが入力される前に入力された全ての前記データに基づいて算出された第１の統計値と前記第１のデータとを用いて、第２の統計値を算出することを特徴とする請求項１に記載のストリームデータ処理サーバ。
【請求項３】
前記入力部は、
前記第１のデータを受け付けた直後に、前記統計値算出部に前記第１のデータを出力し、
前記第１のデータを受け付けてから微小時間経過後に、前記データ格納部に前記第１のデータを出力し、
前記データ格納部は、前記第１のデータが入力される直前に入力された前記データを前記統計値算出部に出力した後に、前記第１のデータを格納し、
前記統計値算出部は、
前記第２の統計値を算出した直後に、前記算出された第２の統計値を前記係数算出部に出力し、
前記第２の統計値を算出してから微小時間経過後に、前記算出された第２の統計値を前記統計値格納部に出力し、
前記統計値格納部は、前記第１の統計値を前記統計値算出部に出力した後に、前記算出された第２の統計値を格納することを特徴とする請求項２に記載のストリームデータ処理サーバ。
【請求項４】
前記近似式算出部は、
前記タイムスタンプがｘｔ−ｎ＋１〜ｘｔまでのｎ個の前記データを用いて、前記データの値ｙと前記タイムスタンプｘとの間の関係を示す一次式ｙ＝ａｘ＋ｂを算出する場合に、最も現在の時刻に近い前記タイムスタンプｘｔを前記時刻の原点として決定し、
式（１）、式（２）、式（３）、及び式（４）に示す前記統計値を算出し、
式（５）及び式（６）を用いて前記一次式の係数ａ及びｂを算出することを特徴とする請求項３に記載のストリームデータ処理サーバ。
【数１】
0005634607.tif 000027
【数２】
0005634607.tif 000028
【数３】
0005634607.tif 000029
【数４】
0005634607.tif 000030
【数５】
0005634607.tif 000031
【数６】
0005634607.tif 000032
【請求項５】
前記統計値格納部が、前記タイムスタンプがｘｔ−１である前記第１の統計値を格納し、
前記入力部がタイムスタンプの値がｘｔである前記第１のデータの入力を受け付けた場合に、前記統計値算出部は、式（７）、式（８）、式（９）、式（１０）、式（１１）、及び式（１２）を用いて前記第２の統計値を算出することを特徴とする請求項４に記載のストリームデータ処理サーバ。
【数７】
0005634607.tif 000033
【数８】
0005634607.tif 000034
【数９】
0005634607.tif 000035
【数１０】
0005634607.tif 000036
【数１１】
0005634607.tif 000037
【数１２】
0005634607.tif 000038
【請求項６】
前記近似式算出部は、
前記処理範囲を変更した場合に、前記変更前の処理範囲に含まれるが、前記変更後の処理範囲に含まれない前記データである消滅データがあるか否かを判定し、
前記消滅データがないと判定された場合には、ｚｔが０である場合の式（７）、式（８）、及び式（９）を用いて前記第２の統計値を算出することを特徴とする請求項５に記載のストリームデータ処理サーバ。
【請求項７】
プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶媒体と、前記プロセッサに接続され、他の装置と接続するためのインタフェースとを備え、監視対象の計算機システムから継続して到来するストリームデータを処理する計算機が実行するストリームデータ処理プログラムを記録した記録媒体であって、
前記ストリームデータは、タイムスタンプが付与された複数のデータを含み、
前記メモリは、予め登録されたクエリの定義情報を格納し、
前記ストリームデータ処理プログラムは、
前記クエリの定義情報にしたがって、スライディングウィンドウを用いて前記ストリームデータから対象となる処理範囲に含まれる前記データを切り出す第１の手順と、
前記切り出されたデータを用いて前記タイムスタンプと前記データの値との対応関係を示す近似式を算出する第２の手順と、
前記算出された近似式を用いて前記データの予測値を算出し、前記算出された予測値に基づいて前記計算機システムの異常の発生を予測する第３の手順と、
を前記プロセッサに実行させ、
前記第２の手順は、
前記切り出されたデータのいずれかのタイムスタンプを時刻の原点に決定する手順と、
前記切り出されたデータの前記タイムスタンプを、前記決定された時刻の原点からの相対的な時刻値に修正する手順と、
修正された前記タイムスタンプと、前記データの値とを用いて前記近似式を算出する手順とを含むことを特徴とするストリームデータ処理プログラムを記録した記録媒体。
【請求項８】
前記ストリームデータ処理プログラムは、
最小二乗法を用いて前記近似式を算出される手順を前記プロセッサに実行させ、
前記データの入力を受け付ける入力手段と、
前記入力手段が受け付けたデータを格納するデータ格納手段と、
前記切り出されたデータに基づいて前記近似式の係数を算出するために用いる統計値を算出する統計値算出手段と、
前記算出された統計値を格納する統計値格納手段と、
前記統計値を用いて前記近似式の係数を算出する係数算出手段と、
を有し、
前記第２の手順は、前記入力手段によって第１のデータの入力を受け付けた場合に、前記第１のデータが入力を受け付ける前に入力された全ての前記データに基づいて算出された第１の統計値と前記第１のデータとを用いて、第２の統計値を算出する手順を前記統計値算出手段に実行させる手順を含むことを特徴とする請求項７に記載のストリームデータ処理プログラムを記録した記録媒体。
【請求項９】
前記第１のデータを受け付けた直後に、前記統計値格納手段に前記第１のデータを出力する手順と、前記第１のデータを受け付けてから微小時間経過後に、前記データ格納手段に前記第１のデータを出力する手順とを、前記入力手段に実行させ、
前記第１のデータが入力される直前に入力された前記データを前記統計値算出手段に出力した後に、前記第１のデータを格納する手順を前記データ格納手段に実行させ、
前記第２の統計値が算出された直後に、前記算出された第２の統計値を前記係数算出手段に出力する手順と、前記第２の統計値が算出されてから微小時間経過後に、前記算出された第２の統計値を前記統計値格納手段に出力させる手順とを、前記統計値算出手段に実行させ、
前記第１の統計値を前記統計値算出手段に出力する手順と、その後、前記算出された第２の統計値を格納する手順とを前記統計値格納手段に実行させることを特徴とする請求項８に記載のストリームデータ処理プログラムを記録した記録媒体。
【請求項１０】
前記第２の手順は、
前記タイムスタンプがｘｔ−ｎ＋１〜ｘｔまでのｎ個の前記データを用いて、前記データの値ｙと前記タイムスタンプｘとの間の関係を示す一次式ｙ＝ａｘ＋ｂを算出する場合に、最も現在の時刻に近い前記タイムスタンプｘｔを前記時刻の原点として決定する手順と、
式（１３）、式（１４）、式（１５）、及び式（１６）に示す前記統計値を算出する手順と、
式（１７）及び式（１８）を用いて前記一次式の係数ａ及びｂを算出する手順と、を含むを特徴とする請求項９に記載のストリームデータ処理プログラムを記録した記録媒体。
【数１３】
0005634607.tif 000039
【数１４】
0005634607.tif 000040
【数１５】
0005634607.tif 000041
【数１６】
0005634607.tif 000042
【数１７】
0005634607.tif 000043
【数１８】
0005634607.tif 000044
【請求項１１】
前記統計値格納手段によって前記タイムスタンプがｘｔ−１である前記第１の統計値が格納され、前記入力手段によってタイムスタンプの値がｘｔである前記第１のデータの入力が受け付けられた場合に、式（１９）、式（２０）、式（２１）、式（２２）、式（２３）、及び式（２４）を用いて前記第２の統計値を算出する手順を前記統計値算出手段に実行させることを特徴とする請求項１０に記載のストリームデータ処理プログラムを記録した記録媒体。
【数１９】
0005634607.tif 000045
【数２０】
0005634607.tif 000046
【数２１】
0005634607.tif 000047
【数２２】
0005634607.tif 000048
【数２３】
0005634607.tif 000049
【数２４】
0005634607.tif 000050
【請求項１２】
前記第２の手順は、
前記処理範囲を変更した場合に、前記変更前の処理範囲に含まれるが、前記変更後の処理範囲に含まれない前記データである消滅データがあるか否かを判定する手順と、
前記消滅データがないと判定された場合には、ｚｔが０である場合の式（１９）、式（２０）、及び式（２１）を用いて前記第２の統計値を算出する手順と、を含むことを特徴とする請求項１１に記載のストリームデータ処理プログラムを記録した記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
ストリームデータの分析処理に関する。特に、近似式を用いたストリームデータの分析処理に関する。
【背景技術】
【０００２】
近年、処理するデータ量が増大しており、リアルタイムにデータを集計し、また、分析することを可能とするストリームデータ処理システムが注目を集めている。ストリームデータ処理システムは、ストリームデータを処理対象とする。ここで、ストリームデータとは、途切れることなく到来する時系列順のデータ列である。【０００３】
ストリームデータ処理システムでは、予め定義されたクエリにしたがってデータ処理が実行される。クエリとは、処理の対象とするデータ及び処理内容を示すシナリオであり、ＣＱＬ（Ｃｏｎｔｉｎｕｏｕｓ  Ｑｕｅｒｙ  Ｌａｎｇｕａｇｅ）を用いて記載される。【０００４】
ストリームデータは、連続的に途切れることなく到来し続けるため、演算対象となるデータを抽出する必要がある。したがって、ストリームデータに対する分析処理では、ストリームデータから有限のデータ集合を切り出すためにスライディングウィンドウが用いられる。【０００５】
スライディングウィンドウには、大きく２種類ある。具体的には、処理の対象とする時刻の直前ｎ個分の時系列データを保持する個数ウィンドウと、処理の対象とする時刻の直前ｎ時間分の時系列データを保持する時間ウィンドウとの２種類である。【０００６】
スライディングウィンドウを利用することによって、例えば、個数ウィンドウを使用した場合、任意の時刻に対して、直前ｎ個分の入力情報をリアルタイムに近い時刻で集計及び分析することが可能となる。したがって、ストリームデータ処理システムは、現時刻における状態を分析し、将来のデータ変化を予測した対応が可能となる。【０００７】
ストリームデータ処理システムでは、ストリームデータを処理する計算機が、スライディングウィンドウを用いて時系列データを切り出し、切り出された時系列データに対して時刻と対象とする値（メトリクス）との間の関係を分析する。当該計算機は、分析結果として、時刻とメトリクスとの間の関係式（近似式）を算出する。これによって、将来の値の変化を予測することができる。【０００８】
時刻と対象とする値との間の関係式を算出する方法として、最小二乗法が知られている。例えば、ｎ個の時系列データを抽出する個数ウィンドウを用いて時刻ｘｉとメトリクスｙｉとの間の関係を一次式ｙ＝ａｘ＋ｂで近似する場合、係数ａ及びｂの値はそれぞれ式（１）及び式（２）を用いて算出できる。ただし、ｉは時系列データの順番を表す自然数である。
【数１】
0005634607.tif 000002
【数２】
0005634607.tif 000003
【０００９】
なお、式（１）及び式（２）は、式（３）に示す方程式の解である。
【数３】
0005634607.tif 000004
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２０１０−１０８１５２号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
ストリームデータ処理システムでは、時系列データを継続的に処理するため、長時間経過した場合、すなわち、時刻ｘの値が大きくなると式（１）及び式（２）の各項の値（各種の和、及びその積）が大きくなる。したがって、計算機における整数表現の桁あふれが発生する。また、桁あふれの発生を抑制するために浮動小数点数を利用したとしても桁落ちが発生する可能性がある。【００１２】
本発明は、時刻の値が大きい場合であっても、桁あふれを発生させず、かつ、計算コストを低くして近似式を算出可能なストリームデータ処理システムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本願において開示される発明の代表的な一例を示せば以下の通りである。すなわち、プロセッサと、前記プロセッサに接続されるメモリと、前記プロセッサに接続される記憶媒体と、前記プロセッサに接続され、他の装置と接続するためのインタフェースとを備え、監視対象の計算機システムから継続して到来するストリームデータを処理するストリームデータ処理サーバであって、前記ストリームデータは、タイムスタンプが付与された複数のデータを含み、前記ストリームデータ処理サーバは、予め登録されたクエリにしたがって、スライディングウィンドウを用いて前記ストリームデータから対象となる処理範囲に含まれる前記データを切り出し、前記切り出されたデータに対して分析処理を実行するストリームデータ処理部を備え、前記ストリームデータ処理部は、前記切り出されたデータを用いて前記タイムスタンプと前記データの値との対応関係を示す近似式を算出する近似式算出部と、前記算出された近似式を用いて前記データの予測値を算出し、前記算出された予測値に基づいて前記計算機システムの異常の発生を予測する異常検出部と、を備え、前記近似式算出部は、前記切り出されたデータのいずれかのタイムスタンプを時刻の原点に決定し、前記切り出されたデータの前記タイムスタンプを、前記決定された時刻の原点からの相対的な時刻値に修正し、修正された前記タイムスタンプと、前記データの値とを用いて前記近似式を算出することを特徴とする。
【発明の効果】
【００１４】
本発明の一形態によれば、時刻の原点の修正に伴って、スライディングウィンドウによって切り出されたデータのタイムスタンプを修正することによって、近似式を算出する際の桁あふれの発生を抑制することができる。
【図面の簡単な説明】
【００１５】
【図１】本発明の実施形態におけるストリームデータ処理システムの構成例を示すブロック図である。
【図２】従来の最小二乗法を用いた近似方法の一例を示す説明図である。
【図３】従来の最小二乗法を用いた近似方法の一例を示す説明図である。
【図４Ａ】本発明の実施形態における最小二乗法を用いた近似方法の一例を示す説明図である。
【図４Ｂ】本発明の実施形態における最小二乗法を用いた近似方法の一例を示す説明図である。
【図５】本発明の実施形態の近似式算出部の構成を示す説明図である。
【図６】本発明の実施形態における状態値更新部が実行する処理を説明するフローチャートである。
【図７】本発明の実施形態における近似式算出部の各構成部のデータの更新タイミングを示す説明図である。
【図８】本発明の実施形態における状態値更新部が実行する処理を説明するフローチャートである。
【図９】本発明の実施形態における近似式算出部の各構成部のデータの更新タイミングを示す説明図である。
【発明を実施するための形態】
【００１６】
図１は、本発明の実施形態におけるストリームデータ処理システムの構成例を示すブロック図である。
【００１７】
ストリームデータ処理システムは、ストリームデータ処理サーバ１００、監視対象システム、及び複数のホスト計算機１３０、１４０から構成される。
【００１８】
ストリームデータ処理サーバ１００は、ネットワーク１５０を介して監視対象システム１２０、及び複数のホスト計算機１３０、１４０と接続される。なお、ネットワーク１５０は、ＷＡＮ、ＬＡＮなどを用いることが考えられるが、本発明はネットワークの接続形式に限定されない。
【００１９】
ストリームデータ処理サーバ１００は、監視対象システム１２０から送信されるストリームデータを受信し、また、指示されたクエリに従ってストリームデータを処理する。ストリームデータは、時系列順の複数のデータ１２２を含む。
【００２０】
ストリームデータ処理サーバ１００は、プロセッサ１０１、メモリ１０２、ネットワークインタフェース１０４、及びストレージ１０５を備え、各構成はバス１０３を介して接続される。
【００２１】
プロセッサ１０１は、メモリ１０２に格納されるプログラムを実行することによって各種処理を実行する。
【００２２】
メモリ１０２は、プロセッサ１０１が実行するプログラム及び当該プログラムを実行するために必要な情報を格納する。具体的には、メモリ１０２は、ストリームデータ処理部１１０を備える。
【００２３】
ストリームデータ処理部１１０は、ストリームデータを処理する。ストリームデータ処理部１１０は、処理の開始時に、ストレージ１０５に格納されるクエリグループの定義を読み出し、読み出されたクエリグループの定義に基づいてクエリグラフを構成する。ストリームデータ処理部１１０は、クエリグラフに従って処理を実行する。
【００２４】
ストリームデータ処理部１１０は、近似式算出部１１２及び異常検出部１１３を含む。
【００２５】
近似式算出部１１２は、スライディングウィンドウによって切り出された複数のデータ１２２に対して分析処理を実行して、近似式を算出する。以下、スライディングウィンドウによって切り出されたデータを対象データとも記載する。また、以下では、スライディングウィンドウをウィンドウと記載する。
【００２６】
異常検出部１１３は、算出された近似式を用いて監視対象システム１２０の異常の発生を検出し、また、異常発生を予測する。例えば、異常検出部１１３は、近似式を用いてメトリクスの予測値を算出し、当該予測値が所定の閾値以上か否かを判定する。
【００２７】
以下、近似式算出部１１２及び異常検出部１１３を主語にして処理を説明する場合、プロセッサ１０１によって、各構成部を実現するためのプログラムが実行されていることを表す。
【００２８】
なお、近似式算出部１１２及び異常検出部１１３が備える機能は、ハードウェアを用いて実現されてもよい。
【００２９】
ネットワークインタフェース１０４は、ネットワーク１５０と接続するためのインタフェースである。
【００３０】
ストレージ１０５は、ストリームデータ（データ１２２）、クエリ１３２、及びその他の情報を格納する。ストレージ１０５は、例えば、ＨＤＤ及びＳＳＤ等の記憶媒体が考えられる。なお、本発明は記憶媒体の種類に限定されない。
【００３１】
監視対象システム１２０は、複数の計算機（図示省略）から構成される計算機システムである。監視対象システム１２０を構成する計算機（図示省略）上では、監視対象となるデータ（メトリクス）を監視するためのシステムモニタ１２１が実行される。
【００３２】
システムモニタ１２１は、監視対象システム１２０を構成する計算機（図示省略）から必要なデータを収集し、収集されたデータからデータ１２２を生成する。また、システムモニタ１２１は、生成されたデータ１２２をストリームデータ処理サーバ１００に送信する。
【００３３】
ホスト計算機１３０、１４０は、ストリームデータ処理サーバ１００を利用するユーザが利用する計算機であり、プロセッサ（図示省略）、メモリ（図示省略）、及びネットワークインタフェース（図示省略）を備える。
【００３４】
ホスト計算機１３０上では、異常監視クエリ操作インタフェース１３１を実現するためのプログラムが実行される。異常監視クエリ操作インタフェース１３１は、異常監視クエリ１３２を登録し、また、当該異常監視クエリ１３２の実行を命令するためのインタフェースである。
【００３５】
なお、ストリームデータ処理サーバ１００は、異常監視クエリ１３２が入力されると、異常監視クエリ１３２を分析して、ストリームデータ処理を実行するためのクエリグラフを構成する。ストリームデータ処理サーバ１００は、クエリグラフにしたがって、ストリームデータを処理する。
【００３６】
ホスト計算機１４０上では、異常監視プロセス１４１が実行される。異常監視プロセス１４１は、ストリームデータ処理サーバ１００から送信された結果１４２に基づいて、ユーザに処理結果を表示し、エラー等を通知するためのプロセスである。
【００３７】
なお、一つの計算機が、異常監視クエリ操作インタフェース１３１を提供し、また、異常監視プロセス１４１を実行してもよい。
【００３８】
まず、従来の最小二乗法を用いた近似方法について説明する。
【００３９】
図２及び図３は、従来の最小二乗法を用いた近似方法の一例を示す説明図である。ここでは、一次式の近似方法について説明する。
【００４０】
図２及び図３では、横軸ｘが時刻を表し、縦軸ｙがメトリクスを表す。メトリクスは、例えば、モニタリングの対象となるプロセッサの使用率、及びネットワーク帯域の使用率などが考えられる。なお、時刻はデータに付与されたタイムスタンプを意味する。
【００４１】
図２において、個数ウィンドウ２００によって切り出された７個の対象データに対して最小二乗法を適用した場合、直線２０１のような一次式が近似式として算出される。また、図３において、個数ウィンドウ３００によって切り出された７個の対象データに対して最小二乗法を適用した場合、直線３０１のような一次式が近似式として算出される。
【００４２】
ここで、係数ａ及びｂは、式（１）及び式（２）を用いて算出することができる。式（１）及び式（２）から分かるように係数ａ及びｂを算出するためには、式（４）〜式（７）の値を求めればよい。
【数４】
0005634607.tif 000005
【数５】
0005634607.tif 000006
【数６】
0005634607.tif 000007
【数７】
0005634607.tif 000008
以下、式（４）〜式（７）に示す値を区別しない場合には値Ｓ（ｔ）と記載する。
【００４３】
しかし、前述の算出方法には、以下のような問題点がある。
【００４４】
第１の問題点は、図３に示すように時刻の絶対値Ｘが時刻差ｗより十分大きい場合（ｗ＜＜Ｘ）、ウィンドウ内のデータ間の時刻値の違いが、相対的に意味をなさない値となる。したがって、係数ａ及びｂの値が正しく算出できない。
【００４５】
これは、時刻ｘの値が大きくなることによって、式（４）〜（７）の値の桁数が大きくなり桁あふれが発生することに該当する。
【００４６】
そこで、本発明では、ウィンドウの移動に合わせて時刻の原点を移動させる。具体的には、近似式算出部１１２は、まず、切り出されたデータ１２２のいずれかのデータ１２２のタイムスタンプを原点として決定する。次に、近似式算出部１１２は、切り出されたデータ１２２のタイムスタンプを修正された原点からの相対時間に修正する。前述したタイムスタンプの修正処理に伴って、式（４）〜式（７）も変更される。
【００４７】
例えば、任意のデータのタイムスタンプｘｔが時刻の原点として決定された場合、式（４）〜式（７）は、式（８）〜式（１１）に示すように変形される。すなわち、相対的な時刻を用いることによって、第１の問題点を解消することができる。
【数８】
0005634607.tif 000009
【数９】
0005634607.tif 000010
【数１０】
0005634607.tif 000011
【数１１】
0005634607.tif 000012
また、式（８）〜式（１１）を用いると式（１）及び式（２）は、式（１２）及び式（１３）のように表すことができる。
【数１２】
0005634607.tif 000013
【数１３】
0005634607.tif 000014
【００４８】
図４Ａ及び図４Ｂは、本発明の実施形態における最小二乗法を用いた近似方法の一例を示す説明図である。
【００４９】
近似式算出部１１２は、ウィンドウ４１０内の最新のデータ４１３のタイムスタンプを原点とする。
【００５０】
図４Ａ及び図４Ｂに示す例では、ウィンドウ４１０を移動させる前の時刻の原点Ｏｍは、データ４１３のタイムスタンプＸｔ−１である。ウィンドウ４１０の移動に伴って時刻の原点Ｏｍがデータ４２３のタイムスタンプＸｔに移動される。このとき、ウィンドウの移動に伴ってデータ４２４が消去される。
【００５１】
なお、本発明の原点の決定方法は前述したものに限定されず、ウィンドウ４１０内に含まれるいずれかのタイムスタンプを原点とすればよい。
【００５２】
このとき、式（４）〜（７）は、式（８）〜（１１）に示すような式となる。これによって、時刻の絶対値の増大による式（４）〜（７）の桁あふれを回避することができる。したがって、第１の問題点は、時刻の原点を移動させることによって解決できる。
【００５３】
しかし、ウィンドウのサイズが大きくなるにしたがって、式（８）〜式（１１）の計算コストが増大するという第２の問題点が存在する。
【００５４】
そこで、本発明では、ウィンドウを移動させる前に算出された値Ｓ（ｔ）から、次に算出する値Ｓ（ｔ）を求めるインクリメンタルな算出方法を用いる。具体的には、式（８）〜式（１１）を式（１４）〜式（１７）に示すように変形する。
【数１４】
0005634607.tif 000015
【数１５】
0005634607.tif 000016
【数１６】
0005634607.tif 000017
【数１７】
0005634607.tif 000018
ここで、ｄｔ及びｚｔは時刻差を表す値であり、式（１８）及び式（１９）のように定義される。
【数１８】
0005634607.tif 000019
【数１９】
0005634607.tif 000020
【００５５】
なお、ウィンドウを移動させたときに、古いデータが消去されない場合には式（１９）のｚｔは「０」となる。
【００５６】
本実施形態では値Ｓ（ｔ）を状態値として扱う。これによって、値Ｓ（ｔ）を算出するために式（８）〜式（１１）に示すようなＳＵＭ計算を実行する必要がなくなり、第２の問題点を解決することができる。
【００５７】
インクリメンタルな算出方法を実現する場合に、更新した値Ｓ（ｔ）を再度入力として扱わなければならないという第３の問題点が発生する。すなわち、更新値を新たな入力として次の更新値を算出する再帰的な演算処理が必要となる。しかし、再帰的な演算をするためには単純なループ処理では、入力と出力とが同時に発生し、算出処理が収束しないため、再帰的な演算処理を実現することが困難となる。
【００５８】
そこで、本発明ではデータの入力処理とデータの更新処理との間に時間差を発生させる。本発明では、データの入力処理とデータの出力処理との間に時間差を発生させるために、近似式算出部１１２の各モジュールを構成している点に特徴がある。
【００５９】
図５は、本発明の実施形態の近似式算出部１１２の構成を示す説明図である。
【００６０】
近似式算出部１１２は、データ入力部５０１、初期状態生成部５０２、状態値格納部５０３、ウィンドウデータ格納部５０４、データ格納部５０５、状態値更新部５０６、係数算出部５０７、及びデータ出力部５０８を備える。
【００６１】
データ入力部５０１は、対象データの入力を受け付ける。なお、対象データは、タイムスタンプ及びメトリクスの形式で入力される。すなわち、（ｘ，ｙ）の形式の対象データが入力される。
【００６２】
また、本発明ではインクリメンタルな処理が実行されるため、データ入力部５０１には対象データが時系列順に一つずつ入力される。
【００６３】
初期状態生成部５０２は、近似式算出部１１２に初めて対象データが入力された場合に、状態値の初期値Ｓ（０）を生成し、生成された初期値Ｓ（０）を出力する。具体的には、式（８）〜式（１１）の各初期値は「０」となる。
【００６４】
状態値格納部５０３は、状態値Ｓ（ｔ）を格納する。なお、対象データが初めて入力された場合には、状態値格納部５０３は初期値Ｓ（０）を格納する。
【００６５】
ウィンドウデータ格納部５０４は、ウィンドウによって切り出された対象データを格納する。また、ウィンドウデータ格納部５０４は、ウィンドウの移動に伴ってデータ更新処理を実行する。具体的には、以下のような処理が実行される。
【００６６】
ウィンドウデータ格納部５０４は、ウィンドウの移動に伴って、当該ウィンドウから消去されるデータが存在するか否かを判定する。すなわち、ウィンドウの移動に伴って、当該ウィンドウ内に含まれなくなった対象データが存在するか否かが判定される。
【００６７】
当該ウィンドウから消去されるデータが存在する場合、ウィンドウデータ格納部５０４は、当該データを状態値更新部５０６に出力する。以下、ウィンドウの移動に伴って消去されるデータを消滅データとも記載する。
【００６８】
個数ウィンドウの場合、対象データの入力と消滅データの入力とは同一のタイミングになる。一方、時間ウィンドウの場合、対象データの入力と消滅データの入力とは異なるタイミングとなる。したがって、ウィンドウデータ格納部５０４の処理は、個数ウィンドウと時間ウィンドウとでは異なる。具体的な処理については、図６及び図８を用いて後述する。
【００６９】
データ格納部５０５は、状態値Ｓ（ｔ）を算出するために用いる対象データを格納する。データ格納部５０５には、データ入力部５０１が受け付けた対象データより時系列が一つ前の対象データが格納される。例えば、データ入力部５０１が、対象データ（ｘ６，ｙ６）を受け付けた場合、データ格納部５０５は、対象データ（ｘ５，ｙ５）が格納される。
【００７０】
状態値更新部５０６は、各構成部から値が入力されると、式（１４）〜（１７）を用いて状態値Ｓ（ｔ）を算出する。
【００７１】
なお、個数ウィンドウと時間ウィンドウとで更新処理が異なる。これは、対象データの入力タイミングと消滅データの入力タイミングとが異なることに起因する。状態値更新部５０６が実行する処理の詳細については、図６及び図８を用いて後述する。
【００７２】
係数算出部５０７は、状態値更新部５０６によって算出された状態値Ｓ（ｔ）が入力されると、当該状態値Ｓ（ｔ）を式（１２）及び式（１３）に代入し、係数ａ及びｂを算出する。
【００７３】
データ出力部５０８は、算出された係数ａ及びｂに基づいて近似式を生成し、生成された近似式を異常検出部１１３に出力する。
【００７４】
なお、状態値格納部５０３、ウィンドウデータ格納部５０４、及びデータ格納部５０５は、メモリ１０２の記憶領域にデータを格納する機能を有する。
【００７５】
以下、近似式算出部１１２のデータの流れについて説明する。
【００７６】
データ入力部５０１は、対象データが入力されると、当該対象データを、初期状態生成部５０２、ウィンドウデータ格納部５０４、データ格納部５０５及び状態値更新部５０６に出力する。
【００７７】
このとき、データ入力部５０１は、微小時間の遅延を発生させてデータ格納部５０５にデータを出力する。
【００７８】
初期状態生成部５０２は、初めて対象データが入力される場合、初期の状態値Ｓ（０）を生成し、生成された初期の状態値Ｓ（０）を状態値格納部５０３に出力する。
【００７９】
データ格納部５０５は、現在格納されている対象データを状態値更新部５０６に出力し、微小時間経過後に新たな対象データを格納する。これによって、入力された対象データに対する処理を実行する時に、一つ前の時系列の対象データを保持することができる。
【００８０】
状態値格納部５０３は、現在格納されている状態値Ｓ（ｔ）を状態値更新部５０６に出力する。
【００８１】
状態値更新部５０６は、データ入力部５０１、状態値格納部５０３、ウィンドウデータ格納部５０４、及びデータ格納部５０５から入力された値を式（１４）〜（１７）に代入し、ウィンドウが移動した後の状態値Ｓ（ｔ＋１）を算出する。さらに、状態値更新部５０６は、算出された状態値Ｓ（ｔ＋１）を、状態値格納部５０３及び係数算出部５０７に出力する。
【００８２】
このとき、状態値更新部５０６は、微小時間の遅延を発生させて状態値格納部５０３に更新値Ｓ（ｔ＋１）を出力する。すなわち。微小時間経過後に、状態値格納部５０３の状態値Ｓ（ｔ＋１）が更新される。
【００８３】
これは、遅延を発生させずに状態値格納部５０３に更新値Ｓ（ｔ＋１）が入力されると、更新値Ｓ（ｔ＋１）を入力として新たな更新値Ｓ（ｔ＋１）が算出されるため、演算処理が収束しないという問題が発生するためである。
【００８４】
そこで、本発明では、微小時間の遅延を発生させることによって、入力と出力との整合性を保つようにしている。
【００８５】
以上のように、状態値格納部５０３及びデータ格納部５０５へのデータ入力時に微小時間の遅延を設けることによって再帰的な処理を実現することが可能となる。
【００８６】
なお、近似式算出部１１２のデータフローを実現するためには、特許文献１に記載された再帰クエリによって実現することができる。
【００８７】
なお、微小時間はタイムスタンプの時刻精度より短い時間であればよく、例えば、タイムスタンプの時刻精度が１ミリ秒である場合、１マイクロ秒又は１ナノ秒程度の遅延を発生させればよい。
【００８８】
次に、各構成部の処理の流れについて説明する。なお、個数ウィンドウと時間ウィンドウとでは処理の手順が異なるため、それぞれのウィンドウ毎に説明する。まず、個数ウィンドウについて説明する。
【００８９】
個数ウィンドウの場合、対象データの入力タイミングと消滅データの発生タイミングとが同一である。ただし、個数ウィンドウによって切り出される対象データの数が、当該個数ウィンドウに設定されたデータ数以下の場合、消滅データは発生しない。
【００９０】
したがって、状態値更新部５０６は、消滅データが入力される場合と、消滅データが入力されない場合とに分けて算出式を変更する必要がある。
【００９１】
図６は、本発明の実施形態における状態値更新部５０６が実行する処理を説明するフローチャートである。
【００９２】
まず、状態値更新部５０６は、データ入力部５０１から対象データが入力されると時間差ｄｔを算出する（ステップＳ６０１）。
【００９３】
次に、状態値更新部５０６は、消滅データがあるか否かを判定する（ステップＳ６０２）。
【００９４】
具体的には、状態値更新部５０６は、ウィンドウデータ格納部５０４から消滅データが入力されたか否かを判定する。消滅データが入力された場合には、消滅データがあると判定される。
【００９５】
消滅データが発生したと判定された場合、状態値更新部５０６は、時刻差ｚｔを算出する（ステップＳ６０３）。
【００９６】
消滅データがないと判定された場合、状態値更新部５０６は、時刻差ｚｔを「０」に設定する（ステップＳ６０５）。
【００９７】
状態値更新部５０６は、各部から入力された値を式（１４）〜式（１７）に代入して、各状態値を算出し（ステップＳ６０４）、処理を終了する。
【００９８】
次に、近似式算出部１１２におけるデータの更新タイミングについて説明する。
【００９９】
図７は、本発明の実施形態における近似式算出部１１２の各構成部のデータの更新タイミングを示す説明図である。
【０１００】
図７では、７個のデータを切り出す個数ウィンドウの場合を例に説明する。
【０１０１】
データ入力部５０１が対象データ（ｘ６，ｙ６）の入力を受け付ける。
【０１０２】
このとき、データ格納部５０５には、時系列が一つ前の対象データ（ｘ５，ｙ５）が格納されている。データ格納部５０５は、対象データ（ｘ５，ｙ５）を状態値更新部５０６に出力し、対象データ（ｘ６，ｙ６）が入力されてから微小時間経過後に対象データ（ｘ５，ｙ５）から対象データ（ｘ６，ｙ６）に更新する。
【０１０３】
状態値更新部５０６は、対象データ（ｘ６，ｙ６）が入力されると、対象データ（ｘ５，ｙ５）、状態値Ｓ（５）及び対象データ（ｘ６，ｙ６）を用いて状態値Ｓ（６）を算出する。また、状態値更新部５０６は、状態値Ｓ（６）を状態値格納部５０３に出力する。
【０１０４】
状態値格納部５０３は、対象データ（ｘ６，ｙ６）が入力された時点では時系列が一つ前の状態値Ｓ（５）を格納している。状態値格納部５０３は、状態値更新部５０６から状態値Ｓ（６）が入力されると微小時間経過後に、状態値Ｓ（６）に更新する。
【０１０５】
他の対象データが入力された場合も同様に更新処理が実行される。
【０１０６】
ウィンドウデータ格納部５０４は、消滅データを状態値更新部５０６に出力する。図７に示す例では、７個のデータを切り出す個数ウィンドウを用いているため、データ（ｘ８，ｙ８）が入力されたときに初めて、その７個前に入力されていたデータの消滅を表す、消滅データ（ｘ１，ｙ１）が発生する。したがって、状態値更新部５０６は、データ（ｘ８，ｙ８）が入力されるまでは、時刻差ｚｔが「０」の数式を用いて状態値Ｓ（ｔ）を算出する。
【０１０７】
次に、時間ウィンドウについて説明する。
【０１０８】
時間ウィンドウの場合、対象データの入力タイミングと消滅データの入力タイミングとが異なる。したがって、状態値更新部５０６は入力されたデータの種類によって更新処理に用いる算出式を変更する必要がある。
【０１０９】
図８は、本発明の実施形態における状態値更新部５０６が実行する処理を説明するフローチャートである。
【０１１０】
状態値更新部５０６は、入力されたデータが消滅データであるか否かを判定する（ステップＳ８０１）。当該判定処理は、ステップＳ６０２と同一であるため説明を省略する。
【０１１１】
入力されたデータが消滅データであると判定された場合、状態値更新部５０６は、時刻差ｚｔを算出し（ステップＳ８０２）、さらに、時刻差ｄｔを「０」に設定する（ステップＳ８０３）。
【０１１２】
これは、新たな対象データが入力されていないため時刻の原点を移動させる必要がないためである。
【０１１３】
状態値更新部５０６は、各値を式（１４）〜（１７）に代入して、状態値Ｓ（ｔ）を算出し（ステップＳ８０４）、処理を終了する。
【０１１４】
入力されたデータが消滅データでないと判定された場合、すなわち、入力されたデータが対象データである場合、状態値更新部５０６は、時刻差ｄｔを算出し（ステップＳ８０５）、さらに、時刻差ｚｔを「０」に設定する（ステップＳ８０６）。
【０１１５】
状態値更新部５０６は、各値を式（１４）〜（１７）に代入して、状態値Ｓ（ｔ）を算出し（ステップＳ８０４）、処理を終了する。
【０１１６】
次に、近似式算出部１１２におけるデータの更新タイミングについて説明する。
【０１１７】
図９は、本発明の実施形態における近似式算出部１１２の各構成部のデータの更新タイミングを示す説明図である。
【０１１８】
ここでは、時間ウィンドウのサイズが「Ｔ」である場合を例に説明する。
【０１１９】
時間ウィンドウでは、対象データの入力タイミングと消滅データの入力タイミングとが異なる。ただし、データ入力部５０１、状態値格納部５０３、及びデータ格納部５０５の更新方法は、個数ウィンドウの場合と同一であるため説明を省略する。
【０１２０】
図９に示す例では、対象データ（ｘ５，ｙ５）が入力された時点では、消滅データは発生しない。このとき、状態値更新部５０６は、ステップＳ８０５、ステップＳ８０６及びステップＳ８０４の処理を実行して状態値Ｓ（６）を算出する。
【０１２１】
また、時刻ｘ７＝ｘ１＋Ｔの時、すなわちデータ（ｘ１，ｙ１）が入力されてからウィンドウサイズの時間Ｔが経過したときに消滅データ（ｘ１，ｙ１）が発生し、当該消滅データ（ｘ１，ｙ１）が状態値更新部５０６に入力される。このとき、状態値更新部５０６は、ステップＳ８０２、ステップＳ８０３及びステップＳ８０４の処理を実行して状態値Ｓ（７）を算出する。
【０１２２】
［変形例］
【０１２３】
本発明は、一次の近似式に限定されず、高次の多項式に近似する場合にも適用することができる。
【０１２４】
例えば、２次の近似式ｙ＝ａｘ２＋ｂｘ＋ｃの場合には、式（２０）に示す連立方程式を解くことによって係数ａ、ｂ及びｃを求めることができる。
【数２０】
0005634607.tif 000021
【０１２５】
一般的に、ｍ次の近似式は、ｘのべき乗の和、及び、ｘのべき乗とｙとの積の和を係数とする連立方程式の解を求めればよい。ここで、時刻ｘｔにおける時刻ｘのｍ乗の和である状態値Ｓｘｍ（ｔ）を式（２１）のように表す。このとき、時刻ｘｔ−１におけるｘのｍ乗の和である状態値Ｓｘｍ（ｔ−１）は式（２２）のように表される。
【数２１】
0005634607.tif 000022
【数２２】
0005634607.tif 000023
【０１２６】
ここで、式（２１）を式（２３）に示すように変形すると１次の近似式と同様に一つ前の状態値Ｓｘｍ（ｔ−１）からインクリメンタルな演算によって状態値Ｓｘｍ（ｔ）が算出することが分かる。
【数２３】
0005634607.tif 000024
【０１２７】
同様に、ｘのべき乗とｙとの積の和は、式（２４）及び式（２５）に示すような式を用いて近似式を算出することが可能となる。すなわち、近似式算出部１１２は、図５に示すような構成によって再帰的かつインクリメンタルな算出方法を用いてｍ次の多項式の係数を算出できる。
【数２４】
0005634607.tif 000025
【数２５】
0005634607.tif 000026
【０１２８】
但し、ｍ≧１とする。また、Ｓｘ１（ｔ）＝Ｓｘ（ｔ）、Ｓｙｘ１（ｔ）＝Ｓｙｘ（ｔ）、Ｓｘ０（ｔ）＝ｎ、及びＳｙｘ０（ｔ）＝Ｓｙ（ｔ）とする。
【０１２９】
本発明の一形態によれば、ウィンドウの移動に伴って時刻の原点を移動させることによって、桁あふれの発生を抑制することができる。また、対象データ及び状態値の更新において微小時間の遅延を発生させることによって再帰的かつインクリメンタルな演算処理を実現できる。これによって、近似式算出部１１２は、計算コストを低減して近似式の算出が可能となる。
【０１３０】
以上、本発明の実施形態について説明したが、これらは本発明を説明するための例示であり、本発明の適応範囲を例示した形態のみに限定するものではない。また、前述した実施形態のいかなる組み合わせも本発明の実施形態となりうる。
【図１】
0005634607.tif 000051
【図２】
0005634607.tif 000052
【図３】
0005634607.tif 000053
【図４Ａ】
0005634607.tif 000054
【図４Ｂ】
0005634607.tif 000055
【図５】
0005634607.tif 000056
【図６】
0005634607.tif 000057
【図７】
0005634607.tif 000058
【図８】
0005634607.tif 000059
【図９】
0005634607.tif 000060