(57)【特許請求の範囲】
【請求項１】
時間の経過に従って順次得られた値の列である時系列データを入力として、前記時系列データから切り出される部分列データであって、始点の値よりも終点の値が高い又は低い部分列データを拡張レグとして抽出するレグ抽出部と、
前記レグ抽出部が抽出した拡張レグから、始点と終点との間の各時点の値が、始点の値以上、かつ、終点の値以下である部分列データである拡張上昇レグと、始点と終点との間の各時点の値が、始点の値以下、かつ、終点の値以上である部分列データである拡張下降レグとが基準パターンの順に現れる拡張レグの組を特定する出現パターン特定部と
を備えることを特徴とする時系列データ処理装置。
【請求項２】
前記出現パターン特定部は、始点の値よりも終点の値が上昇閾値以上に高い拡張上昇レグと、始点の値よりも終点の値が下降閾値以上に低い拡張下降レグとが交互に出現する拡張レグの組を特定する
ことを特徴とする請求項１に記載の時系列データ処理装置。
【請求項３】
前記出現パターン特定部は、拡張上昇レグ及び拡張下降レグを最も多く含む拡張レグの組を特定する
ことを特徴とする請求項２に記載の時系列データ処理装置。
【請求項４】
前記出現パターン特定部は、始点の値よりも終点の値が上昇閾値以上に高い拡張上昇レグのうち終点の最も早い拡張上昇レグと、始点の値よりも終点の値が下降閾値以上に低い拡張下降レグのうち終点の最も早い拡張下降レグとを交互に特定することにより、拡張上昇レグ及び拡張下降レグを最も多く含む拡張レグの組を特定する
ことを特徴とする請求項３に記載の時系列データ処理装置。
【請求項５】
前記レグ抽出部は、拡張レグの終点の値よりも終点の次の時点の値が小さく、かつ、拡張レグの始点の前の時点の値よりも始点の値が小さい拡張上昇レグと、拡張レグの終点の値よりも終点の次の時点の値が大きく、かつ、拡張レグの始点の前の時点の値よりも始点の値が大きい拡張下降レグとのみを抽出する
ことを特徴とする請求項４に記載の時系列データ処理装置。
【請求項６】
前記拡張上昇レグは、始点と終点との間の各時点の値が、始点の値以上、かつ、始点からその時点までの最大値から第１基準値を引いた値より大きい部分列データであり、
前記拡張下降レグは、始点と終点との間の各時点の値が、始点の値以下、かつ、始点からその時点までの最小値に第２基準値を加えた値より小さい部分列データである
ことを特徴とする請求項１から５までのいずれかに記載の時系列データ処理装置。
【請求項７】
前記拡張上昇レグは、始点と終点との間の各時点の値が、始点の値以上、かつ、始点からその時点までの最小値に第１基準値を加えた値より大きい部分列データであり、
前記拡張下降レグは、始点と終点との間の各時点の値が、始点の値以下、かつ、始点からその時点までの最大値から第２基準値を引いた値より小さい部分列データである
ことを特徴とする請求項１から５までのいずれかに記載の時系列データ処理装置。
【請求項８】
前記時系列データ処理装置は、さらに、
新たな時点における値が入力されると、基準期間前の時点から前記新たな時点までの値の列を前記時系列データとして生成する期間データ生成部
を備えることを特徴とする請求項１から７のいずれかに記載の時系列データ処理装置。
【請求項９】
時間の経過に従って順次得られた値の列である時系列データを入力として、前記時系列データから切り出される部分列データであって、始点の値よりも終点の値が高い又は低い部分列データを拡張レグとして抽出するレグ抽出処理と、
前記レグ抽出処理で抽出した拡張レグから、始点と終点との間の各時点の値が、始点の値以上、かつ、終点の値以下である部分列データである拡張上昇レグと、始点と終点との間の各時点の値が、始点の値以下、かつ、終点の値以上である部分列データである拡張下降レグとが基準パターンの順に現れる拡張レグの組を特定する出現パターン特定処理と
を備えることを特徴とする時系列データ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プラント・ビル・工場等の制御システムのセンサ値や、株価や、売上等のデータ変動における異常を検出するための技術に関する。
【背景技術】
【０００２】
火力・水力・原子力等の発電プラント、化学プラント、鉄鋼プラント、上下水道プラント等では、プラントのプロセスを制御するための制御システムが導入されている。また、ビルや工場等の設備でも空調・電気・照明・給排水等の制御システムが導入されている。これらの制御システムでは、装置に取り付けられたセンサによって時間の経過に従い得られた種々の時系列データが蓄積されている。
同様に、経済・経営に関する情報システムにおいても、株価や売上等の値を時間の経過に従い記録した時系列データが蓄積されている。
【０００３】
これらの時系列データの値の変化を分析することにより、プラント・設備・経営状態等の異常等を検出することが行われている。特に、時系列データの値の上下振動の振動数を求めることにより、異常等を検出することが行われている。【０００４】
時系列データの値の上下振動については、電気等の信号に対しては、フーリエ変換等を用いた手法によって、振動数を求めることができることが知られている。【０００５】
特許文献１には、時系列データの平均値からの上下方向のずれから上下振動を検出する方法が記載されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００７−２６４７２０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
フーリエ変換を用いた手法では、温度・圧力等のゆっくりと変化する時系列データや、株価のように物理法則から定まるような周波数の重ね合わせで表現しにくいような時系列データ等の振動数を求めることが難しい場合がある。【０００８】
特許文献１に記載された方法では、平均値からの上下のずれ幅が均等でない場合（例えば、非常に値の低い値があるために平均値が下にずれている場合）や、平均値が収束していない場合（例えば、値が上下振動しながら平均値は低下し続けている場合）には、上下振動を検出できない。【０００９】
この発明は、時系列データの値の上下振動等の値の変化をより的確に検出し、異常等を的確に検出可能とすることを目的とする。
【課題を解決するための手段】
【００１０】
この発明に係る時系列データ処理装置は、
時間の経過に従って順次得られた値の列である時系列データを入力として、前記時系列データから切り出される部分列データであって、始点の値よりも終点の値が高い又は低い部分列データを拡張レグとして抽出するレグ抽出部と、
前記レグ抽出部が抽出した拡張レグから、始点の値よりも終点の値が高い拡張上昇レグと、始点の値よりも終点の値が低い拡張下降レグとが基準パターンの順に現れる拡張レグの組を特定する出現パターン特定部と
を備えることを特徴とする。
【発明の効果】
【００１１】
この発明に係る時系列データ処理装置は、時系列データから拡張レグを抽出し、抽出した拡張レグから拡張上昇レグと拡張下降レグとの出現パターンを特定する。これにより、時系列データの変化を的確に検出でき、異常等を的確に検出できる。
【図面の簡単な説明】
【００１２】
【図１】実施の形態１に係る時系列データ処理装置１０の構成図。
【図２】時系列データの説明図。
【図３】レグの説明図。
【図４】極大の説明図。
【図５】レグリストの説明図。
【図６】振動パス及び振動数の説明図。
【図７】終時点最左振動パスの説明図。
【図８】振幅と振動パス及び振動数との関係の説明図。
【図９】平均値からの上下のずれ幅が均等でない場合における上下振動検出の説明図。
【図１０】平均値が収束していない場合における上下振動検出の説明図。
【図１１】実施の形態１に係る時系列データ処理装置１０の処理を示すフローチャート。
【図１２】図１１に示す処理における右極大化処理、新規レグ登録処理の具体的な内容を示す図。
【図１３】図１１に示す処理における振幅チェック処理、左極大化処理の具体的な内容を示す図。
【図１４】実施の形態１に示した時系列データ処理装置１０のハードウェア構成の例を示す図。
【発明を実施するための形態】
【００１３】
実施の形態１．
図１は、実施の形態１に係る時系列データ処理装置１０の構成図である。
時系列データ処理装置１０は、時間の経過に従って順次観測して得られた値の列である時系列データを入力として、時系列データの値の上下振動を検出し、検出した上下振動を示す振動列データを出力する。
時系列データ処理装置１０は、期間データ生成部１１、レグ抽出部１２、レグ記憶部１３、出現パターン特定部１４を備える。
【００１４】
期間データ生成部１１は、時系列データの値が新規に到着すると、到着時点の過去の所定の期間（以下、時間窓）の部分列データを切り出す。
【００１５】
レグ抽出部１２は、期間データ生成部１１によって時系列データから切り出された部分列データを入力として、部分列データから切り出される部分列データであって、始点よりも終点の方が値が高い又は低い部分列データを拡張レグとして抽出する。
【００１６】
レグ記憶部１３は、レグ抽出部１２によって抽出された拡張レグをレグリストとして記憶する記憶装置である。
【００１７】
出現パターン特定部１４は、レグ記憶部１３に記憶された拡張レグから、時間の経過に従い値が上昇する拡張上昇レグと、時間の経過に従い値が下降する拡張下降レグとが、時間の経過に従い交互に出現する出現パターンを特定して、振動列データを生成する。出現パターン特定部１４は、振動列データを出力する。
【００１８】
図２は、時系列データの説明図である。
時系列データは、実数値の順序リストｆ［ａ：ｂ］＝｛ｆ（ａ），ｆ（ａ＋１），．．．，ｆ（ｂ−１），ｆ（ｂ）｝である。ｆはデータ項目の名称であり、ｆ（ｉ）はデータ項目ｆの時点ｉの値である。ａ，ｂはａ≦ｂを満たす整数である。ｂ−ａ＋１を時系列データｆ［ａ：ｂ］の長さと呼ぶ。
【００１９】
時系列データｆ［ａ：ｂ］の部分列データとは、時系列データにおける連続した実数値の順序リストｆ［Ｌ：Ｍ］＝｛ｆ（Ｌ），ｆ（Ｌ＋１），．．．，ｆ（Ｍ）｝である。Ｌ及びＭはａ≦Ｌ≦Ｍ≦ｂを満たす整数である。Ｍ−Ｌ＋１を部分列データｆ［Ｌ：Ｍ］の長さと呼ぶ。
【００２０】
図２において（ａ）は、縦軸を時系列データの値とし、横軸を時点として、時系列データを示している。（ａ）は、時系列データとして、実行値の順序リストｆ［１：ｎ］を示している。（ｂ）は、Ｌ＝１０，Ｍ＝１８とした場合に得られる、図２（ａ）に示す時系列データの部分列データｆ［１０：１８］を示している。
【００２１】
図３は、レグの説明図である。
レグには、上昇レグと下降レグとがある。
上昇レグは、Ｌ＜ｉ＜Ｍを満たす全てのｉに対して、ｆ（Ｌ）≦ｆ（ｉ）≦ｆ（ｉ＋１）≦ｆ（Ｍ）を満たす部分列データｆ［Ｌ：Ｍ］である。同様に、下降レグは、Ｌ＜ｉ＜Ｍを満たす全てのｉに対して、ｆ（Ｌ）≧ｆ（ｉ）≧ｆ（ｉ＋１）≧ｆ（Ｍ）を満たす部分列データｆ［Ｌ：Ｍ］である。
【００２２】
レグの定義を拡張したのが拡張レグである。拡張レグには、上昇レグの定義を拡張した拡張上昇レグと、下降レグの定義を拡張した拡張下降レグとがある。
拡張上昇レグは、Ｌ≦ｉ≦Ｍを満たす全てのｉに対して、ｆ（Ｌ）≦ｆ（ｉ）≦ｆ（Ｍ）を満たす部分列データｆ［Ｌ：Ｍ］である。上昇レグと異なり、必ずしもｆ（ｉ）≦ｆ（ｉ＋１）を満たす必要はない。同様に、拡張下降レグは、Ｌ≦ｉ≦Ｍを満たす全てのｉに対して、ｆ（Ｌ）≧ｆ（ｉ）≧ｆ（Ｍ）を満たす部分列データｆ［Ｌ：Ｍ］である。下降レグと異なり、必ずしもｆ（ｉ）≧ｆ（ｉ＋１）を満たす必要はない。
【００２３】
図３では、破線２１，２２，２３は、上昇レグである。破線２４は、ｆ（ｉ）≦ｆ（ｉ＋１）を満たさない時点があるので上昇レグではないが、拡張上昇レグである。破線２５は、ｆ（Ｌ）≦ｆ（ｉ）を満たさない時点があるので拡張上昇レグではない。
【００２４】
レグ中のデータ項目ｆの値の最大値と最小値との差（ＭａｘＬ≦ｉ≦Ｍｆ（ｉ）−ｍｉｎＬ≦ｉ≦Ｍｆ（ｉ））をレグの振幅と呼ぶ。例えば、図３の破線２１で示す上昇レグの振幅はＸであり、破線２４で示す拡張上昇レグの振幅はＹである。
【００２５】
図４は、極大の説明図である。
拡張上昇レグ及び拡張下降レグには、左極大及び右極大が定義される。
左極大な拡張上昇レグｆ［Ｌ：Ｍ］は、ｆ（Ｌ−１）≦ｆ（Ｌ）でない拡張上昇レグである。つまり、左極大な拡張上昇レグｆ［Ｌ：Ｍ］は、ｆ（Ｌ−１）＞ｆ（Ｌ）を満たす。右極大な拡張上昇レグｆ［Ｌ：Ｍ］は、ｆ（Ｍ）≦ｆ（Ｍ＋１）でない拡張上昇レグである。つまり、右極大な拡張上昇レグｆ［Ｌ：Ｍ］は、ｆ（Ｍ）＞ｆ（Ｍ＋１）を満たす。
同様に、左極大な拡張下降レグｆ［Ｌ：Ｍ］は、ｆ（Ｌ−１）＜ｆ（Ｌ）を満たす拡張下降レグである。右極大な拡張下降レグｆ［Ｌ：Ｍ］は、また、ｆ（Ｍ）＜ｆ（Ｍ＋１）を満たす拡張下降レグである。
【００２６】
図４では、破線３１，３２は、拡張上昇レグである。破線３１で示す拡張上昇レグは、左極大であり、かつ、右極大である。一方、破線３２で示す拡張上昇レグは、右極大であるが、ｆ（Ｌ−１）＞ｆ（Ｌ）を満たさないので左極大ではない。
【００２７】
図５は、レグリストの説明図である。
図５において、（ａ）は、部分列データを示す図である。（ｂ）は、（ａ）に示す部分列データから抽出される左極大かつ右極大な拡張上昇レグとなる時間区間を示すリストである。（ｃ）は、（ａ）に示す部分列データから抽出される左極大かつ右極大な拡張下降レグとなる時間区間を示すリストである。
レグ抽出部１２は、（ｂ）（ｃ）に示すように、左極大かつ右極大な拡張上昇レグと、左極大かつ右極大な拡張下降レグとを抽出し、レグリストとして、レグ記憶部１３に記憶する。
【００２８】
図６は、振動パス及び振動数の説明図である。
振幅Ａ（上昇閾値及び下降閾値）が与えられたとき、振幅Ａ以上の拡張上昇レグと拡張下降レグとが交互に出現する拡張レグの順序リストｆ［Ｌ１：Ｍ１］，ｆ［Ｌ２：Ｍ２］，．．．，ｆ［Ｌｎ：Ｍｎ］を振動パスと呼ぶ。振動パスの順序リストの長さｎを振動パスの振動数とする。但し、Ｌ１＜Ｍ１≦Ｌ２＜Ｍ２，．．．，≦Ｌｎ＜Ｍｎを満たす。
振動パスにおいて、単純なレグでなく拡張レグを用いるのは、与えられた振幅よりも小さい幅の変動を無視するためである。
【００２９】
時系列データｆ［Ｌ：Ｍ］、時間窓Ｗ、振幅Ａが与えられたとき、Ｌ≦ｉ≦Ｍ−Ｗ＋１を満たす各ｉについて、部分列データｆ［ｉ：ｉ＋Ｗ−１］において、振動数が最多になる振幅Ａ以上の振動パスの振動数の集合を振動列データｇ［Ｌ：Ｍ−Ｗ＋１］と呼ぶ。つまり、振動列データは、時間窓毎の振動数を表す。
【００３０】
図６において、（ａ），（ｂ）は、同じ部分列データを示しており、いずれも振幅Ａ以上の振動パスを破線で示している。（ａ）に示すように拡張レグが選択されて振動パスが構成されると、振動数は７になるが、（ｂ）に示すように拡張レグが選択されて振動パスが構成されると、振動数は５になる。このように、拡張レグの選択によって、振動パスの振動数が異なる。そこで、振動列データでは、拡張レグの選択によって振動数が変わらないように、振動パスの振動数が最多になる場合の振動パスを用いる。
【００３１】
図７は、終時点最左振動パスの説明図である。
図７において、（ａ），（ｂ），（ｃ）は、同じ部分列データを示しており、いずれも振幅Ａ以上の振動パスを破線で示している。（ａ），（ｂ），（ｃ）は、それぞれ異なる拡張レグが選択され振動パスが構成されている。（ａ），（ｂ），（ｃ）で選択された拡張レグで構成される振動パスの振動数は、いずれも７であり最多である。つまり、振動数が最多になる拡張レグの選択肢は複数存在する場合がある。
（ｃ）では、振幅Ａ以上の拡張レグが左（レグの始点が早い順）に選択され振動パスが構成されている。このように、拡張レグの終点が早い順に拡張レグが選択され構成された振動パスを終時点最左振動パスと呼び、終時点最左振動パスは振動数が最多になる。
【００３２】
より正確には、ｆ［Ｌ１：Ｍ１］，ｆ［Ｌ２：Ｌ２］，．．．，ｆ［Ｌｉ：Ｍｉ］，．．．，ｆ［Ｌｎ：Ｍｎ］を、振幅Ａ以上の拡張上昇レグと拡張下降レグとが交互に出現する振動パスＰとする。それぞれのｆ［Ｌｉ：Ｍｉ］がＭｉ−１≦Ｌｉであり、かつ、振幅Ａ以上であり、かつ、ｆ［Ｌｉ：Ｍｉ］の中でＭｉが最も早い時点になるように選択されている場合に、振動パスＰは終時点最左振動パスである。
【００３３】
終時点最左振動パスの振動数が最多になることを説明する。
振動パスの先頭は、拡張上昇レグと拡張下降レグとのどちらかである。ここでは、振動数が最多となる振動パスの先頭の拡張レグが拡張上昇レグの場合について説明する。なお、先頭の拡張レグが拡張下降レグの場合についても同様の説明が成立する。
まず、拡張上昇レグから開始する終時点最左振動パスを、ｆ［Ｌ１：Ｍ１］，ｆ［Ｌ２
：Ｍ２］，．．．，ｆ［Ｌｎ：Ｍｎ］とする。仮に、時点Ｌ１’がＬ１より後（右）にある拡張上昇レグｆ［Ｌ１’：Ｍ１’］から始まり、かつ、振動数が最多となる振幅Ａの振動パスＰ’（ｆ［Ｌ１’：Ｍ１’］，ｆ［Ｌ２’：Ｍ２’］，．．．，ｆ［Ｌｎ’：Ｍｎ’］）が存在したとする。すると、拡張上昇レグｆ［Ｌ１’：Ｍ１’］を拡張上昇レグｆ［Ｌ１：Ｍ１］で置き換えた振動パスも振幅Ａの振動パスになり、その振動数は振動パスＰ’と同じである。従って、ｆ［Ｌ１：Ｍ１］から始まる振動パスには、振動数を最多にするものがあることがわかる。
同様に、仮に、時点Ｌ２’’がＬ２より後にある拡張レグｆ［Ｌ１：Ｍ１］，［Ｌ２’’：Ｍ２’’］から始まり、かつ、振動数が最多となる振幅Ａの振動パスＰ’’（ｆ［Ｌ：Ｍ］，［Ｌ２’’：Ｍ２’’］，［Ｌ３’’：Ｍ３’’］，．．．，ｆ［Ｌｎ’’：Ｍｎ’’］）が存在したとする。すると、拡張上昇レグ［Ｌ２’’：Ｍ２’’］を拡張上昇レグ［Ｌ２：Ｍ２］に置き換えた振動パスも振幅Ａの振動パスになり、その振動数は振動パスＰ’’と同じである。従って、ｆ［Ｌ１：Ｍ１］，ｆ［Ｌ２：Ｍ２］から始まる振動パスの中に、振動数を最多にするものが存在することがわかる。
ｎは有限であり、かつ、ＬｉはＬｉ−１より大きいので、この手続きを再帰的に実行するとｎステップ以内に停止する。従って、終時点最左振動パスが、振幅Ａの波数を最多とする振動パスであることがわかる。
【００３４】
図８は、振幅と、振動パス及び振動数との関係の説明図である。
図８において、（ａ），（ｂ）は、同じ部分列データを示しており、（ａ）は振幅Ａ１以上の振動パスを破線で示し、（ｂ）は振幅Ａ２以上の振動パスを破線で示している。（ａ）では、振動数が７であるのに対して、（ｂ）では、振動数が３である。このように、振幅によって、振動パスが異なり、振動数も異なる。
【００３５】
図９は、平均値からの上下のずれ幅が均等でない場合における上下振動検出の説明図である。
図９では、平均からの上下のずれ幅が均等でない場合の例として、非常に値の低い値があるために平均値が下にずれている場合を示している。時系列データの平均的な値からの上下のずれを振幅として上下振動を検出する場合、（ａ）のように検出され、振動数は３になる。一方、上述した終時点最左振動パスを検出する場合、（ｂ）のように検出され、振動数は９になる。
【００３６】
図１０は、平均値が収束していない場合における上下振動検出の説明図である。
図１０では、平均値が収束していない場合の例として、値が上下振動しながら平均値が低下する場合を示している。時系列データの平均的な値からの上下のずれを振幅として上下振動を検出する場合、（ａ）のように検出され、振動数は１になる。一方、上述した終時点最左振動パスを検出する場合、（ｂ）のように検出され、振動数は７になる。
【００３７】
図１１は、実施の形態１に係る時系列データ処理装置１０の処理を示すフローチャートである。図１２は、図１１に示す処理における右極大化処理、新規レグ登録処理の具体的な内容を示す図である。図１３は、図１１に示す処理における左極大化処理の具体的な内容を示す図である。
ここでは、入力として、時系列データｆ（１：ｉ−１）、時間窓Ｗ、振幅Ａが与えられているとする。
【００３８】
（Ｓ１：部分列データ生成処理）
期間データ生成部１１は、時系列データの値が新規に到着すると、到着時点の過去の時間窓Ｗの部分列データを切り出す。
新規に到着した時点をｉとすると、時点ｉ−Ｗ＋１から時点ｉまでの部分列データｆ（ｉ−Ｗ＋１：ｉ）が切り出される。例えば、時間窓Ｗが２０分間である場合に、１０時２０分の値が到着すると、１０時１分から１０時２０分までの部分列データｆ（１０時１分：１０時２０分）が切り出される。
【００３９】
（Ｓ２：右極大化処理）
レグ抽出部１２は、値ｆ（ｉ）と、レグ記憶部１３に記憶されたレグリストＬＬとを入力として、レグリストＬＬ中のそれぞれの拡張レグが右極大性を満たすように、レグリストＬＬを更新する。
【００４０】
図１２の０１行から１５行までが右極大化処理の内容を示している。そのうち、０１行から１２行までが拡張上昇レグについての処理の内容を示し、１３行から１５行までが拡張下降レグについての処理を示している。なお、拡張下降レグの具体的な処理に関しては、拡張上昇レグの処理と値の比較部分を除き同じであるため、省略している。
【００４１】
レグ抽出部１２は、レグリストＬＬから拡張上昇レグＬｊ＝ｆ（Ｌ：Ｍ）を順次取り出し、取り出した各拡張上昇レグＬｊについて、以下の０２行から１１行までの処理を実行する（０１行）。
まず、レグ抽出部１２は、値ｆ（ｉ）が拡張上昇レグＬｊの最小値よりも小さいか否かを判定する（０２行）。０２行で真の場合、将来どのような時系列データの値が到着しても、拡張上昇レグＬｊが右に拡張することはないので、レグ抽出部１２は、拡張上昇レグＬｊに拡張不能フラグを付与する（０３行）。そして、０２行から開始されたｉｆ文が終了する（０４行）。
次に、レグ抽出部１２は、拡張上昇レグＬｊに拡張不能フラグが付与されておらず、かつ、値ｆ（ｉ）が拡張上昇レグＬｊの最大値より大きいか否かを判定する（０５行）。０５行で真の場合、レグ抽出部１２は、拡張上昇レグＬｊの終点であるＭが新規に到着した時点ｉの１つ前の時点であるか否かを判定する（０６行）。０６行で真の場合、拡張上昇レグＬｊは右極大ではなくなるので、レグ抽出部１２は、拡張上昇レグＬｊをレグリストＬＬから削除し、代わりに終点を時点ｉまで延ばしたｆ（Ｌ：ｉ）をレグリストＬＬに登録する（０７行）。一方、０６行で偽の場合（０８行）、拡張上昇レグＬｊは右極大であるため、レグ抽出部１２は、拡張上昇レグＬｊはレグリストＬＬに残しておき、拡張上昇レグＬｊとは別にｆ（Ｌ：ｉ）をレグリストＬＬに登録する（０９行）。そして、０５行及び０６行から開始されたｉｆ文が終了する（１０〜１１行）。
レグリストＬＬに登録された全ての拡張上昇レグＬｊについて０２行から１１行までの処理が終了すると、０１行から開始されたｆｏｒ文が終了する（１２行）。
【００４２】
続いて、レグ抽出部１２は、拡張下降レグについての処理を実行する（１３〜１５行）。上述した通り、拡張下降レグについての処理は、拡張上昇レグの処理と概ね同様であるため、詳細な説明は省略する。拡張下降レグについての処理は、拡張上昇レグの処理における０２行での「ｆ（ｉ）＜ｍｉｎＬ≦ｉ≦Ｍｆ（ｉ）」を「ｆ（ｉ）＞ｍａｘＬ≦ｉ≦Ｍｆ（ｉ）」とし、０５行での「ｆ（ｉ）＞ｍａｘＬ≦ｉ≦Ｍｆ（ｉ）」を「ｆ（ｉ）＜ｍｉｎＬ≦ｉ≦Ｍｆ（ｉ）」とすればよい。
【００４３】
（Ｓ３：新規レグ登録処理）
レグ抽出部１２は、値ｆ（ｉ）と、レグ記憶部１３に記憶されたレグリストＬＬとを入力として、新たな拡張レグをレグリストＬＬに登録する。
【００４４】
図１２の１６行から２０行までが新規レグ登録処理の内容を示している。
レグ抽出部１２は、レグリストＬＬの全ての拡張レグの終点Ｍが時点ｉ−２以下であるか否かを判定する（１６行）。１６行で真の場合、レグ抽出部１２は、ｆ（ｉ）＞ｆ（ｉ−１）又はｆ（ｉ）＜ｆ（ｉ−１）を満たすか否かを判定する（１７行）。１７行で真の場合、レグ抽出部１２は、ｆ（ｉ）＞ｆ（ｉ−１）を満たす場合には、拡張上昇レグとしてｆ（ｉ−１：ｉ）をレグリストＬＬに登録し、ｆ（ｉ）＜ｆ（ｉ−１）を満たす場合には、拡張下降レグとしてｆ（ｉ−１：ｉ）をレグリストＬＬに登録する（１８行）。そして、１６行及び１７行から開始されたｉｆ文が終了する（１９〜２０行）。
【００４５】
（Ｓ４：左極大化処理）
レグ抽出部１２は、値ｆ（ｉ）、時間窓Ｗ、振幅Ａ、レグリストＬＬを入力として、レグリストＬＬ中のそれぞれのレグの振幅が振幅Ａ以上になり、かつ、左極大性を満たすように、レグリストＬＬを更新する。
【００４６】
図１３が左極大化処理の内容を示している。そのうち、０１行から１７行までが拡張上昇レグについての処理の内容を示し、１８行から２０行までが拡張下降レグについての処理を示している。
【００４７】
レグ抽出部１２は、レグリストＬＬから拡張上昇レグＬｊ＝ｆ（Ｌ：Ｍ）を順次取り出し、取り出した各拡張上昇レグＬｊについて、以下の０２行から１６行までの処理を実行する（０１行）。
レグ抽出部１２は、拡張上昇レグＬｊの始点Ｌがｉ−Ｗであるか否かを判定する（０２行）。０２行で真の場合、レグ抽出部１２は、拡張上昇レグＬｊの始点が処理対象の範囲を外れているので、拡張上昇レグＬｊを削除する（０３行）。
【００４８】
次に、レグ抽出部１２は、拡張上昇レグＬｊの始点Ｌを次の時点にずらした拡張上昇レグｆ（Ｌ＋１：Ｍ）の振幅が与えられた振幅Ａより小さいか否かを判定する（０４行）。
０４行で真の場合、レグ抽出部１２は、拡張上昇レグＬｊに拡張不能フラグが付与されていないか否かを判定する（０５行）。０５行で真の場合、レグ抽出部１２は、拡張上昇レグＬｊの始点Ｌを次の時点にずらした拡張上昇レグｆ（Ｌ＋１：Ｍ）は、この後振幅Ａ以上になる可能性があるため、拡張上昇レグｆ（Ｌ＋１：Ｍ）をレグリストＬＬに登録する（０６行）。そして、０５行から開始されたｉｆ文が終了する（０７行）。
一方、０４行で偽の場合（０８行）、レグ抽出部１２は、ｆ（Ｌ＋１）＜ｆ（Ｌ＋２）を満たすか否かを判定する（０９行）。０９行で真の場合、Ｌ＋１の時点を始点とすれば左極大性を満たすので、レグ抽出部１２は、拡張上昇レグｆ（Ｌ＋１：Ｍ）をレグリストＬＬに登録する（１０行）。一方、０９行で偽の場合（１１行）、レグ抽出部１２は、Ｌ＋１＜ｋ、かつ、ｆ（ｋ−１）＞ｆ（ｋ）を満たす最も前の（左の）ｋを検索することにより、左極大性を満たす始点ｋを検索する（１２行）。レグ抽出部１２は、拡張上昇レグＬｊとは別にｆ（ｋ：Ｍ）をレグリストＬＬに登録する（１３行）。そして、０２行、０４行、０９行から開始されたｉｆ文が終了し（１４〜１６行）、レグリストＬＬに登録された全ての拡張上昇レグＬｊについて０２行から１６行までの処理が終了すると、０１行から開始されたｆｏｒ文が終了する（１７行）。
【００４９】
続いて、レグ抽出部１２は、拡張下降レグについての処理を実行する（１８〜２０行）。上述した通り、拡張下降レグについての処理は、拡張上昇レグの処理と概ね同様であるため、詳細な説明は省略する。拡張下降レグについての処理は、拡張上昇レグの処理における０９行での「ｆ（Ｌ＋１）＜ｆ（Ｌ＋２）」を「ｆ（Ｌ＋１）＞ｆ（Ｌ＋２）」とし、１２行での「ｆ（ｋ−１）＞ｆ（ｋ）」を「ｆ（ｋ−１）＜ｆ（ｋ）」とすればよい。
【００５０】
（Ｓ５：振動パス特定処理）
出現パターン特定部１４は、レグリストＬＬに登録されたレグから、振幅Ａ以上の拡張上昇レグと拡張下降レグとを交互に、終点が最も早い順に選択する。これにより、終時点最左振動パスが得られる。出現パターン特定部１４は、得られた終時点最左振動パスの振動数ｇ（ｉ）を出力する。
【００５１】
そして、時系列データの値が新規に到着すると、処理は再びにＳ１に戻され、処理が繰り返される。
例えば、Ｓ１で、１０時２０分の値が到着し、１０時１分から１０時２０分までの部分列データｆ（１０時１分：１０時２０分）が切り出され、Ｓ２からＳ４の処理が実行されたとする。次に、１０時２１分の値が到着すると、処理は再びにＳ１に戻され、１０時２分から１０時２１分までの部分列データｆ（１０時２分：１０時２１分）が切り出され、Ｓ２からＳ４の処理が実行される。
【００５２】
ｉ＝Ｗ，．．．，Ｎの各ｉについて、Ｓ１からＳ５の処理が繰り返され、振動数ｇ（ｉ）の集合である振動列データｇ［１：Ｎ−Ｗ＋１］が生成される。
【００５３】
以上のように、実施の形態１に係る時系列データ処理装置１０は、時系列データから拡張レグを抽出し、抽出した拡張レグから拡張上昇レグと拡張下降レグとが時間の経過に従い交互に出現する出現パターンを特定する。これにより、フーリエ変換等により振動数を求めることが難しいような時系列データの値の上下振動を、的確に検出することができる。そのため、異常等を的確に検出できる。
【００５４】
単純なサイン関数であれば、時系列データ処理装置１０で得られた振動数を４で割った値は、フーリエ変換によって得られた振動数（周波数）と対応する。但し、フーリエ変換では、時間窓毎に振動数に対して振幅を対応させる関数が得られるのに対して、時系列データ処理装置１０では、逆に、振幅に対して振動数を対応させる関数が得られる。
【００５５】
また、特許文献１に記載された方法では困難であった、平均値からの上下のずれ幅が均等でない場合や、平均値が収束していない場合にも、上下振動を検出できる。
【００５６】
また、図１１から図１３に示す処理では、時系列データの値が新規に到着する度に、改めて初めからから拡張レグを抽出し直すのではなく、既に抽出された拡張レグを編集してレグリストを更新する。そのため、拡張レグの抽出に係る処理が効率的である。
【００５７】
また、終時点最左振動パスを特定するだけで、振動数が最大の振動パスを特定できる。そのため、振動パスの特定に係る処理が効率的である。
【００５８】
なお、上記説明では、拡張上昇レグを最大値と最小値とに基づき定義した。しかし、拡張上昇レグを、「その時点の値とその時点までの最大値との差がある所定値ｋ（第１基準値）より小さい」と定義することもできるし、「その時点の値とその時点までの最小値との差がある所定値ｋ（第１基準値）より大きい」という定義にすることもできる。
例えば、拡張上昇レグｆ［Ｌ：Ｍ］を「その時点の値とその時点までの最大値との差がある所定値ｋより小さい」と定義する場合には、拡張上昇レグｆ［Ｌ：Ｍ］は、Ｌ≦ｉ≦Ｍを満たす全てのｉに対して、｜ｍａｘＬ≦ｊ≦ｉｆ（ｊ）−ｆ（ｉ）｜＜ｋを満たすと定義される。
ここで、所定値ｋを０にした場合がレグに相当し、ｋを無限大にした場合が上述した拡張上昇レグに相当する。つまり、所定値ｋは、上昇レグ中で下降しているレグの大きさを指定している。すなわち、所定値ｋは、単調増加関数からの外れ度合いを指定している。拡張上昇レグを、より単調増加性を強く定義すれば、振動数を求める処理を高速化できる。
【００５９】
拡張下降レグについても同様に定義できる。
例えば、拡張下降レグｆ［Ｌ：Ｍ］を「その時点の値とその時点までの最小値との差がある所定値ｋ（第２基準値）より小さい」と定義する場合には、拡張下降レグｆ［Ｌ：Ｍ］は、Ｌ≦ｉ≦Ｍを満たす全てのｉに対して、｜ｆ（ｉ）−ｍｉｎＬ≦ｊ≦ｉｆ（ｊ）｜＜ｋを満たすと定義される。
【００６０】
また、上記説明では、出現パターン特定部１４が拡張上昇レグと拡張下降レグとが時間の経過に従い交互に出現する出現パターンを特定した。しかし、出現パターン特定部１４は、例えば、３回連続して拡張上昇レグが現れる等、拡張レグの他の出現パターンを特定することも可能である。
例えば、出現パターン特定部１４は、コンピュータサイエンスの既知技術であるオートマトン理論を用いることにより、拡張レグの出現パターンを正規表現等により基準パターンとして定義しておく。そして、定義された基準パターンに一致する拡張レグの出現パターンを検出してもよい。
【００６１】
図１４は、実施の形態１に示した時系列データ処理装置１０のハードウェア構成の例を示す図である。
時系列データ処理装置１０は、コンピュータである。時系列データ処理装置１０の各要素をプログラムで実現することができる。
時系列データ処理装置１０のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００６２】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）等である。外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置等である。主記憶装置９０３は、例えばＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等である。通信装置９０４は、例えば通信ボード等である。入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００６３】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、期間データ生成部１１、レグ抽出部１２、出現パターン特定部１４として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、上記プログラムを実行する。
また、実施の形態１の説明において、レグリスト、時系列データ、部分列データ、振動列データ等が主記憶装置９０３にファイルとして記憶されている。
【００６４】
なお、図１４の構成は、あくまでも時系列データ処理装置１０のハードウェア構成の一例を示すものであり、時系列データ処理装置１０のハードウェア構成は図１４に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００６５】
１０  時系列データ処理装置、１１  期間データ生成部、１２  レグ抽出部、１３  レグ記憶部、１４  出現パターン特定部。
【図１】
0006005323.tif 000002
【図２】
0006005323.tif 000003
【図３】
0006005323.tif 000004
【図４】
0006005323.tif 000005
【図５】
0006005323.tif 000006
【図６】
0006005323.tif 000007
【図７】
0006005323.tif 000008
【図８】
0006005323.tif 000009
【図９】
0006005323.tif 000010
【図１０】
0006005323.tif 000011
【図１１】
0006005323.tif 000012
【図１２】
0006005323.tif 000013
【図１３】
0006005323.tif 000014
【図１４】
0006005323.tif 000015