(57)【要約】  時系列データＸの中で、レグ抽出部２により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、そのレグ振動列を構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数するレグ振動列特定部３と、レグ振動列特定部３により特定されたレグ振動列の開始時点の観測時刻と、当該レグ振動列に含まれているレグの振幅と、レグ振動列特定部３により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベース５に登録するデータベース登録部４とを備える。
2017017785.tif 000002
【特許請求の範囲】
【請求項１】
各時刻の観測値が並べられている時系列データの中から、時刻の経過に伴って上昇傾向を示す観測値が並んでいる部分時系列である上昇レグと、時刻の経過に伴って下降傾向を示す観測値が並んでいる部分時系列である下降レグとを抽出するレグ抽出部と、
前記時系列データの中で、前記レグ抽出部により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、前記レグ振動列を構成しているレグの数である振動数及び前記レグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数するレグ振動列特定部と、
前記レグ振動列特定部により特定されたレグ振動列の開始時点の観測時刻と、当該レグ振動列に含まれているレグの振幅と、前記レグ振動列特定部により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベースに登録するデータベース登録部と、
前記データベースに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索するレグ振動データ検索部と
を備えた時系列データ処理装置。
【請求項２】
前記レグ抽出部は、前記時系列データに対して、前記上昇レグ及び前記下降レグを抽出する範囲を初期設定し、前記抽出する範囲をずらしながら、前記時系列データから前記上昇レグ及び前記下降レグを抽出することを特徴とする請求項１記載の時系列データ処理装置。
【請求項３】
前記レグ振動データ検索部は、前記検索条件に合致するレグ振動データの中で、振幅、振動数及びウインドウサイズが同じレグ振動データの個数である総出現数を計数することを特徴とする請求項１記載の時系列データ処理装置。
【請求項４】
第１の軸が振幅、第２の軸がウインドウサイズ、第３の軸が総出現数である３次元グラフ上に、前記レグ振動データ検索部により検索されたレグ振動データにおける振幅、ウインドウサイズ及び総出現数を表示する視覚化部を備えたことを特徴とする請求項３記載の時系列データ処理装置。
【請求項５】
前記データベースに登録されているレグ振動データの中で、振動数が同じレグ振動データを振幅でグループ分けし、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較することで、当該グループに属するレグ振動データの中から、いずれか１つのレグ振動データを抽出するレグ振動データ抽出部を備え、
前記レグ振動データ検索部は、前記レグ振動データ抽出部により抽出されたレグ振動データの中から、検索条件に合致するレグ振動データを検索することを特徴とする請求項１記載の時系列データ処理装置。
【請求項６】
前記データベースに登録されているレグ振動データの中で、振幅が同じレグ振動データを振動数でグループ分けし、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較することで、当該グループに属するレグ振動データの中から、いずれか１つのレグ振動データを抽出するレグ振動データ抽出部を備え、
前記レグ振動データ検索部は、前記レグ振動データ抽出部により抽出されたレグ振動データの中から、検索条件に合致するレグ振動データを検索することを特徴とする請求項１記載の時系列データ処理装置。
【請求項７】
前記データベースに登録されているレグ振動データのうち、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振幅を比較することで、前記観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、いずれか１つのレグ振動データを抽出するレグ振動データ抽出部を備え、
前記レグ振動データ検索部は、前記レグ振動データ抽出部により抽出されたレグ振動データの中から、検索条件に合致するレグ振動データを検索することを特徴とする請求項１記載の時系列データ処理装置。
【請求項８】
前記データベースに登録されているレグ振動データのうち、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振動数を比較することで、前記観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、いずれか１つのレグ振動データを抽出するレグ振動データ抽出部を備え、
前記レグ振動データ検索部は、前記レグ振動データ抽出部により抽出されたレグ振動データの中から、検索条件に合致するレグ振動データを検索することを特徴とする請求項１記載の時系列データ処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、時々刻々に変化する観測値として、例えば、プラント・ビル・工場等の制御システムでのセンサ値、証券取引所での株価、会社の売上高などを取得して、各時刻の観測値が並べられている時系列データを分析する時系列データ処理装置に関するものである。
【背景技術】
【０００２】
例えば、火力・水力・原子力等の発電プラント、化学プラント、鉄鋼プラント、上下水道プラントなどでは、プラントのプロセスを制御する制御システムが導入されている。また、ビルや工場などの設備でも、空調・電気・照明・給排水などを制御する制御システムが導入されている。
これらの制御システムでは、各種の装置に取り付けられているセンサのセンサ値である観測値を例えば一定時間毎に取得することで、各時刻の観測値が並べられている時系列データを蓄積する機能を有していることがある。
また、証券取引所での株価、会社の売上高などを取り扱う情報システムにおいても、株価や売上高などを観測値として、例えば一定時間毎に取得することで、各時刻の観測値が並べられている時系列データを蓄積する機能を有していることがある。【０００３】
制御システムや情報システムに蓄積されている時系列データを分析する時系列データ処理装置では、例えば、プラントの設備の異常や、会社経営の異常などを検出することができるようにするため、蓄積されている時系列データを分析して、観測値の上昇や下降などの変動を検出する。
例えば、株価などの観測値では、絶えず上下に変動するが、局所的に小さく上下に変動しても、大域的には上昇の傾向を示す観測値が並んでいる部分時系列（以下、「上昇レグ」と称する）や、下降の傾向を示す観測値が並んでいる部分時系列（以下、「下降レグ」と称する）が存在する。【０００４】
プラントの設備の異常や、会社経営の異常などを検出するための指標としては、局所的に小さく上下に変動する部分より、上昇レグや下降レグの方が的確であるため、時系列データ処理装置では、蓄積されている時系列データの中から、上昇レグと下降レグを抽出するようにしている。
蓄積されている時系列データの中から、上昇レグ及び下降レグを抽出するレグ検索技術は、例えば、以下の非特許文献１に開示されている。
【先行技術文献】
【非特許文献】
【０００５】
【非特許文献１】Fink, E. and Kevin B. P.: Indexing of Compressed Time series, DATA MINING IN TIME SERIES DATABASES, World Scientific, pp. 43-65 (2004)
【発明の概要】
【発明が解決しようとする課題】
【０００６】
従来の時系列データ処理装置は以上のように構成されているので、時系列データの中から、時刻の経過に伴って上昇傾向を示す観測値が並んでいる部分時系列である上昇レグと、時刻の経過に伴って下降傾向を示す観測値が並んでいる部分時系列である下降レグを抽出することができる。しかし、プラントの設備の異常や、会社経営の異常などを検出するには、単なる上昇レグや下降レグよりも、上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列の方が重要な指標となるが、レグ振動列を特定する手段を備えていないため、重要な指標となるレグ振動列を特定することができないという課題があった。
例えば、プラント設備の異常として、設備のバタツキ現象やハンチング現象などを検知することがあるが、単に上昇レグや下降レグを抽出しても、観測値の振動状況を的確に把握することが困難であるため、容易に設備のバタツキ現象やハンチング現象などを検知することができない。
これに対して、レグ振動列は上昇レグと下降レグが交互に出現するレグの系列であるため、観測値の振動状況を容易に把握することができる。このため、設備のバタツキ現象やハンチング現象などを検知する上で、レグ振動列は重要な指標となる。【０００７】
この発明は上記のような課題を解決するためになされたもので、上昇レグと下降レグが交互に出現するレグ振動列に関する情報であるレグ振動データを蓄積することができる時系列データ処理装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
この発明に係る時系列データ処理装置は、各時刻の観測値が並べられている時系列データの中から、時刻の経過に伴って上昇傾向を示す観測値が並んでいる部分時系列である上昇レグと、時刻の経過に伴って下降傾向を示す観測値が並んでいる部分時系列である下降レグとを抽出するレグ抽出部と、時系列データの中で、レグ抽出部により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、そのレグ振動列を構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数するレグ振動列特定部と、レグ振動列特定部により特定されたレグ振動列の開始時点の観測時刻と、当該レグ振動列に含まれているレグの振幅と、レグ振動列特定部により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベースに登録するデータベース登録部とを設け、レグ振動データ検索部が、データベースに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索するようにしたものである。
【発明の効果】
【０００９】
この発明によれば、時系列データの中で、レグ抽出部により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、そのレグ振動列を構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数するレグ振動列特定部と、レグ振動列特定部により特定されたレグ振動列の開始時点の観測時刻と、当該レグ振動列に含まれているレグの振幅と、レグ振動列特定部により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベースに登録するデータベース登録部とを設けるように構成したので、上昇レグと下降レグが交互に出現するレグ振動列に関する情報であるレグ振動データを蓄積することができる効果がある。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１による時系列データ処理装置を示す構成図である。
【図２】この発明の実施の形態１による時系列データ処理装置を示すハードウェア構成図である。
【図３】時系列データ処理装置がコンピュータで構成される場合のハードウェア構成図である。
【図４】この発明の実施の形態１による時系列データ処理装置の処理内容を示すフローチャートである。
【図５】時系列データ収集部１により収集される時系列データ及び時系列データの一部である部分列の一例を示す説明図である。
【図６】レグ抽出部２により抽出されるレグの一例を示す説明図である。
【図７】レグ振動列と振動数を示す説明図である。
【図８】時系列データ収集部１により収集される時系列データと、データベース５に記憶されるレグ振動データ（レグ振動列の開始時点の観測時刻、レグ振動列の振幅、振動数、ウインドウサイズ）との一例を示す説明図である。
【図９】レグ振動データ検索部９によるレグ振動データの検索式と検索結果の一例を示す説明図である。
【図１０】視覚化部１０によるレグ振動データ検索部９の検索結果の視覚化例を示す説明図である。
【図１１】レグ振動列ｓを抽出するアルゴリズム（GetLongestLegSeq）のサンプルコードを示す説明図である。
【図１２】振幅に関してウインドウサイズが最小のレグ振動データを求めるアルゴリズム（GetMLV）のサンプルコードを示す説明図である。
【図１３】この発明の実施の形態２による時系列データ処理装置を示す構成図である。
【図１４】この発明の実施の形態２による時系列データ処理装置の処理内容を示すフローチャートである。
【図１５】レグ振動データ抽出部６の振幅極大レグ抽出部１１による必要なレグ振動データの抽出処理を示す説明図である。
【図１６】視覚化部１０によるレグ振動データ検索部９の検索結果の視覚化例を示す説明図である。
【発明を実施するための形態】
【００１１】
以下、この発明をより詳細に説明するために、この発明を実施するための形態について、添付の図面にしたがって説明する。
【００１２】
実施の形態１．
図１はこの発明の実施の形態１による時系列データ処理装置を示す構成図である。また、図２はこの発明の実施の形態１による時系列データ処理装置を示すハードウェア構成図である。
図１及び図２において、時系列データ収集部１は例えば外部から送信されたデータを受信する通信装置２１、あるいは、ＵＳＢポートなどの入出力ポートを備えた入出力装置２２で実現されるものであり、制御システムや情報システムなどで観測された各時刻の観測値が並べられている時系列データを収集する処理を実施する。
時系列データ収集部１により収集された時系列データは、例えば、ＲＡＭやハードディスクなどからなる主記憶装置２３又は外部記憶装置２４に記憶される。
【００１３】
レグ抽出部２は例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）を実装している半導体集積回路、あるいは、ワンチップマイコンなどで構成されている演算装置２５で実現されるものであり、主記憶装置２３又は外部記憶装置２４に記憶されている時系列データの中から、時刻の経過に伴って上昇傾向を示す観測値が並んでいる部分時系列である上昇レグと、時刻の経過に伴って下降傾向を示す観測値が並んでいる部分時系列である下降レグとを抽出する処理を実施する。
ここで、時刻の経過に伴って上昇傾向を示す観測値が並んでいる部分時系列とは、局所的に小さく上下に変動しても、大域的には上昇の傾向を示す観測値が並んでいる部分時系列のことを意味する。
また、時刻の経過に伴って下降傾向を示す観測値が並んでいる部分時系列とは、局所的に小さく上下に変動しても、大域的には下降の傾向を示す観測値が並んでいる部分時系列のことを意味する。
【００１４】
レグ振動列特定部３は例えば演算装置２５で実現されるものであり、主記憶装置２３又は外部記憶装置２４に記憶されている時系列データの中で、レグ抽出部２により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、そのレグ振動列を構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数する処理を実施する。
データベース登録部４は例えば演算装置２５で実現されるものであり、レグ振動列特定部３により特定されたレグ振動列の開始時点の観測時刻と、そのレグ振動列に含まれているレグの振幅と、レグ振動列特定部３により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベース５のテーブルＬＶに登録する処理を実施する。
データベース５は主記憶装置２３又は外部記憶装置２４で実現されるものであり、レグ振動列の開始時点の観測時刻、レグの振幅、振動数及びウインドウサイズの組をレグ振動データとして、テーブルＬＶに格納する。
【００１５】
レグ振動データ抽出部６は振幅極小レグ抽出部７及び振動数極小レグ抽出部８から構成されており、データベース５に登録されているレグ振動データの中で、必要なレグ振動データを抽出する処理を実施する。
振幅極小レグ抽出部７は例えば演算装置２５で実現されるものであり、データベース５のテーブルＬＶに登録されているレグ振動データの中で、振動数が同じレグ振動データを振幅でグループ分けする。
また、振幅極小レグ抽出部７は、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較することで、当該グループに属するレグ振動データの中から、いずれか１つのレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する処理を実施する。
例えば、当該グループに属する１つ以上のレグ振動データ、即ち、振幅が同一である１つ以上のレグ振動データのウインドウサイズを比較して、１つ以上のレグ振動データの中から、ウインドウサイズが最も小さいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する。
【００１６】
振動数極小レグ抽出部８は例えば演算装置２５で実現されるものであり、データベース５のテーブルＬＶに登録されているレグ振動データの中で、振幅が同じレグ振動データを振動数でグループ分けする。
また、振動数極小レグ抽出部８は、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較することで、当該グループに属するレグ振動データの中から、いずれか１つのレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する処理を実施する。
例えば、当該グループに属する１つ以上のレグ振動データ、即ち、振動数が同一である１つ以上のレグ振動データのウインドウサイズを比較して、１つ以上のレグ振動データの中から、ウインドウサイズが最も小さいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する。
【００１７】
レグ振動データ検索部９は例えば演算装置２５で実現されるものであり、データベース５のテーブルＭＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索する処理を実施する。
また、レグ振動データ検索部９は検索条件に合致するレグ振動データの中で、振幅、振動数及びウインドウサイズが同じレグ振動データの個数である総出現数を計数する処理を実施する。
【００１８】
視覚化部１０は例えばＧＰＵ（Ｇｒａｐｈｉｃｓ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）や液晶ディスプレイなどから構成されている表示装置２６で実現されるものであり、第１の軸が振幅、第２の軸がウインドウサイズ、第３の軸が総出現数である３次元グラフ上に、レグ振動データ検索部９により検索されたレグ振動データの振幅、ウインドウサイズ及び総出現数を表示する処理を実施する。
【００１９】
図１の例では、時系列データ処理装置の構成要素である時系列データ収集部１、レグ抽出部２、レグ振動列特定部３、データベース登録部４、データベース５、レグ振動データ抽出部６、レグ振動データ検索部９及び視覚化部１０のそれぞれが専用のハードウェアで構成されているものを想定しているが、時系列データ処理装置がコンピュータで構成されていてもよい。
図３は時系列データ処理装置がコンピュータで構成される場合のハードウェア構成図である。
時系列データ処理装置がコンピュータで構成される場合、データベース５をコンピュータのメモリ４１上に構成するとともに、時系列データ収集部１、レグ抽出部２、レグ振動列特定部３、データベース登録部４、レグ振動データ抽出部６、レグ振動データ検索部９及び視覚化部１０の処理内容を記述しているプログラムをコンピュータのメモリ４１に格納し、コンピュータのプロセッサ４２がメモリ４１に格納されているプログラムを実行するようにすればよい。
図４はこの発明の実施の形態１による時系列データ処理装置の処理内容を示すフローチャートである。
【００２０】
図５は時系列データ収集部１により収集される時系列データ及び時系列データの一部である部分列（部分時系列）の一例を示す説明図である。
時系列データＸは、ｍ個の観測値が観測時刻順に並べられている順序リスト｛ｘ１，ｘ２，・・・，ｘｍ｝であり、以下、時系列データＸのｉ番目の観測値ｘｉをＸ［ｉ］のように表記する。
添え字のｉは、１≦ｉ≦ｍを満たす整数であり、「時点」と呼ばれる。また、ｍは時系列データＸに含まれている観測値のデータ数であり、ｍ個の観測値が並べられている時系列データＸの長さは、ｌｅｎｇｔｈ（ｍ）で表される。
図５（ａ）において、縦軸は時系列データＸを構成している観測値Ｘ［ｉ］を示し、横軸は観測値Ｘ［ｉ］の時点ｉを示している。
【００２１】
時系列データＸのｉ番目の観測値Ｘ［ｉ］からｊ番目の観測値Ｘ［ｊ］が抽出されることで得られるリストＸ［ｉ：ｊ］＝｛ｘｉ，ｘｉ＋１，・・・，ｘｊ｝は、時系列データＸの部分列と称する。
また、部分列Ｘ［ｉ：ｊ］の開始時点ｐをｓｔａｒｔ（Ｘ［ｉ：ｊ］）、部分列Ｘ［ｉ：ｊ］の終了時点ｑをｅｎｄ（Ｘ［ｉ：ｊ］）のように表記する。
部分列Ｘ［ｉ：ｊ］の長さは、ｊ−ｉ＋１になる。この部分列の長さは、部分列の開始時点と終了時点の範囲を示すものであり、以下、「ウインドウサイズ」と称する。
図５（ｂ）では、図５（ａ）に示す時系列データにおいて、ｉ＝１１、ｊ＝１９の場合の部分列を示している。
【００２２】
図６はレグ抽出部２により抽出されるレグの一例を示す説明図である。
特に図６（ａ）はレグの一例を示し、図６（ｂ）はレグとなる例とレグとならない例を示している。
レグは、局所的に小さな上下変動があっても、大域的には上昇又は下降している部分列を意味する。
即ち、上昇レグの場合、部分列の開始時点の観測値より部分列の終了時点の観測値の方が大きい。また、開始時点と終了時点の間の全ての観測値は、部分列の開始時点の観測値以上であり、かつ、部分列の終了時点の観測値以下である。
一方、下降レグの場合、部分列の開始時点の観測値より部分列の終了時点の観測値の方が小さい。また、開始時点と終了時点の間の全ての観測値は、部分列の開始時点の観測値以下であり、かつ、部分列の終了時点の観測値以上である。
【００２３】
したがって、図６（ａ）（ｂ）の例では、３１，３２は大域的に上昇している部分列であるため、上昇レグである。
これに対して、部分列３３は、開始時点の観測値３３ａより終了時点の観測値３３ｂが大きいが、開始時点と終了時点との間の観測値３３ｃが、開始時点の観測値３３ａより小さいため、上昇レグではない。
以下、レグを形式的に定義する。
【００２４】
［単調レグ］
例えば、部分列であるＸ［ｐ：ｑ］が、下記の条件式（１）（２）のうち、いずれかの条件式を満足する場合、部分列Ｘ［ｐ：ｑ］を単調レグと称する。
条件式（１）
ｐ＋１≦ｉ≦ｑ−１を満たす全てのｉに対して、
Ｘ［ｉ−１］＜Ｘ［ｉ］＜Ｘ［ｉ＋１］
条件式（２）
ｐ＋１≦ｉ≦ｑ−１を満たす全てのｉに対して、
Ｘ［ｉ−１］＞Ｘ［ｉ］＞Ｘ［ｉ＋１］
【００２５】
［レグ］
例えば、部分列であるＸ［ｐ：ｑ］が、下記の条件式（３）（４）のうち、いずれかの条件式を満足する場合、部分列Ｘ［ｐ：ｑ］をレグと称する。特に条件式（３）を満足する場合、部分列Ｘ［ｐ：ｑ］を上昇レグと称し、条件式（４）を満足する場合、部分列Ｘ［ｐ：ｑ］を下降レグと称する。
条件式（３）
ｐ≦ｉ≦ｑを満たす全てのｉに対して、
Ｘ［ｐ］≦Ｘ［ｉ］≦Ｘ［ｑ］
条件式（４）
ｐ≦ｉ≦ｑを満たす全てのｉに対して、
Ｘ［ｐ］≧Ｘ［ｉ］≧Ｘ［ｑ］
【００２６】
即ち、上昇レグは、単調レグのように、部分列Ｘ［ｐ：ｑ］の開始時点ｐから終了時点ｑに至るまで、観測値Ｘ［ｉ］が必ずしも単調に上昇するものではないが、開始時点ｐと終了時点ｑの間の全ての観測値Ｘ［ｉ］が、開始時点ｐの観測値Ｘ［ｐ］以上の値を有し、かつ、終了時点ｑの観測値Ｘ［ｑ］以下の値を有する部分列である。
また、下降レグは、単調レグのように、部分列Ｘ［ｐ：ｑ］の開始時点ｐから終了時点ｑに至るまで、観測値Ｘ［ｉ］が必ずしも単調に下降するものではないが、開始時点ｐと終了時点ｑの間の全ての観測値Ｘ［ｉ］が、開始時点ｐの観測値Ｘ［ｐ］以下の値を有し、かつ、終了時点ｑの観測値Ｘ［ｑ］以上の値を有する部分列である。
【００２７】
［極大レグ］
例えば、部分列であるＸ［ｐ：ｑ］が上昇レグであり、かつ、下記の条件式（５）〜（８）を満足する場合、部分列Ｘ［ｐ：ｑ］は極大上昇レグと称する。
条件式（５）
ｐ＜ｉ≦ｑを満たす全てのｉに対して、
Ｘ［ｐ］＜Ｘ［ｉ］
条件式（６）
ｐ≦ｉ＜ｑを満たす全てのｉに対して、
Ｘ［ｉ］＜Ｘ［ｑ］
条件式（７）
Ｘ［ｐ−１］≧Ｘ［ｐ］
条件式（８）
Ｘ［ｑ］≧Ｘ［ｑ＋１］
ただし、Ｘ［ｐ−１］又はＸ［ｑ＋１］が存在しない場合、条件式（７）又は条件式（８）は条件に含めない。
【００２８】
例えば、部分列であるＸ［ｐ：ｑ］が下降レグであり、かつ、下記の条件式（９）〜（１２）を満足する場合、部分列Ｘ［ｐ：ｑ］は極大下降レグと称する。
条件式（９）
ｐ＜ｉ≦ｑを満たす全てのｉに対して、
Ｘ［ｐ］＞Ｘ［ｉ］
条件式（１０）
ｐ≦ｉ＜ｑを満たす全てのｉに対して、
Ｘ［ｉ］＞Ｘ［ｑ］
条件式（１１）
Ｘ［ｐ−１］≦Ｘ［ｐ］
条件式（１２）
Ｘ［ｑ］≦Ｘ［ｑ＋１］
ただし、Ｘ［ｐ−１］又はＸ［ｑ＋１］が存在しない場合、条件式（１１）又は条件式（１２）は条件に含めない。
【００２９】
部分列Ｘ［ｐ：ｑ］がレグである場合、そのレグの振幅ａｍｐ（Ｘ［ｐ：ｑ］）は、下記の式（１３）に示すように表される。
ａｍｐ（Ｘ［ｐ：ｑ］）＝ａｂｓ（Ｘ［ｑ］−Ｘ［ｐ］）（１３）
式（１３）において、ａｂｓ（Ａ）はＡの絶対値を返す関数である。
また、レグの符号ｓｉｇｎ（Ｘ［ｐ：ｑ］）は、下記の式（１４）に示すように表され、符号が正であれば上昇レグであり、符号が負であれば下降レグである。
ｓｉｇｎ（Ｘ［ｐ：ｑ］）＝ｓｉｇｎ（Ｘ［ｑ］−Ｘ［ｐ］）  （１４）
式（１４）において、ｓｉｇｎ（Ａ）はＡの符号を返す関数である。
図６（ｂ）において、３４は上昇レグ３１の振幅であり、３５は上昇レグ３２の振幅である。
【００３０】
図７はレグ振動列と振動数を示す説明図である。
図７（ａ）は上昇レグの次に下降レグが出現するレグ振動列の例を示しており、この場合の振動数は２である。
図７（ｂ）は下降レグの次に上昇レグが出現するレグ振動列の例を示しており、この場合の振動数は−２である。
図７（ｃ）は上昇レグ、下降レグ、上昇レグ、下降レグ、上昇レグ、下降レグ、上昇レグの順番でレグが出現しているレグ振動列の例を示しており、この場合の振動数は７である。
以下、レグ振動列と振動数とを定義する。
【００３１】
［レグ振動列］
例えば、Ｘ１，Ｘ２，・・・，Ｘｎが極大レグであるとき、下記の条件式（１５）〜（１７）を満足する場合、レグの系列ｓ＝［Ｘ１，Ｘ２，・・・，Ｘｎ］は、振幅ａのレグ振動列と称する。また、レグ振動列を構成するレグの数をｌｅｎｇｔｈ（ｓ）のように表記する。ａは正の実数である。
条件式（１５）
１≦ｉ≦ｎ−１を満たす全てのｉに対して、
ｅｎｄ（Ｘｉ）≦ｓｔａｒｔ（Ｘｉ＋１）
条件式（１６）
ａｍｐ（Ｘｉ）≧ａ
条件式（１７）
ａｍｐ（Ｘｉ）・ａｍｐ（Ｘｉ＋１）＜０
【００３２】
即ち、レグ振動列は、符号が＋の振幅である部分列と符号が−の振幅である部分列とが交互に並んでおり、かつ、それらの部分列の振幅の絶対値がａ以上である。
ここで、レグ振動列の符号ｓｉｇｎ、開始時点ｓｔａｒｔ、終了時点ｅｎｄ、末尾レグｌａｓｔを、レグ振動列の先頭のレグＸ１と、レグ振動列の末尾のレグＸｎとを用いて、以下の式（１８）〜（２１）のように定義する。
ｓｉｇｎ（ｓ）＝ｓｉｇｎ（Ｘ１）        （１８）
ｓｔａｒｔ（ｓ）＝ｓｔａｒｔ（Ｘ１）    （１９）
ｅｎｄ（ｓ）＝ｅｎｄ（Ｘｎ）            （２０）
ｌａｓｔ（ｓ）＝Ｘｎ                    （２１）
【００３３】
［レグ振動列集合］
例えば、時系列データがＸ、振幅がａ以上、ウインドウサイズがｗ、時点がｔであるとき、下記の条件式（２２）（２３）を満足する振幅ａ以上のレグ振動列ｓの集合をレグ振動列集合Ｓ（Ｘ，ａ，ｗ，ｔ）と称する。
条件式（２２）
ｔ≦ｓｔａｒｔ（ｓ）
条件式（２３）
ｅｎｄ（ｓ）≦ｔ＋ｗ−１
【００３４】
レグ振動数を定義する準備として、最大の長さをもつレグ振動列の符号に関する下記の補題を証明する。
［補題：最長レグ振動列の符号の同一性］
レグ振動列集合Ｓ（Ｘ，ａ，ｗ，ｔ）において、最大の長さをもつレグ振動列は、互いに同符号である。
［証明］
レグ振動列ｓ＝［Ｘｓ１，Ｘｓ２，・・・，Ｘｓｎ］、レグ振動列ｕ＝［Ｘｕ１，Ｘｕ２，・・・，Ｘｕｎ］は、最大の長さをもつレグ振動列であり、かつ、レグ振動列ｓとレグ振動列ｕは、符号が異なるレグ振動列と仮定する。
以下、この仮定が矛盾することを証明する。ここでは、便宜上、レグ振動列ｓの符号を正、レグ振動列ｕの符号を負として説明するが、このように符号を決めても一般性は失われない。
【００３５】
最初に、レグ振動列ｓの先頭レグＸｓ１の時区間［ｓｔａｒｔ（Ｘｓ１），ｅｎｄ（Ｘｓ１）］と、レグ振動列ｕの先頭レグＸｕ１との時区間［ｓｔａｒｔ（Ｘｕ１），ｅｎｄ（Ｘｕ１）］とは交わらないことを示す。
もし、ｓｔａｒｔ（Ｘｓ１）＜ｓｔａｒｔ（Ｘｕ１）＜ｅｎｄ（Ｘｓ１）＜ｅｎｄ（Ｘｕ１）であるとすると、
レグ振動列ｓは符号が正であり、レグ振動列ｓは極大上昇レグであるから、Ｘ［ｓｔａｒｔ（Ｘｕ１）］＜Ｘ［ｅｎｄ（Ｘｓ１）］を満たし、
レグ振動列ｕは符号が負であり、レグ振動列ｕは極大下降レグであるから、Ｘ［ｓｔａｒｔ（Ｘｕ１）］＞Ｘ［ｅｎｄ（Ｘｓ１）］を満たすので、矛盾する。
ｓｔａｒｔ（Ｘｕ１）＜ｓｔａｒｔ（Ｘｓ１）＜ｅｎｄ（Ｘｕ１）＜ｅｎｄ（Ｘｓ１）の場合も同様に矛盾する。
したがって、ｅｎｄ（Ｘｓ１）≦ｓｔａｒｔ（Ｘｕ１）、または、ｅｎｄ（Ｘｕ１）≦ｓｔａｒｔ（Ｘｓ１）でなければならない。
もし、ｅｎｄ（Ｘｓ１）≦ｓｔａｒｔ（Ｘｕ１）であれば、［Ｘｓ１，Ｘｕ１，・・・，Ｘｕｎ］は、長さｎ＋１のレグ振動列になり、レグ振動列ｓとレグ振動列ｕが最大の長さをもつことに矛盾する。
また、ｅｎｄ（Ｘｕ１）≦ｓｔａｒｔ（Ｘｓ１）であれば、［Ｘｕ１，Ｘｓ１，・・・，Ｘｓｎ］は、長さｎ＋１のレグ振動列になり、レグ振動列ｓとレグ振動列ｕが最大の長さをもつことに矛盾する。
このため、先頭レグＸｓ１と先頭レグＸｕ１の符号は同じでなければならい。レグ振動列の符号ｓｉｇｎの定義より、レグ振動列ｓとレグ振動列ｕは同符号になる。
【００３６】
［レグ振動数］
例えば、レグ振動列集合がＳ（Ｘ，ａ，ｗ，ｔ）であるとき、レグ振動数ＦＸ，ａ，ｗ（ｔ）を下記の式（２４）のように定義する。
ＦＸ，ａ，ｗ（ｔ）＝ｓｉｇｎ（ｌｍａｘ）×ｌｅｎｇｔｈ（ｌｍａｘ）  （２４）
ｌｍａｘ＝ａｒｇｍａｘｌ∈Ｓ（Ｘ，ａ，ｗ，ｔ）ｌｅｎｇｔｈ（ｌ）
ただし、ａｒｇｍａｘは、ｌｅｎｇｔｈ（ｌ）が最大となるような定義域の元の集合を示す記号である。即ち、ｌｍａｘは、レグ振動列集合Ｓ（Ｘ，ａ，ｗ，ｔ）の中で、最大の長さをもつレグ振動列を示している。
上記の補題では、最大の長さをもつレグ振動数が複数ある場合でも、ｓｉｇｎ（ｌｍａｘ）は一意に決まることを示しているので、レグ振動数を矛盾なく定義できている。
【００３７】
以下、レグ振動数の直観的な意味を説明する。
レグ振動数は、時点ｔから始まるウインドウサイズｗの部分列における上下振動の振る舞いを定量化しているものである。即ち、レグ振動数の絶対値が大きくなるほど、高頻度で振動していることを意味しており、また、振幅ａが大きくなるほど、大きな振幅で振動していることを意味している。
また、レグ振動数の符号が正の場合は、振動が上昇から始まることを示しており、レグ振動数の符号が負の場合は、振動が下降から始まることを示している。
【００３８】
例えば、レグ振動数が１の場合、上記の非特許文献１に開示されている上昇レグに対応し、レグ振動数が−１の場合、上記の非特許文献１に開示されている下降レグに対応している。
また、レグ振動数が２の場合、先頭レグが振幅ａ以上で上昇するレグであって、先頭レグに続くレグが、振幅ａ以上で下降するレグがあるため、時点ｔから始まるウインドウサイズｗの部分列に凸型のピーク形状があることを意味する。
レグ振動数が−２の場合、先頭レグが振幅ａ以上で下降するレグであって、先頭レグに続くレグが、振幅ａ以上で上昇するレグがあるため、時点ｔから始まるウインドウサイズｗの部分列に凹型の上下振動があることを意味する。設備の異常を検知するルールとして、ある一定以上の振幅のピークを検出する条件、具体的には、凸型のピーク形状や凹型の上下振動が存在する条件を用いることが多いので、レグ振動数が２や−２の部分列を検出することは、設備の異常を検知する上で有用である。
また、レグ振動数が４の場合は、振幅がａ以上の上昇レグ、下降レグ、上昇レグ、下降レグが順番に出現するパターンを意味する。設備の異常を検知するルールとして、レグ振動数の絶対値が４以上である条件を用いることがよくあり、レグ振動数が４の部分列を検出することも、設備の異常を検知する上で有用である。
【００３９】
図８は時系列データ収集部１により収集される時系列データと、データベース５に記憶されるレグ振動データ（レグ振動列の開始時点の観測時刻、レグの振幅、振動数、ウインドウサイズ）との一例を示す説明図である。
図８（ａ）の時系列データは、下記の非特許文献２に開示されているスペースシャトルのマロッタバルブのデータである。
［非特許文献２］
Keogh, E., Zhu, Q., Hu, B., Hao. Y.,  Xi, X., Wei, L. & Ratanamahatana, C. A. (2011). The UCR Time Series Classification/Clustering Homepage:
【００４０】
図８（ａ）の時系列データのサンプリング周期は１ミリ秒、単位はアンペアである。
この時系列データの中には、振幅が４程度で、時点数が４００程度の凸形状の大きなパターン（図中、点線枠で示す（Ａ）の部分）が存在する。
また、振幅が１．５から２程度で、時点数が３０から５０程度の上昇下降パターン（図中、点線枠で示す（Ｂ）の部分）が存在し、凸形状の大きなパターンの後ろにある振幅が１程度で、時点数が５０程度の凸形状のパターン（図中、点線枠で示す（Ｃ）の部分）が存在する。
例えば、制御システムにおけるセンサ値である観測値の異常検知では、通常存在する（Ａ）〜（Ｃ）のようなパターンを抽出し、それらのパターン同士で形状を比較することが重要になる。そのため、レグの振幅、振動数、ウインドウサイズを検索条件とする時系列データの検索は応用上重要である。
【００４１】
図８（ｂ）はデータベース５に記憶されるレグ振動データの一例を示しており、そのレグ振動データがテーブル化されている。即ち、レグ振動データがテーブルＬＶに登録されている。
レグ振動データは、レグ振動列の開始時点の観測時刻（開始時刻）、レグの振幅、振動数、ウインドウサイズから構成されている。
例えば、テーブルＬＶの１行目は、「時刻１０１から始まる長さ２１７のウインドウには、振幅４．２５以上の上昇レグが存在している」ことを意味している。
同様に、テーブルＬＶの２行目は、「時刻１０１から始まる長さ１５３のウインドウには、振幅２．２５以上の上昇レグと下降レグと上昇レグからなるレグ系列が存在している」ことを意味している。
また、テーブルＬＶの８行目は、「時刻２２７から始まる長さ２７のウインドウには、振幅２．２５以上の下降レグと上昇レグからなるレグ系列が存在している」ことを意味している。
【００４２】
図９はレグ振動データ検索部９によるレグ振動データの検索式と検索結果の一例を示す説明図である。
図９（ａ）はレグ振動データ検索部９によるレグ振動データの検索式の一例を示している。
検索式の構文と意味は、既存技術である関係データベースの検索言語ＳＱＬに従うものとするが、図９（ａ）では、レグ振動列の振動数が２（凸形状のパターン）であることを検索条件として、データベース５に登録されている複数のレグ振動データの中から、その検索条件に合致するレグ振動データを検索する例を示している。
図９（ｂ）に示す検索結果では、レグ振動列の振動数が２であるレグ振動データの振幅とウインドウサイズを提示しているほか、総出現数ｃｏｕｎｔ（＊）を提示している。
この総出現数ｃｏｕｎｔ（＊）は、振幅、振動数及びウインドウサイズが同じレグ振動データの個数を意味するものである。この総出現数ｃｏｕｎｔ（＊）の計算は、後述するレグ振動データ検索部９で行われる。
例えば、図９（ｂ）に示す検索結果の１行目は、振幅が４以上、ウインドウサイズが２６７の凸形状のパターンが１つあることを意味している。
また、２行目は、振幅が３．７５以上、ウインドウサイズが２９９の凸形状のパターンが２つあることを意味している。
【００４３】
図１０は視覚化部１０によるレグ振動データ検索部９の検索結果の視覚化例を示す説明図である。
図１０において、手前から左奥の軸（第１の軸）はレグの振幅を示し、手間から右奥の軸（第２の軸）はレグ振動データのウインドウサイズを示し、第１の軸と第２の軸の双方に直交している軸（第３の軸）はレグ振動データの総出現数ｃｏｕｎｔ（＊）を示している。
第１〜第３の軸を有する３次元グラフ上に、レグ振動データ検索部９により検索されたレグ振動データの振幅、ウインドウサイズ及び総出現数が表示される。
図１０における（Ａ）（Ｂ）（Ｃ）は、図８（ａ）に示されている（Ａ）（Ｂ）（Ｃ）の部分に対応している。
振幅とウインドウサイズの二つの軸で、凸形状のパターンの頻度を見ることにより、時系列の凸形状パターンの分布の様子を一覧することができるようになる。
【００４４】
次に動作について説明する。
以下、図４のフローチャートを適宜参照しながら説明する。
時系列データ収集部１は、制御システムや情報システムなどで観測された各時刻の観測値Ｘ［ｉ］（１≦ｉ≦ｍ）が並べられている時系列データＸを収集する（図４のステップＳＴ１）。即ち、時系列データ収集部１は、例えば、図５（ａ）や図８（ａ）に示すような時系列データＸを収集する。
時系列データ収集部１により収集された時系列データＸは、例えば、ＲＡＭやハードディスクなどからなる主記憶装置２３又は外部記憶装置２４に記憶される。
【００４５】
レグ抽出部２は、主記憶装置２３又は外部記憶装置２４に記憶されている時系列データＸの中から、上記の条件式（３）を満足する部分列Ｘ［ｐ：ｑ］を上昇レグとして抽出し、また、時系列データＸの中から、上記の条件式（４）を満足する部分列Ｘ［ｐ：ｑ］を下降レグとして抽出する（図４のステップＳＴ２）。
例えば、レグ抽出部２は、主記憶装置２３又は外部記憶装置２４に記憶されている時系列データＸに対して、上昇レグ及び下降レグを抽出する範囲（時点の範囲）を初期設定し、その抽出する範囲をずらしながら、時系列データＸから上昇レグ及び下降レグを抽出する。図８（ａ）に示すような時系列データＸが収集される場合、例えば、時点０〜１００程度の小さな抽出範囲が初期設定される。ただし、初期設定される抽出範囲は任意である。
このように、抽出する範囲をずらしながら、時系列データＸから上昇レグ及び下降レグを抽出する場合、上昇レグや下降レグの開始時点や終了時点を容易に探索できるため、時系列データＸの全体を抽出する範囲として、上昇レグ及び下降レグを抽出する場合よりも、上昇レグ及び下降レグの抽出処理を迅速に行うことができる。
ここでは、レグ抽出部２が、上昇レグ及び下降レグを抽出する範囲をずらしながら、時系列データＸの中から、上昇レグ及び下降レグを抽出する例を示しているが、時系列データＸの中から、上昇レグ及び下降レグを抽出するレグ検索技術は、上記の非特許文献１に開示されており、非特許文献１に開示されているレグ検索技術を用いて、時系列データＸの中から、上昇レグ及び下降レグを抽出するようにしてもよい。
【００４６】
レグ振動列特定部３は、レグ抽出部２が時系列データＸの中から上昇レグと下降レグを抽出すると、時系列データＸの中で、レグ抽出部２により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列ｓを特定する（図４のステップＳＴ３）。
即ち、レグ振動列特定部３は、上記の条件式（１５）〜（１７）を満足するレグ振動列ｓを特定するが、例えば、振幅ａ以上、ウインドウサイズｗ、時点ｔが指定されると、上記の条件式（２２）（２３）を満足するレグ振動列集合Ｓ（Ｘ，ａ，ｗ，ｔ）の中で、最大の長さをもつ部分列をレグ振動列ｓとして抽出する。
【００４７】
ここで、図１１はレグ振動列ｓを抽出するアルゴリズム（GetLongestLegSeq）のサンプルコードを示す説明図である。
以下、レグ振動列集合Ｓ（Ｘ，ａ，ｗ，ｔ）の中からレグ振動列ｓを抽出する動作を簡単に説明する。
レグ振動列特定部３は、図１１（ａ）のサンプルコードの１行目から５行目において、時系列データＸの時点ｔ毎に、レグ振動列ｓｍａｘを求め、そのレグ振動列ｓｍａｘのレグ振動数ＦＸ，ａ，ｗ（ｔ）を求める。
即ち、レグ振動列特定部３は、図１１（ａ）のサンプルコードの２行目において、長さ０のレグ振動列［］を引数として、図１１（ｂ）に示す“GetLegSeq_leftMost”の呼び出しを行うことで、開始時点ｔから終了時点ｔ＋ｗ−１までのウインドウ内での最左レグ振動列ｓｍａｘを求める。最左レグ振動列の定義は後述する。
レグ振動列特定部３は、最左レグ振動列ｓｍａｘを求めると、図１１（ａ）のサンプルコードの３行目において、その最左レグ振動列ｓｍａｘの符号ｓｉｇｎ（ｓｍａｘ）と長さｌｅｎｇｔｈ（ｓｍａｘ）から、レグ振動数ＦＸ，ａ，ｗ（ｔ）を求める。
【００４８】
次に、図１１（ｂ）に示す“GetLegSeq_leftMost”での動作を説明する。
レグ振動列特定部３は、サンプルコードの１行目において、引数であるレグ振動列ｓの後ろに最左レグ（最左レグは後述する）が存在するか否かを示すフラグ“ｅｘｉｔ＿ｌｅｇ”に対して“ｆａｌｓｅ”を代入する。
次に、レグ振動列特定部３は、サンプルコードの２行目において、次の時点を示す“ｔｎｅｘｔ”に対して、ｔ＋１からｔｅｎｄの時点を順番に代入し、サンプルコードの３行目において、変数ｌｎｅｘｔで示される後ろのレグ候補に対して部分列 Ｘ［ｔ：ｔｎｅｘｔ］を代入する。
【００４９】
レグ振動列特定部３は、サンプルコードの４行目〜６行目において、レグ候補ｌｎｅｘｔの振幅ａｍｐ（ｌｎｅｘｔ）がａ以上であり、かつ、レグ振動列ｓが空列であるならば、フラグ“ｅｘｉｔ＿ｌｅｇ”に対して“ｔｒｕｅ”を代入する。
また、レグ振動列特定部３は、サンプルコードの４行目、７行目〜８行目において、レグ候補ｌｎｅｘｔの振幅ａｍｐ（ｌｎｅｘｔ）がａ以上であり、かつ、「レグ振動列ｓの末尾レグｌａｓｔ（ｓ）の符号ｓｉｇｎ（ｌａｓｔ（ｓ））」と「レグ候補ｌｎｅｘｔの符号ｓｉｇｎ（ｌｎｅｘｔ）」の積が負ならば、レグ候補ｌｎｅｘｔが最左レグになるので、フラグ“ｅｘｉｔ＿ｌｅｇ”に対して“ｔｒｕｅ”を代入する。
【００５０】
レグ振動列特定部３は、サンプルコードの１１行目〜１３行目において、フラグ“ｅｘｉｔ＿ｌｅｇ”が“ｔｒｕｅ”であれば、図１１（ｂ）に示す“GetLegSeq_leftMost”のｆｏｒ文を抜ける。
レグ振動列特定部３は、ｆｏｒ文を抜けた後、サンプルコードの１５行目〜１８行目において、フラグ“ｅｘｉｔ＿ｌｅｇ”が“ｔｒｕｅ”の場合、レグ振動列ｓの末尾にレグ候補ｌｎｅｘｔを追加し、レグ候補ｌｎｅｘｔを追加したレグ振動列をｓｎｅｘｔに代入して、GetLegSeq_leftMost(snext ，tnext ，tend, X)を再帰的に呼び出し、その返り値をレグ振動列ｓに代入する。
最後に、レグ振動列特定部３は、サンプルコードの１９行目において、レグ振動列ｓをｓｍａｘとして、図１１（ａ）に示す“GetLongestLegSeq”に返す。
【００５１】
図１１のアルゴリズムでは、終了時点が最も左にあるレグ（最左レグ）、即ち、終了時点が最も早いレグを、符号の異なる順に選ぶことにより得られるレグ振動列（最左レグ振動列）を求めている。レグ振動数を求めるには、レグ振動列の長さが最大である必要があるが、以下に示すように、最左レグ振動列は、レグ振動列の中で長さが最大であることを証明することができる。
［最左レグ振動列］
時系列データがＸ、振幅がａ（正の実数値）以上、ウインドウサイズがｗ、時点がｔであるとき、部分列Ｘ［ｔ，ｔ＋ｗ−１］内にある振幅ａ以上のレグの集合をＬとする。
まず、レグ集合Ｌの中で、終了時点が最も早いレグをｍ１とする。続いて、振幅の符号がレグｍｉと異なり、レグｍｉより後ろにあるレグの中で、終了時点が最も早いレグをｍｉ＋１とする。即ち、下記の式（２５）に示すように、再帰的にレグｍｉ＋１を選択する。
ｍｉ＋１＝ａｒｇｍａｘｌ∈Ｌｉｅｎｄ（ｌ）    （２５）
ただし、Ｌｉ＝ｄｅｆ｛ｌ∈L  |
ｓｔａｒｔ（ｌ）≧ｅｎｄ（ｍｉ）  ａｎｄ
ｓｉｇｎ（ｌ）×ｓｉｇｎ（ｍｉ）＜０｝
この操作を順に適用することで得られたレグの系列［ｍ１，ｍ２，・・・，ｍｎ］を部分列Ｘ［ｔ，ｔ＋ｗ−１］における最左レグ振動列と称する。
【００５２】
［定理：最左レグ振動列の最長性］
レグ振動列集合がＳ（Ｘ，ａ，ｗ，ｔ）であるとき、部分列Ｘ［ｔ，ｔ＋ｗ−１］における最左レグ振動列は、Ｓ（Ｘ，ａ，ｗ，ｔ）において、最大の長さをもつレグ振動列である。
［証明］
最左レグ振動列がｓ＝［Ｘｓ１，Ｘｓ２，・・・，Ｘｓｎ］で、最左レグ振動列ｓの長さがｎであるとする。
また、最大の長さをもつ任意のレグ振動列がｕ＝［Ｘｕ１，Ｘｕ２，・・・，Ｘｕｍ］で、レグ振動列ｕの長さがｍであるとする。
このとき、ｎ＜ｍと仮定すると、矛盾することを示す。
【００５３】
まず、レグＸｓ１とレグＸｕ１は、同符号でなければならないことを示す。なぜなら、レグＸｓ１とレグＸｕ１が異符号とすると、ｓが最左レグ振動列であることと、上記の補題と同様の論法を用いれば、［Ｘｓ１，Ｘｕ１，Ｘｕ２，・・・，Ｘｕｍ］は長さｍ＋１のレグ振動列となるので、レグ振動列ｕが最大の長さをもつことに反するからである。
レグＸｓ１とレグＸｕ１は、同符号であり、かつ、ｓが最左レグ振動列であることから、ｅｎｄ（Ｘｓ１）≦ｅｎｄ（Ｘｕ１）≦ｓｔａｒｔ（Ｘｕ２）が成立する。したがって、［Ｘｓ１，Ｘｕ２，・・・，Ｘｕｍ］は、長さｍのレグ振動列になる。
同様に、ｓが最左レグ振動列であり、ｅｎｄ（Ｘｓ２）≦ｅｎｄ（Ｘｕ２）≦ｓｔａｒｔ（Ｘｕ３）であるから、［Ｘｓ１，Ｘｓ２，Ｘｕ３，・・・，Ｘｕｍ］は、長さｍのレグ振動列になる。
もし、ｎ＜ｍと仮定すると、上記の操作をｎ回繰り返すことができるので、［Ｘｓ１，・・・，Ｘｓｎ，Ｘｕｎ＋１，・・・，Ｘｕｍ］は、レグ振動列になる。しかし、部分列Ｘ［ｅｎｄ（ｓｎ）：ｅｎｄ（ｕｍ）］において、レグＸｕｎ＋１と同符号の最左レグが存在するはずなので、ｓが最左レグ振動列であることに矛盾する。よって、定理は証明されている。
【００５４】
レグ振動列特定部３は、レグ振動列ｓを特定すると、そのレグ振動列ｓを構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数する（図４のステップＳＴ３）。
データベース登録部４は、レグ振動列特定部３により特定されたレグ振動列の開始時点の観測時刻と、そのレグ振動列に含まれているレグの振幅と、レグ振動列特定部３により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベース５のテーブルＬＶに登録する（図４のステップＳＴ４）。
これにより、データベース５のテーブルＬＶには、図８（ｂ）に示すように、レグ振動列の開始時点の観測時刻、レグの振幅、振動数及びウインドウサイズの組からなるレグ振動データが格納される。
【００５５】
レグ振動データ抽出部６は、データベース登録部４がレグ振動データをデータベース５のテーブルＬＶに登録すると、データベース５のテーブルＬＶの中には冗長的なレグ振動データが含まれているので、データベース５のテーブルＬＶに登録されているレグ振動データの中から、必要なレグ振動データを抽出する処理を実施する。
即ち、レグ振動データ抽出部６の振幅極小レグ抽出部７は、データベース５のテーブルＬＶに登録されているレグ振動データの中で、振動数が同じレグ振動データを振幅でグループ分けし、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較する。
そして、振幅極小レグ抽出部７は、グループ毎に、当該グループに属するレグ振動データ（振幅が同一である１つ以上のレグ振動データ）の中から、ウインドウサイズが最小のレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する（図４のステップＳＴ５）。
以下、振幅に関してウインドウサイズが最小のレグ振動データを定義する。即ち、振幅に関して極小なレグ振動列ｓに関するレグ振動データを定義する。
【００５６】
［振幅に関してウインドウサイズが最小のレグ振動データ］
振幅に関してウインドウサイズが最小のレグ振動データを定義する前に、時系列データがＸ、レグ振動数がｆ、ウインドウサイズがｗ、時点がｔ、レグ振動列集合がＳ（Ｘ，ａ，ｗ，ｔ）であるときのレグ振幅ＡＸ，ｆ，ｗ（ｔ）を、下記の式（２６）のように定義する。
ＡＸ，ｆ，ｗ（ｔ）＝ｍａｘｓ∈（Ｘ，ａ，ｗ，ｔ）ａｍｐ（ｓ）  （２６）
例えば、レグ振動数がｆである場合、下記の式（２７）（２８）を満たすレグ振動列ｓを振幅に関して極小なレグ振動列であるとする。
ＡＸ，ｆ，ｗ（ｔ）＞ＡＸ，ｆ，ｗ−１（ｔ−１）    （２７）
ＡＸ，ｆ，ｗ（ｔ）＞ＡＸ，ｆ，ｗ−１（ｔ）        （２８）
ただし、ｔ＝ｓｔａｒｔ（ｓ）、ｗ＝ｅｎｄ（ｓ）−ｓｔａｒｔ（ｓ）＋１である。
したがって、式（２７）（２８）を満たすレグ振動列ｓに関するレグ振動データが、振幅に関してウインドウサイズが最小のレグ振動データである。
【００５７】
図１２は振幅に関してウインドウサイズが最小のレグ振動データを求めるアルゴリズム（GetMLV）のサンプルコードを示す説明図である。
以下、振幅に関してウインドウサイズが最小のレグ振動データを求める動作を簡単に説明する。
振幅極小レグ抽出部７は、サンプルコードの１行目において、データベース５のテーブルＭＬＶに格納されているレグ振動データを示す変数であるＭＬＶに対して空集合｛｝を代入する。
次に、振幅極小レグ抽出部７は、サンプルコードの２行目において、ウインドウサイズのリストWから、ウインドウサイズｗを順番に１つずつ取り出しを行う。
次に、振幅極小レグ抽出部７は、サンプルコードの３行目において、時点ｔに対して、１からｗまでの値を順番に代入する。
次に、振幅極小レグ抽出部７は、サンプルコードの４行目から５行目において、図１１（ａ）に示す“GetLongestLegSeq”を呼び出すことで、振幅ａ以上、ウインドウサイズｗでのレグ振動列ｓを求める。
振幅極小レグ抽出部７は、サンプルコードの６行目から７行目において、レグ振動列ｓが極小なレグ振動列であれば、極小なレグ振動列に関するレグ振動データである（ｔ，ａ，ＦＸ，ａ，ｗ（ｔ），ｗ）をＭＬＶに追加する。
【００５８】
レグ振動データ抽出部６の振動数極小レグ抽出部８は、データベース５のテーブルＬＶに登録されているレグ振動データの中で、振幅が同じレグ振動データを振動数でグループ分けし、グループ毎に、当該グループに属するレグ振動データのウインドウサイズを比較する。
そして、振動数極小レグ抽出部８は、グループ毎に、当該グループに属するレグ振動データ（振動数が同一である１つ以上のレグ振動データ）の中から、ウインドウサイズが最小のレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する（図４のステップＳＴ６）。
以下、振動数に関してウインドウサイズが最小のレグ振動データを定義する。即ち、振動数に関して極小なレグ振動列ｓに関するレグ振動データを定義する。
【００５９】
［振動数に関してウインドウサイズが最小のレグ振動データ］
例えば、振幅がａ以上である場合、下記の式（２９）（３０）を満たすレグ振動列ｓを振動数に関して極小なレグ振動列であるとする。
ａｂｓ（ＦＸ，ａ，ｗ（ｔ））＞ａｂｓ（ＦＸ，ａ，ｗ−１（ｔ−１））  （２９）
ａｂｓ（ＦＸ，ａ，ｗ（ｔ））＞ａｂｓ（ＦＸ，ａ，ｗ−１（ｔ））      （３０）
ただし、ｔ＝ｓｔａｒｔ（ｓ）、ｗ＝ｅｎｄ（ｓ）−ｓｔａｒｔ（ｓ）＋１である。
したがって、式（２９）（３０）を満たすレグ振動列ｓに関するレグ振動データが、振動数に関してウインドウサイズが最小のレグ振動データである。
【００６０】
レグ振動データ検索部９は、レグ振動データ抽出部６の振幅極小レグ抽出部７及び振動数極小レグ抽出部８がデータベース５のテーブルＬＶの中から、必要なレグ振動データを抽出してデータベース５のテーブルＭＬＶに登録すると、データベース５のテーブルＭＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索する（図４のステップＳＴ７）。
図８（ｂ）はレグ振動データが登録されているデータベース５のテーブルＬＶであるが、説明の便宜上、図８（ｂ）が、振幅極小レグ抽出部７及び振動数極小レグ抽出部８により抽出されたレグ振動データが登録されているデータベース５のテーブルＭＬＶであるとすると、例えば、検索条件が“振動数＝３”であれば、開始時刻が１０１、振幅が２．２５以上、ウインドウサイズが１５３であるレグ振動データを検索する。
また、検索条件が“振動数＝−２”であれば、開始時刻が２２７、振幅が２．２５以上、ウインドウサイズが２７であるレグ振動データを検索する。
ここでは、検索条件が振動数である例を示しているが、検索条件が振動数に限るものではなく、検索条件が開始時刻、振幅又はウインドウサイズであってもよい。
また、検索条件が複数あってもよく、開始時刻、振幅、振動数、ウインドウサイズの全部又は一部のＡＮＤ条件であってもよい。
なお、検索条件は、レグ振動データ検索部９に事前に設定されているものであってもよいし、外部から与えられるものであってもよい。
【００６１】
レグ振動データ検索部９は、データベース５のテーブルＭＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索すると、検索した１以上のレグ振動データの中で、振幅、振動数及びウインドウサイズが同じレグ振動データの個数である総出現数ｃｏｕｎｔ（＊）を計数する。
図９（ｂ）はレグ振動データ検索部９の検索結果の一例を示している。
図９（ｂ）では、例えば、振幅が４以上、ウインドウサイズが２６７であるレグ振動データが１個検索され、振幅が３．７５以上、ウインドウサイズが２９９であるレグ振動データが２個検索されていることを示している。
【００６２】
ここでは、レグ振動データ検索部９が、データベース５のテーブルＭＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索する例を示しているが、同じ振動数のレグ振動データや同じ振幅のレグ振動データが少ない状況下では、冗長的なレグ振動データが少ないため、データベース５のテーブルＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索するようにしてもよい。この場合、レグ振動データ抽出部６が不要になるため、時系列データ処理装置の構成を簡略化することができる。
【００６３】
視覚化部１０は、例えば、図１０に示すように、第１の軸が振幅、第２の軸がウインドウサイズ、第３の軸が総出現数である３次元グラフ上に、レグ振動データ検索部９により検索されたレグ振動データの振幅、ウインドウサイズ及び総出現数を表示する（図４のステップＳＴ８）。
【００６４】
以上で明らかなように、この実施の形態１によれば、時系列データＸの中で、レグ抽出部２により抽出された上昇レグと下降レグが交互に出現するレグの系列であるレグ振動列を特定し、そのレグ振動列を構成しているレグの数である振動数及びレグ振動列の開始時点と終了時点の範囲であるウインドウサイズを計数するレグ振動列特定部３と、レグ振動列特定部３により特定されたレグ振動列の開始時点の観測時刻と、当該レグ振動列に含まれているレグの振幅と、レグ振動列特定部３により計数された振動数及びウインドウサイズとの組をレグ振動データとしてデータベース５に登録するデータベース登録部４とを設けるように構成したので、プラントの設備異常等を検出する上で重要な指標となるレグ振動列に関する情報として、レグ振動データを蓄積することができることができる効果を奏する。
これにより、例えば、既存のＳＱＬ言語などを用いて、レグ振動データの開始時点、ウインドウサイズ、振幅、振動数を自由に指定した検索が可能になる。
【００６５】
実施の形態２．
上記実施の形態１では、レグ振動データ抽出部６の振幅極小レグ抽出部７及び振動数極小レグ抽出部８が、データベース５のテーブルＬＶに登録されているレグ振動データの中から、必要なレグ振動データを抽出するものを示したが、レグ振動データ抽出部６が振幅極小レグ抽出部７及び振動数極小レグ抽出部８のほかに、後述する振幅極大レグ抽出部１１及び振動数極大レグ抽出部１２を含んでおり、振幅極小レグ抽出部７、振動数極小レグ抽出部８、振幅極大レグ抽出部１１及び振動数極大レグ抽出部１２が、データベース５のテーブルＬＶに登録されているレグ振動データの中から、必要なレグ振動データを抽出するようにしてもよい。
【００６６】
図１３はこの発明の実施の形態２による時系列データ処理装置を示す構成図であり、図において、図１と同一符号は同一または相当部分を示すので説明を省略する。
振幅極大レグ抽出部１１は例えば演算装置２５で実現されるものであり、データベース５のテーブルＬＶに登録されているレグ振動データの中で、観測時刻の全部又は一部が共通である１つ以上のレグ振動データを抽出する。即ち、或る大きさの時点の範囲に存在している１つ以上のレグ振動データを抽出する。
振幅極大レグ抽出部１１は、抽出した１つ以上のレグ振動データの振幅を比較することで、いずれか１つのレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する処理を実施する。
例えば、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振幅を比較して、１つ以上のレグ振動データの中から、振幅が最も大きいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する。
【００６７】
振動数極大レグ抽出部１２は例えば演算装置２５で実現されるものであり、データベース５のテーブルＬＶに登録されているレグ振動データの中で、観測時刻の全部又は一部が共通である１つ以上のレグ振動データを抽出する。即ち、或る大きさの時点の範囲に存在している１つ以上のレグ振動データを抽出する。
振動数極大レグ抽出部１２は、抽出した１つ以上のレグ振動データの振動数を比較することで、いずれか１つのレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する処理を実施する。
例えば、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振動数を比較して、１つ以上のレグ振動データの中から、振動数が最も大きいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する。
【００６８】
図１３の例では、時系列データ処理装置の構成要素である時系列データ収集部１、レグ抽出部２、レグ振動列特定部３、データベース登録部４、データベース５、レグ振動データ抽出部６、レグ振動データ検索部９及び視覚化部１０のそれぞれが専用のハードウェアで構成されているものを想定しているが、時系列データ処理装置がコンピュータで構成されていてもよい。
時系列データ処理装置がコンピュータで構成される場合、データベース５を図３に示すコンピュータのメモリ４１上に構成するとともに、時系列データ収集部１、レグ抽出部２、レグ振動列特定部３、データベース登録部４、レグ振動データ抽出部６、レグ振動データ検索部９及び視覚化部１０の処理内容を記述しているプログラムをコンピュータのメモリ４１に格納し、コンピュータのプロセッサ４２がメモリ４１に格納されているプログラムを実行するようにすればよい。
図１４はこの発明の実施の形態２による時系列データ処理装置の処理内容を示すフローチャートである。
【００６９】
図１５はレグ振動データ抽出部６の振幅極大レグ抽出部１１による必要なレグ振動データの抽出処理を示す説明図である。
図１５（ａ）は観測時刻の全部又は一部が共通である複数のレグ振動データのうち、即ち、観測時刻が例えば１２３０〜１５２０程度の範囲に存在している複数のレグ振動データのうち、データベース５のテーブルＭＬＶに登録する１つのレグ振動データを抽出する処理を示している。
図１５（ａ）の例では、振幅が１の凸片形状パターンのレグ振動データと、振幅が３の凸片形状パターンのレグ振動データとが存在しており、振幅が１の凸片形状パターンより、振幅が３の凸片形状パターンの方が、振幅が大きいので、振幅が３の凸片形状パターンが振幅極大レグであると判断して、振幅が３の凸片形状パターンのレグ振動データをデータベース５のテーブルＭＬＶに登録するレグ振動データとして抽出する。
この場合、振幅極大レグではない振幅が１の凸片形状パターンのレグ振動データは、データベース５のテーブルＭＬＶに登録されない。
【００７０】
図１５（ｂ）はレグ振動データ抽出部６による振幅極大レグの抽出結果を示している。
図１６はレグ振動データ抽出部６により抽出された振幅極大レグの視覚化例を示す説明図である。
図１６の例では、図８（ａ）における（Ａ）の部分のパターンがクリアに抽出されている。
【００７１】
次に動作について説明する。
振幅極大レグ抽出部１１及び振動数極大レグ抽出部１２が追加されている点以外は、上記実施の形態１と同様であるため、ここでは、主に振幅極大レグ抽出部１１及び振動数極大レグ抽出部１２の処理内容を説明する。
【００７２】
レグ振動データ抽出部６の振幅極大レグ抽出部１１は、データベース５のテーブルＬＶに登録されているレグ振動データの中で、観測時刻の全部又は一部が共通である１つ以上のレグ振動データを抽出する。即ち、或る大きさの時点の範囲に存在している１つ以上のレグ振動データを抽出する。
振幅極大レグ抽出部１１は、１つ以上のレグ振動データを抽出すると、その抽出した１つ以上のレグ振動データの振幅を比較する。
図１５（ａ）の例では、ウインドウサイズが１２３０〜１５２０程度の範囲に、２つのレグ振動データ（振幅が１の凸片形状パターンのレグ振動データ、振幅が３の凸片形状パターンのレグ振動データ）が存在しているので、２つのレグ振動データの振幅を比較する。
【００７３】
振幅極大レグ抽出部１１は、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、振幅が最も大きいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する（図１４のステップＳＴ１１）。
図１５（ａ）の例では、振幅が３の凸片形状パターンが振幅極大レグであると判断して、データベース５のテーブルＬＶから、振幅が３の凸片形状パターンのレグ振動データが抽出される。
【００７４】
レグ振動データ抽出部６の振動数極大レグ抽出部１２は、データベース５のテーブルＬＶに登録されているレグ振動データの中で、観測時刻の全部又は一部が共通である１つ以上のレグ振動データを抽出する。即ち、或る大きさの時点の範囲に存在している１つ以上のレグ振動データを抽出する。
振動数極大レグ抽出部１２は、１つ以上のレグ振動データを抽出すると、その抽出した１つ以上のレグ振動データの振動数を比較する。
振動数極大レグ抽出部１２は、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、振動数が最も大きいレグ振動データを抽出し、その抽出したレグ振動データをデータベース５のテーブルＭＬＶに登録する（図１４のステップＳＴ１２）。
【００７５】
レグ振動データ検索部９は、レグ振動データ抽出部６の振幅極小レグ抽出部７、振動数極小レグ抽出部８、振幅極大レグ抽出部１１及び振動数極大レグ抽出部１２がデータベース５のテーブルＬＶに登録されているレグ振動データの中から、必要なレグ振動データを抽出してテーブルＭＬＶに登録すると、データベース５のテーブルＭＬＶに登録されているレグ振動データの中から、検索条件に合致するレグ振動データを検索する（図１４のステップＳＴ７）。
視覚化部１０は、例えば、図１６に示すように、第１の軸が振幅、第２の軸がウインドウサイズ、第３の軸が総出現数である３次元グラフ上に、レグ振動データ検索部９により検索されたレグ振動データの振幅、ウインドウサイズ及び総出現数を表示する（図１４のステップＳＴ８）。
【００７６】
以上で明らかなように、この実施の形態２によれば、データベース５のテーブルＬＶに登録されているレグ振動データのうち、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振幅を比較することで、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、いずれか１つのレグ振動データを抽出してデータをデータベース５のテーブルＭＬＶに登録する振幅極大レグ抽出部１１を備えるように構成したので、プラントの設備異常等を検出する上で重要な指標を３次元グラフ上で分かり易く表示することができる効果を奏する。
また、データベース５のテーブルＬＶに登録されているレグ振動データのうち、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの振動数を比較することで、観測時刻の全部又は一部が共通である１つ以上のレグ振動データの中から、いずれか１つのレグ振動データを抽出してデータをデータベース５のテーブルＭＬＶに登録する振動数極大レグ抽出部１２を備えるように構成したので、プラントの設備異常等を検出する上で重要な指標を３次元グラフ上で分かり易く表示することができる効果を奏する。
【００７７】
なお、本願発明はその発明の範囲内において、各実施の形態の自由な組み合わせ、あるいは各実施の形態の任意の構成要素の変形、もしくは各実施の形態において任意の構成要素の省略が可能である。
【産業上の利用可能性】
【００７８】
この発明に係る時系列データ処理装置は、各時刻の観測値が並べられている時系列データから、プラントの設備の異常や、会社経営の異常などを検出するための指標を抽出する必要性があるものに適している。
【符号の説明】
【００７９】
１  時系列データ収集部、２  レグ抽出部、３  レグ振動列特定部、４  データベース登録部、５  データベース、６  レグ振動データ抽出部、７  振幅極小レグ抽出部、８  振動数極小レグ抽出部、９  レグ振動データ検索部、１０  視覚化部、１１  振幅極大レグ抽出部、１２  振動数極大レグ抽出部、２１  通信装置、２２  入出力装置、２３  主記憶装置、２４  外部記憶装置、２５  演算装置、２６  表示装置、３１，３２  上昇レグ、３３  部分列、３３ａ  開始時点の観測値、３３ｂ  終了時点の観測値、３３ｃ  開始時点と終了時点との間の観測値、３４  上昇レグ３１の振幅、３５  上昇レグ３２の振幅、４１  メモリ、４２  プロセッサ。
【図１】
2017017785.tif 000003
【図２】
2017017785.tif 000004
【図３】
2017017785.tif 000005
【図４】
2017017785.tif 000006
【図５】
2017017785.tif 000007
【図６】
2017017785.tif 000008
【図７】
2017017785.tif 000009
【図８】
2017017785.tif 000010
【図９】
2017017785.tif 000011
【図１０】
2017017785.tif 000012
【図１１】
2017017785.tif 000013
【図１２】
2017017785.tif 000014
【図１３】
2017017785.tif 000015
【図１４】
2017017785.tif 000016
【図１５】
2017017785.tif 000017
【図１６】
2017017785.tif 000018
【国際調査報告】
2017017785.tif 000019
2017017785.tif 000020