(57)【特許請求の範囲】
【請求項１】
時系列に入力される複数の入力データを受付ける受付部と、
第１時刻に入力された前記入力データである起点データに対する誤差が閾値以内のデータである複数の起点候補を生成する生成部と、
前記起点候補と、第２時刻に入力された前記入力データである終点データと、前記第１時刻と前記第２時刻との間の時刻に入力された前記入力データである中間データと、を用いて、前記起点候補のうち、前記起点候補と前記終点データとによって誤差が前記閾値以内となるように近似される前記中間データの個数が、他の前記起点候補より大きい前記起点候補を選択する選択部と、
選択された前記起点候補と前記終点データとを、前記起点データと前記中間データと前記終点データとを圧縮した出力データとして出力する圧縮部と
を備えるデータ圧縮装置。
【請求項２】
前記選択部は、前記起点候補ごとに、前記起点候補と前記終点データとによって誤差が前記閾値以内となるように近似される範囲に前記中間データが含まれるか否かを判定する判定処理を、前記第２時刻を変更しながら繰り返し実行し、近似される範囲に含まれると最後に判定されたときの前記中間データの個数が、他の前記起点候補より大きい前記起点候補を選択する、
請求項１に記載のデータ圧縮装置。
【請求項３】
前記選択部は、前記第２時刻を変更したときに、変更前の時刻で誤差が前記閾値以内となるように近似される範囲と、変更後の時刻で誤差が前記閾値以内となるように近似される範囲と、が予め定められた条件を満たすか否かを判定し、満たす場合に、変更後の時刻では、前記閾値以内となるように近似される範囲に前記中間データが含まれないと判定する、
請求項２に記載のデータ圧縮装置。
【請求項４】
前記選択部は、変更前の時刻および変更後の時刻のそれぞれで、前記起点候補から、前記終点データに対して誤差が前記閾値以内となるデータまでの線分の傾きの最小値である最小下限勾配、および、前記線分の傾きの最大値である最大上限勾配を算出し、変更前の時刻の前記最小下限勾配および前記最大上限勾配と、変更後の時刻の前記最小下限勾配および前記最大上限勾配と、が前記条件を満たすか否かを判定する、
請求項３に記載のデータ圧縮装置。
【請求項５】
前記選択部は、前記中間データの個数が同じ前記起点候補が複数存在する場合、前記中間データの個数が同じ複数の前記起点候補のうち、前記起点データとの差分が小さい前記起点候補を選択する、
請求項１に記載のデータ圧縮装置。
【請求項６】
前記圧縮部は、選択された前記起点候補と、選択された前記起点候補に応じて補正した前記終点データとを、前記出力データとして出力する、
請求項１に記載のデータ圧縮装置。
【請求項７】
前記選択部は、前記起点候補のうち、前記起点候補と、前記終点データに対して誤差が前記閾値以内となるデータとによって定まる許容誤差範囲に含まれる前記中間データの個数が、他の前記起点候補より大きい前記起点候補を選択する、
請求項１に記載のデータ圧縮装置。
【請求項８】
時系列に入力される複数の入力データを受付ける受付ステップと、
第１時刻に入力された前記入力データである起点データに対する誤差が閾値以内のデータである複数の起点候補を生成する生成ステップと、
前記起点候補と、第２時刻に入力された前記入力データである終点データと、前記第１時刻と前記第２時刻との間の時刻に入力された前記入力データである中間データと、を用いて、前記起点候補のうち、前記起点候補と前記終点データとによって誤差が前記閾値以内となるように近似される前記中間データの個数が、他の前記起点候補より大きい前記起点候補を選択する選択ステップと、
選択された前記起点候補と前記終点データとを、前記起点データと前記中間データと前記終点データとを圧縮した出力データとして出力する圧縮ステップと
を含むデータ圧縮方法。
【請求項９】
現象の時間的な変化を計測して得られた時刻と値とを含むポイントデータの系列である時系列データを圧縮するデータ圧縮方法であって、
第１時刻のポイントデータを起点とするステップと、
前記起点に対する誤差が閾値以内となる複数の起点候補を生成するステップと、
前記第１時刻の後の時刻に得られたポイントデータを注目点とするステップと、
前記起点候補ごとに、前記注目点に対する誤差の範囲に基づいて、上限勾配と下限勾配とを計算するステップと、
計算した前記上限勾配と前記下限勾配とで指定される許容誤差範囲が、前の時刻の注目点に対して計算された上限勾配と下限勾配とで指定される許容誤差範囲と重なれば、前記上限勾配と下限勾配を更新し、前記前の時刻の注目点を間引くステップと、
計算した前記上限勾配と前記下限勾配とで指定される許容誤差範囲が、前の時刻の注目点に対して計算された上限勾配と下限勾配とで指定される許容誤差範囲と重ならなければ、前記起点候補を無効とするステップと、
無効化されていない前記起点候補が残っていれば、残っている前記起点候補に対して、次の時刻に得られたポイントデータを注目点とする間引き処理を継続するステップと、
を含むデータ圧縮方法。
【請求項１０】
コンピュータを、
時系列に入力される複数の入力データを受付ける受付部と、
第１時刻に入力された前記入力データである起点データに対する誤差が閾値以内のデータである複数の起点候補を生成する生成部と、
前記起点候補と、第２時刻に入力された前記入力データである終点データと、前記第１時刻と前記第２時刻との間の時刻に入力された前記入力データである中間データと、を用いて、前記起点候補のうち、前記起点候補と前記終点データとによって誤差が前記閾値以内となるように近似される前記中間データの個数が、他の前記起点候補より大きい前記起点候補を選択する選択部と、
選択された前記起点候補と前記終点データとを、前記起点データと前記中間データと前記終点データとを圧縮した出力データとして記憶部に出力する圧縮部
として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、データ圧縮装置、データ圧縮方法およびプログラムに関する。
【背景技術】
【０００２】
入力された時系列データから、時系列データを構成するポイントデータを間引くことでデータを圧縮する方法が知られている。そのような圧縮方法としては、Ｂｏｘ  Ｃａｒアルゴリズム、Ｂａｃｋｗａｒｄ  Ｓｌｏｐｅアルゴリズム、Ｓｗｉｎｇｉｎｇ  Ｄｏｏｒアルゴリズムなどが存在する。【０００３】
Ｓｗｉｎｇｉｎｇ  Ｄｏｏｒアルゴリズムは、誤差が予め設定された閾値以下となるように線形近似することでデータを間引くアルゴリズムの代表例である。Ｓｗｉｎｇｉｎｇ  Ｄｏｏｒアルゴリズムでは、起点を１点定めて、この起点から、誤差が予め設定された閾値以下となるように、線形近似を行う。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】Matthew  J.  Watson,  et  al,  "A  Practical  Assessment  of  Process  Data  Compression  Techniques",  Ind.  Eng.  Chem.  Res.,  Vol.  37,  No.  1,  1998,  267−274.
【非特許文献２】E.  H.  Bristol,  "Swinging  Door  Trending:  Adaptive  Trend  Recording?",  ISA  National  Conf.  Proc.,  1990,  pp.  749−754.
【非特許文献３】Peter  A.  James,  “DATA  COMPRESSION  FOR  PROCESS  HISTORIANS”,  http://www.castdiv.org/archive/data＿compression.pdf,  1995.
【発明の概要】
【発明が解決しようとする課題】
【０００５】
時系列データベースに記憶する時系列データの種類およびサイズは増大する傾向にあり、より効率的に時系列データを圧縮する手法が求められている。
【課題を解決するための手段】
【０００６】
実施形態のデータ圧縮装置は、受付部と生成部と選択部と圧縮部とを備える。受付部は、時系列に入力される複数の入力データを受付ける。生成部は、第１時刻に入力された入力データである起点データに対する誤差が閾値以内のデータである複数の起点候補を生成する。選択部は、起点候補と、第２時刻に入力された入力データである終点データと、第１時刻と前記第２時刻との間の時刻に入力された入力データである中間データと、を用いて、起点候補のうち、起点候補と終点データとによって誤差が閾値以内となるように近似可能な中間データの個数が、他の起点候補より大きい起点候補を選択する。圧縮部は、選択された起点候補と終点データとを、起点データと中間データと終点データとを圧縮した出力データとして出力する。
【図面の簡単な説明】
【０００７】
【図１】図１は、第１の実施形態にかかるデータ圧縮装置の構成の一例を示すブロック図である。
【図２】図２は、時系列データの一例を示す図である。
【図３】図３は、時系列データの圧縮方法の１番目の方法を説明する図である。
【図４】図４は、時系列データの圧縮方法の１番目の方法を説明する図である。
【図５】図５は、時系列データの圧縮方法の１番目の方法を説明する図である。
【図６】図６は、時系列データの圧縮方法の２番目の方法を説明する図である。
【図７】図７は、時系列データの圧縮方法の２番目の方法を説明する図である。
【図８】図８は、時系列データの圧縮方法の２番目の方法を説明する図である。
【図９】図９は、時系列データの圧縮方法の２番目の方法を説明する図である。
【図１０】図１０は、第１の実施形態の時系列データの圧縮方法の一例を説明する図である。
【図１１】図１１は、第１の実施形態の時系列データの圧縮方法の一例を説明する図である。
【図１２】図１２は、第１の実施形態の時系列データの圧縮方法の一例を説明する図である。
【図１３】図１３は、第１の実施形態の時系列データの圧縮方法の一例を説明する図である。
【図１４】図１４は、第１の実施形態におけるデータ圧縮処理の全体の流れを示すフローチャートである。
【図１５】図１５は、後処理の一例を説明するための図である。
【図１６】図１６は、第２の実施形態にかかるデータ圧縮装置の構成の一例を示すブロック図である。
【図１７】図１７は、最小下限勾配および最大上限勾配の一例を説明するための図である。
【図１８】図１８は、上限勾配および下限勾配の一例を示す図である。
【図１９】図１９は、上限勾配および下限勾配の一例を示す図である。
【図２０】図２０は、上限勾配および下限勾配の一例を示す図である。
【図２１】図２１は、第２の実施形態におけるデータ圧縮処理の全体の流れを示すフローチャートである。
【図２２】図２２は、第１または第２の実施形態にかかるデータ圧縮装置のハードウェア構成を示す説明図である。
【発明を実施するための形態】
【０００８】
以下に添付図面を参照して、この発明にかかるデータ圧縮装置の好適な実施形態を詳細に説明する。
【０００９】
（第１の実施形態）
上述のように、Ｓｗｉｎｇｉｎｇ  Ｄｏｏｒアルゴリズム等では、１つの起点を定めて、線形近似により時系列データを圧縮していた。第１の実施形態にかかるデータ圧縮装置は、複数の起点（起点候補）を定めて、より効率的に圧縮できる起点候補を採用して時系列データを圧縮する。
【００１０】
ここで、本実施形態で用いる用語等について説明する。
【００１１】
時系列データとは、ある現象の時間的な変化を観測または計測して得られた値の系列（ポイントデータ列）である。時系列データは、通常、所定の時間間隔で計測される。株価、および、プラント設備のセンサー値などが時系列データの例として挙げられる。例えば、プラント設備を構成する多数の機器の温度、振動、および、制御用設定値などの値の系列それぞれは、１つの時系列データと言える。
【００１２】
時系列データベースは、時系列データをデータベース化したものである。時系列データベースは、大量の時系列データを、コンピュータ上のメモリおよび外部記憶装置（ハードディスク）などに時系列順に保存する。
【００１３】
データ格納の最小単位であるデータ項目はタグとも呼ばれる。タグは、データ値、タイムスタンプ、および、データステイタスなどから構成される。収集対象となるデータの種類は、制御システムから入力される運転データ、オンライン計算機能により求められる計算データ、運転員などによりマニュアル入力されるデータ、他システムから入力されるインターフェースデータなどがある。
【００１４】
時系列データベースは、一般に、数千個から数万個のタグが存在し、各タグのデータ保存期間は１年から数年である。データの収集周期は、対象となるシステム（プラント設備等）のリアルタイム性に依存するが、数秒から１分が目安となる。
【００１５】
収集したデータをそのまま格納すると仮定すると、時系列データベースは、１０ＧＢ（ギガバイト）から１０ＴＢ（テラバイト）程度の容量が必要となる。また、この程度まで大容量化すると、検索性能の劣化も必至である。
【００１６】
そこで、例えばプラント設備などでは、安定運転時に運転データの変化が小さいという特性を利用してデータを圧縮する技術が用いられている。あるプラント設備では、圧縮比率が１：２０の圧縮データからオリジナルデータの挙動を把握できると言われている。
【００１７】
このように、時系列データベースは大容量の記憶領域を必要とするため、より効率的に時系列データを圧縮する手法が求められている。
【００１８】
次に、第１の実施形態にかかるデータ圧縮装置について説明する。図１は、第１の実施形態にかかるデータ圧縮装置１００の構成の一例を示すブロック図である。図１に示すように、データ圧縮装置１００は、受付部１０１と、登録部１１０と、検索部１１４と、記憶部１２１と、を備えている。
【００１９】
受付部１０１、登録部１１０、および、検索部１１４は、例えば、ＣＰＵ（Central  Processing  Unit）などの処理装置にプログラムを実行させること、すなわち、ソフトウェアにより実現してもよいし、ＩＣ（Integrated  Circuit）などのハードウェアにより実現してもよいし、ソフトウェアおよびハードウェアを併用して実現してもよい。
【００２０】
記憶部１２１は、各種データを記憶する。例えば、記憶部１２１は、圧縮部１１３により圧縮された後の時系列データを記憶する。記憶部１２１は、ＨＤＤ（Hard  Disk  Drive）、光ディスク、メモリカード、ＲＡＭ（Random  Access  Memory）などの一般的に利用されているあらゆる記憶媒体により構成することができる。
【００２１】
受付部１０１は、クライアント装置などの外部装置からの処理要求、および、データの入力などを受付ける。例えば、時系列データの登録要求、および、時系列データの検索要求などが処理要求に該当する。登録要求の場合、受付部１０１は、時系列に入力される複数の入力データ（時系列データのポイントデータ）を受付ける。受付部１０１は、リアルタイムに入力されるポイントデータを受け付けてもよい。受付部１０１は、リアルタイムに入力されたポイントデータを例えば記憶部１２１などに記憶する。また、受付部１０１は、記憶部１２１等に記憶された時系列データから、時系列順にポイントデータを受け付けてもよい。記憶部１２１等から時系列データの入力を受付ける場合は、受付部１０１が、ある時刻を起点として時間を遡るように、すなわち、前の時刻のポイントデータを順次受付けるように構成してもよい。
【００２２】
登録部１１０は、許容誤差に基づいて、入力されたポイントデータの系列からポイントデータを間引く処理（圧縮処理）を行い、間引き後のポイントデータを記憶部１２１に時系列データとして登録する。起点候補と他のポイントデータとによってポイントデータを間引く処理のアルゴリズムとしては、Ｓｗｉｎｇｉｎｇ  Ｄｏｏｒアルゴリズムなどの従来から用いられているあらゆるアルゴリズムを適用できる。登録部１１０は、生成部１１１と、選択部１１２と、圧縮部１１３と、を備えている。
【００２３】
生成部１１１は、ある時刻（第１時刻）のポイントデータである起点データに対する誤差が予め定められた閾値以内のデータである複数の起点候補を生成する。
【００２４】
選択部１１２は、起点候補のうち、より効率的に時系列データを圧縮できる起点候補を選択する。例えば、選択部１１２は、起点候補のうち、起点候補と、起点データと異なる時刻（第２時刻）に入力された終点データとによって誤差が閾値以内となるように近似されるポイントデータ（中間データ）の個数が、より大きい起点候補を選択する。
【００２５】
圧縮部１１３は、選択された起点候補と終点データとを、圧縮後の時系列データ（出力データ）として出力する。圧縮部１１３は、例えば圧縮後の時系列データを逐次、記憶部１２１に記憶する。圧縮部１１３は、圧縮後の複数の時系列データを一括で記憶部１２１に記憶してもよい。
【００２６】
検索部１１４は、記憶部１２１に記憶された時系列データを検索する。検索部１１４は、例えば開始時刻と終了時刻とサンプリング間隔が指定されると、開始時刻から終了時刻までの区間のポイントデータ系列を、指定されたサンプリング間隔で、時系列データベースから検索する。登録部１１０によってポイントデータが間引かれる場合等があるため、指定されたサンプリング間隔でポイントデータが検索できない場合がありうる。このような場合、検索部１１４は、例えば線形補間式によってポイントデータを補間する。線形補間式は２点間を補間する方法の一例である。始点を（ｘｓ，ｙｓ）とし、終点を（ｘｅ，ｙｅ）とするとき、始点と終点とを結ぶ直線上の任意のｘに対応するｙの値は以下の（１）式により求められる。ただし、ｘｅ≠ｘｓとする。
ｙ＝ｙｓ＋（ｘ−ｘｓ）（ｙｅ−ｙｓ）／（ｘｅ−ｘｓ）・・・（１）
【００２７】
次に、本実施形態によるデータ圧縮処理の具体例について説明する。図２は、時系列データの一例を示す図である。図２では、Ｐ１，Ｐ２，Ｐ３，Ｐ４，Ｐ５という５つのポイントデータを含む時系列データが示されている。以下のように、ポイントデータは、例えば時刻（Ｔｉｍｅ）と値（Ｖａｌｕｅ）との組合せである。時刻の間隔は必ずしも一定である必要はない。
Ｐ１＜ｔ１，ｖ１＞、Ｐ２＜ｔ２，ｖ２＞、Ｐ３＜ｔ３，ｖ３＞、Ｐ４＜ｔ４，ｖ４＞、Ｐ５＜ｔ５，ｖ５＞。ただし、ｔ１＜ｔ２＜ｔ３＜ｔ４＜ｔ５である。
【００２８】
図３〜図５は、時系列データの圧縮方法の１番目の方法を説明する図である。図３に示すように、予め指定された許容誤差をαとする。また起点データとしてＰ１を設定する。新しいポイントデータとしてＰ２が入力されると、登録部１１０は、Ｐ２に対する上限勾配ＵＳ２と下限勾配ＬＳ２とを求める。
【００２９】
まず、登録部１１０は、Ｐ２の値＜ｔ２，ｖ２＞に対して、時刻ｔ２での最大許容誤差となる２つのポイントデータＰ２'＜ｔ２，ｖ２＋α＞とＰ２''＜ｔ２，ｖ２−α＞とを求める。上限勾配ＵＳ２は、Ｐ１からＰ２'までの線分の傾きであり、ＵＳ２＝（ｖ２＋α−ｖ１）÷（ｔ２−ｔ１）で求められる。下限勾配ＬＳ２は、Ｐ１からＰ２''までの線分の傾きであり、ＬＳ２＝（ｖ２−α−ｖ１）÷（ｔ２−ｔ１）で求められる。
【００３０】
図４に示すように、新しいポイントデータとしてＰ３が入力されると、登録部１１０は、Ｐ３に対する上限勾配ＵＳ３と下限勾配ＬＳ３とを求める。上限勾配ＵＳ３は、Ｐ１からＰ３'までの線分の傾きであり、ＵＳ３＝（ｖ３＋α−ｖ１）÷（ｔ３−ｔ１）で求められる。下限勾配ＬＳ３は、Ｐ１からＰ３''までの線分の傾きであり、ＬＳ３＝（ｖ３−α−ｖ１）÷（ｔ３−ｔ１）で求められる。
【００３１】
Ｐ２までの上限勾配ＵＳ２よりもＰ３までの上限勾配ＵＳ３の方が小さく、かつ、Ｐ２までの下限勾配ＬＳ２よりもＰ３までの下限勾配ＬＳ３の方が大きければ、古いポイントデータＰ２は間引きされる。
【００３２】
図５に示すように、新しいポイントデータとしてＰ４が入力されると、登録部１１０は、Ｐ４に対する上限勾配ＵＳ４と下限勾配ＬＳ４とを求める。Ｐ３までの上限勾配ＵＳ３よりもＰ４までの上限勾配ＵＳ４の方が小さく、かつ、Ｐ３までの下限勾配ＬＳ３よりもＰ４までの下限勾配ＬＳ４の方が大きければ、古いポイントデータＰ３は間引きされる。
【００３３】
しかし図５の例では、Ｐ３までの下限勾配ＬＳ３よりもＰ４までの下限勾配ＬＳ４の方が小さい。結果として、Ｐ４は間引きできずに、Ｐ３が終点データとして残る。時系列データベース（記憶部１２１）には、Ｐ１、Ｐ３という２つのポイントデータがアーカイブ化されることになる。
【００３４】
図６〜図９は、時系列データの圧縮方法の２番目の方法を説明する図である。図６に示すように、予め指定された許容誤差をαとする。また起点としてＰ１を設定する。新しいポイントデータとしてＰ２が入力されると、登録部１１０は、Ｐ２に対する上限勾配ＵＳ２と下限勾配ＬＳ２とを求める。登録部１１０は、図３と同様の方法により上限勾配ＵＳ２と下限勾配ＬＳ２とを求めることができる。図３の１番目の方法と異なるのは、許容誤差範囲を求めることである。図６では、Ｐ２に対する許容誤差範囲は、斜線部分で表されている。Ｐ２に対する許容誤差範囲は、上限勾配ＵＳ２と下限勾配ＬＳ２という２つのパラメータで特定する。
【００３５】
図７に示すように、新しいポイントデータとしてＰ３が入力されると、登録部１１０は、Ｐ３に対する仮の上限勾配ＵＳ３と仮の下限勾配ＬＳ３を求める。Ｐ３に対する許容誤差範囲は、上限勾配ＵＳ３と下限勾配ＬＳ３という２つのパラメータで特定する。登録部１１０は、Ｐ２に対する許容誤差範囲と、Ｐ３に対する仮の許容誤差範囲と、の重なり部分を、Ｐ３に対する許容誤差範囲とする。
【００３６】
登録部１１０は、例えば「ＬＳ２＞ＵＳ３  ∨  ＬＳ３＞ＵＳ２」を計算する。この値が真であれば、登録部１１０は、Ｐ２に対する許容誤差範囲と、Ｐ３に対する仮の許容誤差範囲とは重ならないと判定する。この値が偽であれば、登録部１１０は、Ｐ２に対する許容誤差範囲と、Ｐ３に対する仮の許容誤差範囲とは重なると判定する。
【００３７】
図７の例では両範囲が重なるので、登録部１１０は、Ｐ３に対する許容誤差範囲を以下のように求める。Ｍｉｎ（Ａ，Ｂ）は、ＡおよびＢのうち小さい値を返す関数である。Ｍａｘ（Ａ，Ｂ）は、ＡおよびＢのうち大きい値を返す関数である。なお、ここでＰ２は間引きされることになる。
ＵＳ３'＝Ｍｉｎ（ＵＳ３，ＵＳ２）
ＬＳ３'＝Ｍａｘ（ＬＳ３，ＬＳ２）
【００３８】
図８に示すように、新しいポイントデータとしてＰ４が入力されると、登録部１１０は、Ｐ４に対する仮の上限勾配ＵＳ４と仮の下限勾配ＬＳ４を求める。登録部１１０は、図７と同様にして、Ｐ３に対する許容誤差範囲と、Ｐ４に対する仮の許容誤差範囲と、が重なるか否かを判定する。図８の例では両範囲が重なるので、登録部１１０は、Ｐ３に対する許容誤差範囲を以下のように求める。なお、ここでＰ３は間引きされることになる。
ＵＳ４'＝Ｍｉｎ（ＵＳ４，ＵＳ３）
ＬＳ４'＝Ｍａｘ（ＬＳ４，ＬＳ３）
ＵＳ４＝ＵＳ４'
ＬＳ４＝ＬＳ４'
【００３９】
図９に示すように、新しいポイントデータとしてＰ５が入力されると、登録部１１０は、Ｐ５に対する仮の上限勾配ＵＳ５と仮の下限勾配ＬＳ５を求める。登録部１１０は、「ＬＳ４＞ＵＳ５  ∨  ＬＳ５＞ＵＳ４」を計算する。図９の場合、この値が真になるので、登録部１１０は、Ｐ４に対する許容誤差範囲と、Ｐ５に対する仮の許容誤差範囲と、が重ならないと判定する。結果として、Ｐ５は間引きできずに、Ｐ４が終点データとして残る。時系列データベース（記憶部１２１）には、Ｐ１、Ｐ４という２つのポイントデータがアーカイブ化されることになる。
【００４０】
登録部１１０は、圧縮方法のアルゴリズムとして１番目および２番目のいずれを適用してもよい。また、これ以外のアルゴリズムを適用してもよい。従来は、１つの起点を定めてこれらのアルゴリズムを適用していた。本実施形態の登録部１１０は、複数の起点（起点候補）を定め、複数の起点候補に対して上記のようなアルゴリズムを適用する。
【００４１】
図１０〜図１３は、本実施形態の時系列データの圧縮方法の一例を説明する図である。１番目および２番目の圧縮方法ではいずれもｔ１での起点は１点であった。本実施形態では複数の起点候補を設定し、各起点候補を起点とみなして並行して間引き計算を行う。
【００４２】
生成する起点の個数を３とする場合、生成部１１１は、例えばＰ１＜ｔ１，ｖ１＞、Ｐ１'＜ｔ１，ｖ１＋α＞、Ｐ１''＜ｔ１，ｖ１−α＞を起点候補として生成する。生成する起点の個数をＮとする場合、生成部１１１は、例えば＜ｔ１，ｖ１＋α＞、＜ｔ１，ｖ１＋α×（１−２÷（Ｎ−１））×１＞、＜ｔ１，ｖ１＋α×（１−２÷（Ｎ−１））×２＞、・・・、Ｐ１＜ｔ１，ｖ１＞、・・・、＜ｔ１，ｖ１−α＞を起点候補として生成する。なお、起点候補の生成方法はこれに限られるものではなく、起点データを中心とする許容誤差αの範囲内に含まれる値であれば、どのようなポイントデータを起点候補としてもよい。
【００４３】
以下、図１１〜図１３では、２番目の圧縮方法による間引き計算を適用した場合の例を説明する。図１１に示すように、起点候補はＰ１＜ｔ１，ｖ１＞、Ｐ１'＜ｔ１，ｖ１＋α＞、Ｐ１''＜ｔ１，ｖ１−α＞である。図１１は、これらの起点候補のうちＰ１''＜ｔ１，ｖ１−α＞を起点として間引きを行った例を示している。図１１に示すように、Ｐ１''＜ｔ１，ｖ１−α＞を起点とする場合、Ｐ２，Ｐ３，Ｐ４までは間引きできるが、Ｐ５では間引きできない。
【００４４】
図１２は、Ｐ１＜ｔ１，ｖ１＞を起点として間引きを行った例を示している。図１２に示すように、Ｐ１＜ｔ１，ｖ１＞を起点とする場合、Ｐ２，Ｐ３，Ｐ４までは間引きできるが、Ｐ５では間引きできない。
【００４５】
図１３は、Ｐ１'＜ｔ１，ｖ１＋α＞を起点として間引きを行った例を示している。図１３に示すように、Ｐ１'＜ｔ１，ｖ１＋α＞を起点とする場合は、Ｐ２，Ｐ３，Ｐ４，Ｐ５まで間引きできる。
【００４６】
このように１番目および２番目の圧縮方法のいずれもｔ１での起点は１点であったが、本実施形態では複数の起点候補を設定し各起点候補を起点とみなして並行して間引き計算を行う。このため、上記の例では、起点が１点の場合は最大でもＰ４までの間引きが可能であったのに対し、本実施形態の方法ではＰ５までの間引きが可能になる。このように、本実施形態の方法によれば、同じ許容誤差であっても圧縮率が高くなる。
【００４７】
次に、このように構成された第１の実施形態にかかるデータ圧縮装置１００によるデータ圧縮処理について図１４を用いて説明する。図１４は、第１の実施形態におけるデータ圧縮処理の全体の流れを示すフローチャートである。なお、図１４は、上述の２番目の圧縮方法を適用した場合の例を表す。
【００４８】
まず、選択部１１２は、起点データを選択する（ステップＳ１０１）。例えばリアルタイムで時系列データが入力される場合は、選択部１１２は、最初に入力されたポイントデータ、または、入力済みのポイントデータに対する間引き処理が完了した後に入力されたポイントデータを起点データとしてもよい。記憶済みの時系列データから逐次ポイントデータを入力する場合は、選択部１１２は、最初に入力されたポイントデータ、または、入力済みのポイントデータに対する間引き処理が完了した後に入力されたポイントデータを起点データとしてもよい。
【００４９】
生成部１１１は、選択された起点データに対する誤差が許容誤差以内である複数の起点候補を生成する（ステップＳ１０２）。
【００５０】
選択部１１２は、次点データを選択する（ステップＳ１０３）。次点データとは、起点データが入力された時刻（第１時刻）を基準として、連続する時刻（第２時刻）に順次入力されるポイントデータである。次点データは、間引きができなくなるまで順次時刻をずらしながら選択される。以下では前の時刻に選択された次点データを旧次点データという。間引きできなくなったときの旧次点データが終点データに相当する。旧次点データよりさらに前に選択されたポイントデータが、起点データと、最終的に残る終点データ（旧次点データ）との間に入力される中間データに相当する。
【００５１】
上述のように、次点データが入力される時刻は、起点データが入力される時刻の前後のいずれであってもよい。また、例えば、記憶済みの時系列データから逐次ポイントデータを入力する場合は、ステップＳ１０１で選択した起点データが最後のポイントデータとなり、次点データが選択（取得）できない場合もありうる。図１４では記載を省略しているが、このような場合、登録部１１０はデータ圧縮処理を終了してもよい。また、リアルタイムにポイントデータを入力する場合は、選択部１１２は、次のポイントデータ（次点データ）が取得できるまでステップＳ１０３の処理を待機してもよい。
【００５２】
次に、選択部１１２は、生成された起点候補のうち１の起点候補を選択する（ステップＳ１０４）。選択部１１２は、選択した起点候補が無効化されているか否かを判定する（ステップＳ１０５）。無効化とは、選択された次点データを用いて間引くことができなくなった起点候補を、以降の処理の対象外とすることを表す。例えば、旧次点データでの処理で間引くことができなかった起点候補は、旧次点データに対する処理のときに無効化される（後述のステップＳ１０９）。ステップＳ１０５では、このように、前回までの処理で起点候補が無効化されていないかが判定される。
【００５３】
無効化されている場合（ステップＳ１０５：Ｙｅｓ）、ステップＳ１０４に戻り、選択部１１２が次の起点候補を選択して処理を繰り返す。無効化されていない場合（ステップＳ１０５：Ｎｏ）、選択部１１２は、選択した起点候補から次点データまでの上限勾配および下限勾配を算出する（ステップＳ１０６）。選択部１１２は、算出した上限勾配および下限勾配と、旧次点データに対して算出された上限勾配および下限勾配とを比較する（ステップＳ１０７）。選択部１１２は、例えば、旧次点データの上限勾配および下限勾配で特定される許容誤差範囲と、次点データの上限勾配および下限勾配で特定される許容誤差範囲とが重なるか否かを判定する。
【００５４】
選択部１１２は、両者の許容誤差範囲が重なるか否かを判定する（ステップＳ１０８）。重なっていない場合（ステップＳ１０８：Ｎｏ）、選択部１１２は、現在選択している起点候補を無効化し（ステップＳ１０９）、ステップＳ１０４に戻る。重なっている場合（ステップＳ１０８：Ｙｅｓ）、選択部１１２は、起点候補からの上限勾配および下限勾配を、現在の次点データに対して算出した上限勾配および下限勾配に更新する（ステップＳ１１０）。
【００５５】
選択部１１２は、すべての起点候補を処理したか否かを判定する（ステップＳ１１１）。処理していない場合（ステップＳ１１１：Ｎｏ）、ステップＳ１０４に戻り処理を繰り返す。すべての起点候補を処理した場合（ステップＳ１１１：Ｙｅｓ）、選択部１１２は、すべての起点候補が無効化されたか否かを判定する（ステップＳ１１２）。すべての起点候補が無効化されていない場合（ステップＳ１１２：Ｎｏ）、選択部１１２は、次の連続する時刻のポイントデータを、新たな次点データとして選択して処理を繰り返す（ステップＳ１０３）。
【００５６】
すべての起点候補が無効化された場合（ステップＳ１１２：Ｙｅｓ）、選択部１１２は、最後に無効化された起点候補を選択する（ステップＳ１１３）。このような処理によって、選択部１１２は、誤差が許容誤差以内となるように近似されるポイントデータ（中間データ）の個数が、より大きい起点候補を選択することができる。
【００５７】
なお、最後に無効化された起点候補が複数存在する場合、選択部１１２は、いずれか１つの起点候補を選択する。選択部１１２が、最後に無効化された複数の起点候補のうち、より起点データに近い値の起点候補を選択してもよい。
【００５８】
圧縮部１１３は、選択した起点候補に応じて、終点データ（旧次点データ）の値を補正するための後処理を実行する（ステップＳ１１４）。なお、後処理を実行せずに終点データを出力するように構成してもよい。
【００５９】
図１５は、後処理の一例を説明するための図である。図１５は、Ｐ５を次点データとしたときに間引きができず、Ｐ４が旧次点データ（終点データ）として残った例を示す。また、Ｐ１''が起点候補として選択されたと仮定する。圧縮部１１３は、旧次点データの上限勾配と下限勾配との平均勾配を求める。圧縮部１１３は、この平均勾配を傾きとする直線を近似化されたデータ列と見なして、ｔ４のときのデータ列の値を求める。圧縮部１１３は、この値を補正した終点データの値（Ｐ４’）とする。圧縮部１１３は、選択された起点候補と、補正した終点データとを記憶部１２１に記憶する。
【００６０】
図１４に戻り、選択部１１２は、すべての入力データを処理したか否かを判定する（ステップＳ１１５）。処理していない場合（ステップＳ１１５：Ｎｏ）、選択部１１２は、次のポイントデータを新たな起点データとして選択し（ステップＳ１０１）、処理を繰り返す。例えば、すべての起点候補が無効化されたときの次点データが、新たな起点データとして選択される。
【００６１】
このように、第１の実施形態にかかるデータ圧縮装置では、複数の起点候補を設定し、各起点候補を起点とみなしてそれぞれ間引き計算を行う。そして、より多くのデータを間引くことができる起点候補を選択し、選択した起点候補によって間引かれたデータを圧縮結果のデータとして出力する。これにより、時系列データの圧縮率を増加させることができる。
【００６２】
（第２の実施形態）
第１の実施形態の手法により圧縮率は向上するが、複数の起点候補で並行して間引き計算を行うため計算量が増加する。そこで、第２の実施形態にかかるデータ圧縮装置は、間引き計算を省略する処理（フィルタ処理）をさらに実行する。
【００６３】
図１６は、第２の実施形態にかかるデータ圧縮装置１００−２の構成の一例を示すブロック図である。図１６に示すように、データ圧縮装置１００−２は、受付部１０１と、登録部１１０−２と、検索部１１４と、記憶部１２１と、を備えている。
【００６４】
第２の実施形態では、登録部１１０−２の選択部１１２−２の機能が第１の実施形態と異なっている。その他の構成および機能は、第１の実施形態にかかるデータ圧縮装置１００の構成を表すブロック図である図１と同様であるので、同一符号を付し、ここでの説明は省略する。
【００６５】
選択部１１２−２は、上述の選択部１１２の機能に、フィルタ処理のための機能が追加される。選択部１１２−２は、各起点候補に対する処理を実行する前に、旧次点データで許容誤差以内となるように近似される範囲と、次点データで許容誤差以内となるように近似される範囲と、が予め定められた条件を満たすか判定する。条件を満たす場合、選択部１１２−２は、次点データでは許容誤差以内となるように近似できないと判定し、各起点候補に対する判定処理は実行しない。
【００６６】
例えば、選択部１１２−２は、旧次点データの最小下限勾配および最大上限勾配、並びに、（現在の）次点データの最小下限勾配および最大上限勾配を比較し、所定の条件を満たすか判定する。そして、選択部１１２−２は、条件を満たすか否かを表す判定値（例えば真または偽）を求め、判定値に応じて各起点候補に対する処理を省略する。
【００６７】
最小下限勾配は、各起点候補と、ポイントデータから許容誤差を減算した値との間の勾配（勾配）のうち、最小値を表す。最大上限勾配は、各起点候補と、ポイントデータに許容誤差を加算した値との間の勾配（勾配）のうち、最大値を表す。図１７は、最小下限勾配ＭｉｎＬＳおよび最大上限勾配ＭａｘＵＳの一例を説明するための図である。
【００６８】
Ｐ５については、Ｐ１、Ｐ１’、Ｐ１’’をそれぞれ起点とする３つの上限勾配（それぞれＵＳ５、ＵＳ５’、ＵＳ５’’とする）が存在する。３つの上限勾配の最大値が最大上限勾配ＭａｘＵＳである。
ＭａｘＵＳ＝Ｍａｘ（ＵＳ５，ＵＳ５’，ＵＳ５’'）
【００６９】
同様に、Ｐ５については、Ｐ１、Ｐ１’、Ｐ１’’をそれぞれ起点とする３つの下限勾配（それぞれＬＳ５、ＬＳ５’、ＬＳ５’’とする）が存在する。３つの下限勾配の最小値が最小下限勾配である。
ＭｉｎＬＳ＝Ｍｉｎ（ＬＳ５，ＬＳ５’，ＬＳ５’'）
【００７０】
図１８〜図２０は、Ｐ４についての上限勾配および下限勾配の一例を示す図である。図１８は、Ｐ１’’を起点とする場合のＰ４の上限勾配ＵＳ４’’および下限勾配ＬＳ４’’を表す。図１９は、Ｐ１を起点とする場合のＰ４の上限勾配ＵＳ４および下限勾配ＬＳ４を表す。図２０は、Ｐ１’を起点とする場合のＰ４の上限勾配ＵＳ４’および下限勾配ＬＳ４’を表す。
【００７１】
Ｐ４についても、以下のように最大上限勾配および最小下限勾配が求められる。
ＭａｘＵＳ＝Ｍａｘ（ＵＳ４，ＵＳ４’，ＵＳ４’'）
ＭｉｎＬＳ＝Ｍｉｎ（ＬＳ４，ＬＳ４’，ＬＳ４’'）
【００７２】
ここで、Ｐ４（旧次点データ）の最小下限勾配および最大上限勾配を、それぞれＭｉｎＬＳ４およびＭａｘＵＳ４とする。Ｐ５（旧次点データ）の最小下限勾配および最大上限勾配を、それぞれＭｉｎＬＳ５およびＭａｘＵＳ５とする。選択部１１２−２は、ＭｉｎＬＳ４、ＭａｘＵＳ４、ＭｉｎＬＳ５およびＭａｘＵＳ５を以下の条件に従い比較し、条件を満たすか否かを表す判定値を算出する。
「ＭａｘＵＳ４＜ＭｉｎＬＳ５」  ∨  「ＭｉｎＬＳ４＞ＭａｘＵＳ５」
【００７３】
この条件は、「Ｐ４での最大上限勾配がＰ５での最小下限勾配より小さい、または、Ｐ４での最小下限勾配がＰ５での最大上限勾配より大きい」ことを表している。このような場合は、Ｐ４に対する許容誤差範囲とＰ５に対する許容誤差範囲とが重ならないことが明らかである。このため、起点候補それぞれについて勾配を算出する処理等をスキップし、すべての起点候補が無効化されたものとして処理を進めることができる。すなわち、不要な計算を回避することによる計算量の削減が実現できる。
【００７４】
次に、このように構成された第２の実施形態にかかるデータ圧縮装置１００−２によるデータ圧縮処理について図２１を用いて説明する。図２１は、第２の実施形態におけるデータ圧縮処理の全体の流れを示すフローチャートである。
【００７５】
ステップＳ２０１からステップＳ２０３までは、第１の実施形態にかかるデータ圧縮装置１００におけるステップＳ１０１からステップＳ１０３までと同様の処理なので、その説明を省略する。
【００７６】
本実施形態では、選択部１１２−２が、上述のような判定値を算出する（ステップＳ２０４）。選択部１１２−２は、判定値が真であるか否かを判断する（ステップＳ２０５）。偽の場合（ステップＳ２０５：Ｎｏ）、各起点候補に対する処理を行う（ステップＳ２０６〜ステップＳ２１４）。ステップＳ２０６〜ステップＳ２１４は、第１の実施形態のステップＳ１０４〜ステップＳ１１２までと同様の処理なので、その説明を省略する。
【００７７】
判定値が真の場合（ステップＳ２０５：Ｙｅｓ）、選択部１１２−２は、ステップＳ２０６〜ステップＳ２１４を実行せず、ステップＳ２１５に遷移する。ステップＳ２１５からステップＳ２１７は、第１の実施形態のステップＳ１１３〜ステップＳ１１５までと同様の処理なので、その説明を省略する。
【００７８】
このように、第２の実施形態にかかるデータ圧縮装置では、間引き計算を省略するフィルタ処理をさらに実行する。このため、複数の起点を用いることによる計算量の増加を抑制することができる。
【００７９】
次に、第１または第２の実施形態にかかるデータ圧縮装置のハードウェア構成について図２２を用いて説明する。図２２は、第１または第２の実施形態にかかるデータ圧縮装置のハードウェア構成を示す説明図である。
【００８０】
第１または第２の実施形態にかかるデータ圧縮装置は、ＣＰＵ（Central  Processing  Unit）５１などの制御装置と、ＲＯＭ（Read  Only  Memory）５２やＲＡＭ（Random  Access  Memory）５３などの記憶装置と、ネットワークに接続して通信を行う通信Ｉ／Ｆ５４と、各部を接続するバス６１を備えている。
【００８１】
第１または第２の実施形態にかかるデータ圧縮装置で実行されるデータ圧縮プログラムは、ＲＯＭ５２等に予め組み込まれて提供される。
【００８２】
第１または第２の実施形態にかかるデータ圧縮装置で実行されるデータ圧縮プログラムは、インストール可能な形式又は実行可能な形式のファイルでＣＤ−ＲＯＭ（Compact  Disk  Read  Only  Memory）、フレキシブルディスク（ＦＤ）、ＣＤ−Ｒ（Compact  Disk  Recordable）、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録して提供されるように構成してもよい。
【００８３】
さらに、第１または第２の実施形態にかかるデータ圧縮装置で実行されるデータ圧縮プログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、第１または第２の実施形態にかかるデータ圧縮装置で実行されるデータ圧縮プログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。
【００８４】
第１または第２の実施形態にかかるデータ圧縮装置で実行されるデータ圧縮プログラムは、コンピュータを上述したデータ圧縮装置の各部として機能させうる。このコンピュータは、ＣＰＵ５１がコンピュータ読取可能な記憶媒体からデータ圧縮プログラムを主記憶装置上に読み出して実行することができる。
【００８５】
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化することができる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成することができる。例えば、実施形態に示される全構成要素からいくつかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせても良い。
【符号の説明】
【００８６】
１００  データ圧縮装置
１０１  受付部
１１０  登録部
１１１  生成部
１１２  選択部
１１３  圧縮部
１１４  検索部
１２１  記憶部
【要約】
データ圧縮装置は、受付部と生成部と選択部と圧縮部とを備える。受付部は、時系列に入力される複数の入力データを受付ける。生成部は、第１時刻に入力された入力データである起点データに対する誤差が閾値以内のデータである複数の起点候補を生成する。選択部は、起点候補と、第２時刻に入力された入力データである終点データと、第１時刻と前記第２時刻との間の時刻に入力された入力データである中間データと、を用いて、起点候補のうち、起点候補と終点データとによって誤差が閾値以内となるように近似される中間データの個数が、他の起点候補より大きい起点候補を選択する。圧縮部は、選択された起点候補と終点データとを、起点データと中間データと終点データとを圧縮した出力データとして出力する。【図１】
0005622967.tif 000002
【図２】
0005622967.tif 000003
【図３】
0005622967.tif 000004
【図４】
0005622967.tif 000005
【図５】
0005622967.tif 000006
【図６】
0005622967.tif 000007
【図７】
0005622967.tif 000008
【図８】
0005622967.tif 000009
【図９】
0005622967.tif 000010
【図１０】
0005622967.tif 000011
【図１１】
0005622967.tif 000012
【図１２】
0005622967.tif 000013
【図１３】
0005622967.tif 000014
【図１４】
0005622967.tif 000015
【図１５】
0005622967.tif 000016
【図１６】
0005622967.tif 000017
【図１７】
0005622967.tif 000018
【図１８】
0005622967.tif 000019
【図１９】
0005622967.tif 000020
【図２０】
0005622967.tif 000021
【図２１】
0005622967.tif 000022
【図２２】
0005622967.tif 000023