以下、図面を参照して、実施形態について説明する。実施形態では、ケンドールの順位相関係数を用いて、時系列データ同士の類似度が演算されるものとする。時系列データは、各時刻における値を表すデータである。図1の例では、比較対象の時系列データは、データ1とデータ2とであるものとする。
図1の例の場合、データ1およびデータ2のデータサイズは「4」であるものとする。以下、データサイズを項目数と称することもある。データサイズ(項目数)は、時系列データの各時刻における値の数である。
ケンドールの順位相関係数を用いて類似度の演算が行われる場合、比較対象の2つの時系列データの異なる時刻間の値の大小関係の一致数に基づいて、上記の類似度の演算が行われる。
例えば、時刻(図1では項目と表記)「T3」におけるデータ1の値は「7.2」であり、時刻「T4」における値より大きい。時刻「T3」におけるデータ2の値は「2.2」であり、時刻「T4」における値より大きい。この場合、データ1とデータ2との間の、時刻「T3」と時刻「T4」との大小関係は一致する。
ケンドールの順位相関係数を用いた類似度tは以下の式(A)で表される。
t=(4×P/n×(n−1))−1・・・式(A)
以下、類似度を相関値と称することもある。式(A)のうち、Pはデータ1とデータ2との大小関係が一致する数(一致数)である。nは項目数である。図1の例の場合、項目数nは「4」である。
図1の例の場合、データ1とデータ2との大小関係が一致する数は「4」であるため、「P=4」である。従って、項目数nおよび一致数Pを式(A)に当て嵌めると、類似度tは「t=(4×4×/(4×(4−1))=0.33」となる。
<データ処理装置の一例>
図2は、実施形態のデータ処理装置1の一例を示す。データ処理装置1は、記憶部11と検出部12と計数部13と演算部14と差分処理部15とを含む。データ処理装置1は、コンピュータの一例である。
記憶部11は、各種の情報を記憶する。例えば、記憶部11は、複数の時系列データを記憶する。複数の時系列データは、例えば、それぞれ異なるセンサが計測したデータであってもよいし、異なる商品の売り上げの経時的な変化を示すデータ等であってもよい。
検出部12は、記憶部11に記憶された複数の時系列データのうち、比較対象の2つの時系列データにおいて、時間差ごとに、時刻間の大小関係が変化する変化点を検出する。計数部13は、検出部12が検出した変化点に基づいて、2つの時系列データの大小関係が一致する数を一致数として計数する。
演算部14は、計数部13が計数した一致数Pおよび項目数nを上述した式(A)に当て嵌めて、2つの時系列データの類似度tを演算する。差分処理部15は、2つの時系列データのうち比較対象の期間をずらす処理や、該期間がずらされた場合における各種の処理を行う。
<データ処理装置のハードウェア構成の一例>
次に、図3の例を参照して、データ処理装置1のハードウェア構成の一例を説明する。図3の例に示すように、バス100に対して、プロセッサ111とRandom Access Memory(RAM)112とRead Only Memory(ROM)113と補助記憶装置114と媒体接続部115と通信インタフェース116とが接続されている。
プロセッサ111は任意の処理回路である。プロセッサ111はRAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態の処理を行うデータ処理プログラムが適用されてもよい。ROM113はRAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。
補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等を補助記憶装置114に適用してもよい。媒体接続部115は、可搬型記録媒体119と接続可能に設けられている。
可搬型記録媒体119としては、可搬型のメモリや光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD)等)を適用してもよい。この可搬型記録媒体119に実施形態の処理を行うプログラムが記録されていてもよい。
データ処理装置1のうち、記憶部11は、RAM112や補助記憶装置114等により実現されてもよい。検出部12と計数部13と演算部14と差分処理部15とは与えられたデータ処理プログラムをプロセッサ111が実行することにより実現されてもよい。
RAM112、ROM113、補助記憶装置114および可搬型記録媒体119は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<類似度の演算の手法の一例>
実施形態では、演算部14は、2つの時系列データの類似度を複数種類の手法で演算する。図4は、以下の(1)〜(3)の3種類の類似度の演算の手法の例を示す。
(1)は、4つの時系列データの同じ期間の類似度の演算を行う例を示す。図4の例では、「4つのデータの比較」として示される。この場合、演算部14は、4つの時系列データのうち、2つの時系列データのペアについて、各ペアの類似度の演算を行う。比較対象となる時系列データの数は4つには限定されない。
(2)は、2つの時系列データの双方について、比較対象の期間がずらされながら、2つの時系列データの類似度の演算が行われる例を示す。
を行う例を示す。
(3)は、2つの時系列データのうち一方が固定され、比較対象の片方の期間がずらされながら、2つの時系列データの類似度の演算が行われる例を示す。
(1)乃至(3)において、2つの時系列データの全ての時刻が、一致数の計数の対象であってもよいし、2つの時系列データのうち一部の期間が、一致数の計数の対象であってもよい。
以下、一致数の計数の対象となる期間をウィンドウと称する。(2)において、差分処理部15は、2つの時系列データの双方のウィンドウを1回ずらすごとに、一致数の変化量を求める。
差分処理部15がウィンドウをずらす場合、該ウィンドウは、時系列データの1つ後ろの時刻にずらされる(移動される)。ウィンドウは、比較対象の時間帯の最初の時刻を始点にセットされ、1つ後ろの時刻にずらされる。(3)の場合も同様である。
<変化点の検出の一例>
図5は、時系列データの変化点検出の一例を示す。図5の例では、時刻「1」から「10」までの各値がデータ1の時系列データとして示される。時系列データは、記憶部11に記憶される。
検出部12は、時間差ごとに、時系列データの各時刻について前後の時刻の値の大小関係を比較し、大小関係が変化する変化点(変化する時刻)を検出する。実施形態では、時間差に応じて、次の時刻の値から見て、前の時刻の値が小さい場合、大小関係は「−」とする。
また、実施形態では、時間差に応じて、次の時刻の値から見て、前の時刻の値が大きい場合、大小関係は「+」とする。例えば、図5の例において、時間差が「2」の場合、時刻「1」の値と時刻「3」の値とでは、時刻「3」の値が大きい。よって、時間差「2」における、時刻「1」の大小関係は「−」となる。
一方、時間差が「2」の場合、時刻「3」の値と時刻「5」の値とでは、時刻「5」の値が小さい。よって、時間差「2」における、時刻「3」の大小関係は「+」となる。従って、図5の例の場合、時間差が「2」の場合、時刻「3」において、大小関係が変化する。
検出部12は、時間差ごとに、前後の時刻の大小関係が変化する変化点を検出し、検出された変化点を示すデータを変化点データとして記憶部11に記憶する。検出部12は、検出された変化点を示す情報が、時刻と大小関係とで表現された形式の変化点データを記憶部11に記憶する。
例えば、図5の例の場合、検出部12は、時間差が「2」、時刻「3」において、大小関係が「+」に変化することを検出する。検出部12は、時間差が「2」に対応する変化点データを「3+」の形式で記憶部11に記憶する。
図5の例において、2次元のマトリクス(2次元表と称されることもある)が示される。図5以降のマトリクスでは、時系列データの各時刻における値はX方向およびY方向に展開される。該マトリクスの要素は、各時間差における時系列データの各時刻の大小関係を表す。
マトリクスにおいて、実線は大小関係が「+」であることを示し、点線は大小関係が「−」であることを示す。
図5以降のマトリクスは、大小関係を視覚化したイメージである。該マトリクスでは、時間差ごとの各時刻における大小関係が記述される。従って、大小関係の情報量が多くなり、計数部13が、大小関係の一致数をカウントする場合の処理時間が長くなる。
従って、実施形態では、計数部13は、図5以降に例示されるマトリクスを使用することなく、大小関係の一致数をカウントする。実施形態では、計数部13は、変化点データに基づいて、大小関係の一致数をカウントする。
図5以降のマトリクスにおいて、斜め方向の各要素は、1つの時間差についての大小関係を示す。斜め方向の各要素の始点がX方向にずれるごとに、時間差が大きくなる。図5の例の場合、X方向の時刻「3」、Y方向の時刻「1」を始点とした斜め方向の各要素が時間差「2」における大小関係を表す(図5における一点鎖線)。
図5のマトリクスの例を参照すると、時間差が「2」の場合、Y方向における時刻「1」、「3」および「7」において、大小関係が変化する。検出部12は、時系列データを検索して、時間差「2」における変化点データを検出する。
図6は、時間差「2」の場合における変化点の検出の一例を示す。図6の例では、説明のため、マトリクスを用いた変化点の検出の例を示すが、検出部12は、マトリクスを用いずに、変化点の検出を行う。
時間差「2」の最初の変化点(図6の例において初期値)は「1−」である。検出部12は、最初の変化点から次の変化点までの間の区間(ブロック)が分離されているか否かを判定する。この区間は、図6の例において、X方向の時刻「3」から「5」、およびY方向の時刻「1」から「3」である。
区間が分離されているか否かは、該区間のX方向における値の範囲とY方向における値の範囲との間で値が重複するか否かにより決定される。この区間のX方向の値の範囲は「7.5」から「4.5」であり、且つY方向の値は「2.1」から「7.5」である。
この場合、値「4.5」から「7.5」が重複する。従って、検出部12は、上記の区間は、「分離されていない」区間と判定し、変化点を検出する。一方、検出部12は、「分離されている」区間、同じ単調減少区間および同じ単調増加区間については、変化点の検出を行わない。
単調増加区間は、時系列データの値が減少することなく増加する区間である。単調減少区間は、時系列データの値が増加することなく減少する区間である。同じ単調増加区間および同じ単調減少区間には、変化点が存在しないためである。
「分離されていない」区間については、区間のサイズが大きい場合、検出部12は、該区間を複数に分割して、変化点の検出を行ってもよい。
<ウィンドウをずらさない場合の類似度の演算の一例>
データ1とデータ2との大小関係の一致数の一例について説明する。図7の例において、データ1とデータ2との2つの時系列データは記憶部11に記憶される。計数部13は、2つの時系列データを比較して、大小関係の一致数をカウントする。
図7の例の場合、データ1の比較対象の期間(ウィンドウ)は、時刻「2」から「6」であり、データ2のウィンドウは、時刻「4」から「8」である。従って、ウィンドウの範囲は「5」である。以下、ウィンドウ範囲を期間幅と称することもある。ウィンドウ範囲は、一致数を計数する期間の一例である。
図8は、図7の例に示した2つのデータの一致数のカウントの一例を示す。計数部13は、データ1およびデータ2のそれぞれの期間幅(ウィンドウ)を対象として、大小関係の一致数をカウントする。
比較対象は、時系列データの値の大小関係であるため、計数部13は、期間幅から「1」を減算した範囲内の大小関係を比較する。データ1とデータ2とでは、先頭の時刻が異なる。
計数部13は、先頭の時刻から順に大小関係の一致数をカウントする。計数部13は、データ1とデータ2との先頭の時刻を揃えるため、インデックスを用いる。記憶部11には、データ1およびデータ2の時間差ごとの変化点データが記憶される。
計数部13は、インデックスを揃えるため、データ1およびデータ2の変化点データの各値から、先頭の時刻から「1」を減算した値を減算する。例えば、計数部13は、データ1の変化点データの各値から「2−1=1」を減算する。また、計数部13は、データ2の変化点データの各値から「4−1=3」を減算する。
これにより、データ1とデータ2との始点がインデックスにより揃えられる。計数部13は、ウィンドウ範囲「1」から「3」までの間におけるデータ1とデータ2との一致数をカウントする。
インデックス1における大小関係は、データ1およびデータ2の双方とも「−」である。よって、両者の大小関係は一致するため、計数部13は、大小関係の一致数を加算(インクリメント)する。大小関係の一致数の初期値はゼロである。
インデックス2における大小関係は、データ1は「+」に変化し、データ2は「−」である。インデックス3における大小関係は、データ1は「+」であり、データ2は「−」である。これらの場合、両者の大小関係は一致しないため、大小関係の一致数は変化しない。
従って、計数部13は、ウィンドウ範囲内における大小関係の一致数を「1」としてカウントする。計数部13は、時間差「1」、「3」および「4」について、時間差「2」と同様に、データ1とデータ2との大小関係の一致数をカウントする。
図8の例の場合、一致数の合計は「2」である。この一致数の合計「2」が、上述した式(A)における一致数Pである。演算部14は、ウィンドウ範囲の項目数n(n=5)および一致数P(P=8)を上述した式(A)に当て嵌めて、類似度t=「−0.60」を得る。
<双方のウィンドウをずらす場合の類似度の演算の一例>
次に、データ1およびデータの2の双方のウィンドウをずらす場合の類似度の演算の例について説明する。上述したように、計数部13は、図8の例で示されるウィンドウにおけるデータ1とデータ2との大小関係の一致数をカウントする。この場合、一致数Pは「2」である。
差分処理部15は、データ1とデータ2とのそれぞれのウィンドウを時間軸方向に1つだけ後ろにずらす。計数部13は、ウィンドウの範囲内に変化点が入ったか否か、および該ウィンドウの範囲内から変化点が出たか否かに基づいて、データ1とデータ2との大小関係の一致数をカウントする。
図9以降、実線で囲まれたウィンドウ範囲はウィンドウがずらされる前の範囲を示し、点線で囲まれたウィンドウ範囲はウィンドウがずらされた後の範囲を示す。
図9の例の場合、差分処理部15がウィンドウをずらすことにより、一致数が2つ増え、且つ2つ減る。従って、一致数の変化量は「0=2−2」である。ウィンドウがずらされる前の一致数Pは「2」であったため、計数部13は、一致数Pが「2=2+0」としてカウントする。
図10の例は、マトリクスにおいて、ウィンドウの位置が変化した場合、変化点がウィンドウから出る場合と、ウィンドウに入る場合とを示す。上述したように、マトリクスは、時系列データの大小関係のイメージである。
図10以降、基準のウィンドウは、差分処理部15によりずらされる前のウィンドウを示す。更新後のウィンドウは、差分処理部15によりずらされた後のウィンドウを示す。
図11の例において、データ1における基準ウィンドウ内の前端(X方向の時刻「6」、Y方向の時刻「2」から「6」)の大小関係は全て「+」である。データ2における基準ウィンドウ内の先端(X方向の時刻「8」、Y方向の時刻「4」から「8」)の大小関係は全て「−」である。
従って、ウィンドウがずらされる前における該ウィンドウ内の先端における大小関係の一致数はゼロである。
データ1における基準ウィンドウ外の後端(Y方向の時刻「1」、X方向の時刻「2」から「6」)の大小関係は全て「−」である。データ1における基準ウィンドウ外の後端(Y方向の時刻「3」、X方向の時刻「4」から「8」)の大小関係は全て「−」である。
従って、ウィンドウがずらされる前における該ウィンドウ外の後端における大小関係の一致数は「4」である。一致数の変化量は、「−4=0−4」となる。
ウィンドウがずらされた際に、変化点がウィンドウに出入りしなければ、一致数の変化量は一定である。一方、ウィンドウがずらされた際に、変化点がウィンドウに出入りする場合、一致数の変化量は変化する。
図11の例の場合、ウィンドウがずらされた後(更新後)の一致数は「2」になる。図12の例を参照して、ウィンドウがずらされる際に、該ウィンドウに変化点が含まれる場合の例について説明する。
差分処理部15は、データ1およびデータ2のウィンドウをずらす。差分処理部15は、変化点データを参照して、ウィンドウがずらされたことにより、変化点が該ウィンドウに出入りするかを判定する。
差分処理部15は、データ1とデータ2との時系列データのウィンドウをずらした際に、変化点データで特定される変化点が該ウィンドウに出入りする場合、該変化点の大小関係を反転させる。
図12の例の場合、ウィンドウがずらされる前、時間差「1」および「2」のウィンドウ内前端の大小関係は「×」であった。ウィンドウがずらされることにより、時間差「1」および「2」のウィンドウ内前端に変化点が入る。従って、差分処理部15は、時間差「1」および「2」における変化点の大小関係を反転させる。
また、ウィンドウがずらされる前、時間差「3」および「4」のウィンドウ外後端の大小関係は「○」であった。ウィンドウがずらされることにより、時間差「3」および「4」のウィンドウ外後端から変化点が出る。従って、差分処理部15は、時間差「3」および「4」における変化点の大小関係を反転させる。
その結果、データ1とデータ2とのウィンドウ内前端の一致数は「2」になり、ウィンドウ外後端の一致数は「2」になる。従って、差分処理部15は、一致数の変化量「0=2−2」を得る。ウィンドウがずらされる前の一致数は「2」であったため、差分処理部15は、一致数「2=2+0」を得る。
次に、図13の例を参照して、ウィンドウに対する変化点の位置関係を示す管理テーブルの一例について説明する。検出部12は、データ1およびデータ2の大小関係が変化する変化点を検出する。実施形態では、管理テーブルは記憶部11に記憶される。
また、上述したように、データ1およびデータ2の双方のウィンドウがずれる場合、ウィンドウに入る変化点、およびウィンドウから出る変化点に基づいて、ウィンドウの範囲内の大小関係の一致数が得られる。
そして、得られた一致数Pに基づいて、演算部14が上述した式(A)に基づいて演算を行うことにより、ウィンドウがずれるごとに、2つの時系列データの類似度が演算される。
検出部12は大小関係の変化点を検出する。計数部13は、ウィンドウと変化点との位置関係を管理する。実施形態では、図13の例に示す管理テーブルにより、差分処理部15は、ウィンドウと変化点との位置関係を管理する。
例えば、データ2において、ウィンドウがずれる前(更新前)は、変化点9番および10番は、ウィンドウの範囲内に入っていない。ただし、次の時間でウィンドウがずれることにより(更新後)、変化点9番および10番は、ウィンドウの範囲内に入る。
ウィンドウの移動方向前端および移動方後端のそれぞれについて、変化点がウィンドウに入るか、または変化点がウィンドウから出るかが管理される。計数部13は、この管理テーブルに基づいて、ウィンドウに入る変化点およびウィンドウから出る変化点を認識することができる。
これにより、計数部31は、管理テーブルを参照するだけで、ウィンドウの位置の変化に応じた一致数の変化量を認識でき、ウィンドウの位置が変化した後の、データ1とデータ2との大小関係の一致数を簡単に得ることができる。
図13の例において、差分処理部15は、時系列データと変化点データとに基づいて、各変化点とウィンドウとの位置関係を認識する。図13の例では、差分処理部15は、ウィンドウ内後端から出る変化点とウィンドウ内前端に位置する変化点とをテーブルを用いて管理する。このテーブルを管理テーブルと称する。
管理テーブルは、変化点ごとに、ウィンドウ内前端またはウィンドウ外後端に到達するまでの時間(到達時間)を示すテーブルである。到達時間は、ウィンドウ内前端またはウィンドウ外後端に到達するまでに、ウィンドウがずらされる回数を示す。
図13の例の場合、ウィンドウがずれた後、変化点9番および10番は、ウィンドウに入る。また、ウィンドウがずれた後、変化点1番および2番は、ウィンドウから出る。よって、差分処理部15は、変化点1番、2番、9番および10番を到達時間ゼロとして、管理テーブルを用いて管理する。
従って、差分処理部15は、管理テーブルを用いて、ウィンドウと各変化点との位置関係を管理することで、ウィンドウに出入りする変化点を容易に認識することができる。差分処理部15は、ウィンドウがずれた後における一致数の変化量を求める。
この際、差分処理部15は、ウィンドウをずらした際に、管理テーブルを参照するだけで、ウィンドウに出入りする変化点を容易に認識することができ、一致数の変化量を迅速に求めることができる。
<片方のウィンドウをずらす場合の類似度の演算の一例>
次に、データ1とデータ2とのうち片方のウィンドウを固定し、他方のウィンドウをずらす場合における類似度の演算について説明する。上述したように、ウィンドウがずらされる前におけるデータ1とデータ2との大小関係の一致数Pは「2」である。
片方のウィンドウがずらされる場合、計数部13は、ウィンドウの移動方向前端および移動方向後端の一致数の変化量だけでなく、ウィンドウ内での変化点の位置関係も考慮して、データ1とデータ2との大小関係をカウントする。
図14の例では、データ1のウィンドウは固定され(固定ウィンドウ)、データ2のウィンドウがずらされる。ウィンドウ内の相対位置を基準に見ると、ウィンドウがずらされるごとに、データ1のウィンドウ内の変化点とデータ2のウィンドウ内の変化点との相対位置関係が変化する。
データ1の固定ウィンドウ内の変化点は固定されているため、データ2のウィンドウ内の変化点が、データ1の固定ウィンドウ内の変化点を追い越す場合がある。計数部13は、この追い越しも考慮して、データ1とデータ2との大小関係をカウントする。
図15の例は、データ2のウィンドウ(以下、移動ウィンドウと称することもある)がずらされた後における大小関係の一致数の変化量が「2」である場合を示している。
2つのデータのウィンドウのうち、片方のウィンドウを固定し、片方のウィンドウをずらす場合、大小関係の一致数をカウントするため、差分処理部15は、固定ウィンドウに対して、変化点を追加する。
図16の例に示すように、差分処理部15は、固定ウィンドウに対して、タイプAとタイプBとタイプCとの3つのタイプを設定する。差分処理部15は、タイプに応じて、固定ウィンドウに対して、変化点を追加する。タイプCの場合、差分処理部15は、変化点を追加しない。
タイプAの範囲は、固定ウィンドウ外の前端に設定され、タイプBの範囲は、固定ウィンドウ内の後端に設定される。また、タイプAの範囲とタイプBの範囲とは、同じ時間差の範囲に設定される。
例えば、図16の例の場合、タイプAの範囲は、固定ウィンドウ外の前端であるY方向の時刻「7」、時間差「1」から「4」に設定される。タイプBの範囲は、固定ウィンドウ内の後端であるX方向の時刻「2」、時間差「1」から「4」に設定される。タイプCは、固定ウィンドウ内のタイプBの範囲以外に設定される。
差分処理部15は、タイプAの範囲およびタイプBの範囲に変化点の要素がなければ、該要素を変化点として追加する。この際、差分処理部15は、変化点を追加する要素の大小関係を反転させて、変化点を追加する。
図16の例では、タイプAの範囲に変化点はなく、タイプBの範囲に2つの変化点が存在する。従って、差分処理部15は、大小関係を反転させて、タイプAの範囲に4つの変化点を追加し、タイプBの範囲に2つの変化点を追加する。
図17は、片方のウィンドウをずらす場合の一致数の変化量の一例を示す。差分処理部15は、上述したタイプごとに、変化量の重み付けを行う。図17の例では、タイプAの範囲の各要素において大小関係が一致する場合、重みは「0」であり、大小関係が一致しない場合、重みは「1」である。
タイプBの範囲の各要素において大小関係が一致する場合、重みは「−1」であり、大小関係が一致しない場合、重みは「0」である。タイプCの範囲の各要素において大小関係が一致する場合、重みは「−1」であり、大小関係が一致しない場合、重みは「1」である。
図17の例において、「アンカー」は、変化点のある要素を示す。アンカーには、追加された変化点も含まれる。図17の例において、差分処理部15は、データ1の固定ウィンドウ内の各アンカーにおける大小関係と、データ2のウィンドウにおける対応する点の大小関係とが一致するかを検出する。
図17の例の場合、タイプAの範囲の4つの要素は全て大小関係が一致し、タイプBの範囲の4つの要素は全て大小関係が一致せず、タイプCの範囲の2つの要素は全て大小関係が一致しない。計数部13は、上記の重みに基づいて、大小関係の一致数の変化量を得る。図17の例の場合、大小関係の一致数の変化量は「2(=0+0+2)」である。
次に、図18の例を参照して、変化量の重みについて説明する。図18の例において、薄い網掛けは大小関係が「−」である期間を示し、濃い網掛けは大小関係が「+」であることを示す。
タイプAにおいて、アンカーの位置でデータ1とデータ2との大小関係が一致している場合、データ2のウィンドウがずらされたとしても、ウィンドウ内の一致数は増減しない。従って、この場合の変化量の重みはゼロである。
タイプAにおいて、アンカーの位置でデータ1とデータ2との大小関係が不一致の場合、データ2のウィンドウがずらされると、ウィンドウ内の一致数は1つ増える。従って、この場合の変化量の重みは「1」である。
タイプBにおいて、アンカーの位置でデータ1とデータ2との大小関係が一致している場合、データ2のウィンドウがずらされると、ウィンドウ内の一致数は1つ減る。従って、この場合の変化量の重みは「−1」である。
タイプBにおいて、アンカーの位置でデータ1とデータ2との大小関係が不一致の場合、データ2のウィンドウがずらされたとしても、ウィンドウ内の一致数は増減しない。従って、この場合の変化量の重みはゼロである。
タイプCにおいて、アンカーの位置でデータ1とデータ2との大小関係が一致している場合、データ2のウィンドウがずらされると、ウィンドウ内の一致数は1つ減る。従って、この場合の変化量の重みは「−1」である。
タイプCにおいて、アンカーの位置でデータ1とデータ2との大小関係が不一致の場合、データ2のウィンドウがずらされると、ウィンドウ内の一致数は1つ増える。従って、この場合の変化量の重みは「1」である。
図19は、データ2のウィンドウをずらした後における大小関係の一致数の変化量の一例を示す。図19の例に示されるように、データ2のウィンドウがずらされると、タイプBの2つのアンカーに対応するデータ2のウィンドウ内の点が変化点になる。
この場合、差分処理部15は、上記2つのアンカーを反転させる。図19の例の場合、2つのアンカーの一致関係は不一致であった。差分処理部15は、更新後(データのウィンドウがずらされた後)の2つのアンカーの一致関係を一致に反転させる。
図19の例では、データ2のウィンドウがずらされた結果、データ1とデータ2とで対応する点の大小関係の一致が反転された場合、タイプごとの重みに基づいて、差分処理部15は、大小関係の一致数の変化量を得る。
図19の例に示されるように、タイプAのアンカーが一致から不一致になった場合、重みはゼロから「1」に変化するため、変化量の差分は「1」になる。タイプAのアンカーが一致から不一致になった場合、重みは「1」からゼロに変化するため、変化量の差分は「−1」になる。
タイプBのアンカーが一致から不一致になった場合、重みの変化に基づいて、変化量の差分は「1」になる。タイプBのアンカーが不一致から一致になった場合、重みの変化に基づいて、変化量の差分は「−1」になる。
タイプCのアンカーが一致から不一致になった場合、重みの変化に基づいて、変化量の差分は「2」になる。タイプCのアンカーが不一致から一致になった場合、重みの変化に基づいて、変化量の差分は「−2」になる。
差分処理部15は、各アンカーの変化量の差分を求める。図19の例の場合、タイプBの2つのアンカーが一致から不一致に変化したため、差分処理部15は、大小関係の一致数の変化量から「−2(=−1−1)」を減算する。
上述したように、更新前(データ2のウィンドウをずらす前)の一致数の変化量は「2」であったため、差分処理部15は、更新後(データ2のウィンドウをずらした後)の一致数の変化量「4(=2−(−2))」を得る。
次に、片方のウィンドウをずらす場合における管理テーブルについて説明する。上述したように、管理テーブルは、ウィンドウと変化点との位置関係を管理するテーブルである。図20は、片方のウィンドウをずらす場合における管理テーブルの一例を示す。
差分処理部15は、データ1のアンカーの各要素およびデータ2の各変化点にアドレスを付与する。図20の例では、差分処理部15は、アンカーの各要素のアドレスに対してアルファベットを付与し、データ2の各変化点のアドレスに対して数字を付与する。
例えば、管理テーブルの「4−b」は、データ2の変化点のアドレスが「4」であり、且つアンカーのアドレスが「b」であることを示す。更新前における「4−b」は、データ2のウィンドウがずらされる前のアドレスを示す。
データ2のウィンドウがずらされた場合、差分処理部15は、ウィンドウに入った変化点について、アンカーの付け替えを行うか否かを判定する。差分処理部15は、以下の2つの基準に応じて、アンカーの付け替えを行う。
(1)ウィンドウに入った変化点が1つ前のアンカーに対応する場合
(2)ウィンドウに入った変化点の1つ後ろの変化点が、該変化点のアンカーに対応する場合
図20の例の場合、アドレス「4−b」のうち「b」より前に対応するアンカーはない。従って、差分処理部15は、上記(1)を満たしていないと判定する。また、ウィンドウに入った変化点のアドレス「4−b」の1つ後ろの変化点は「5」である。
ただし、データ2の変化点のアドレス「5」はアンカー「i」に対応する。つまり、差分処理部15は、管理テーブルでは、データ2の変化点のアドレス「5」を「5−i」として管理する。
従って、変化点「4」のアンカーは「b」であり、1つ後ろの変化点「5」のアンカーは「i」であるため、アンカーが対応していない。このため、差分処理部15は、上記(2)の条件が満たされていないと判定する。
<各種具体例の説明>
次に、図21の例に示される3つの時系列データ(データ1からデータ3)について、時系列データの類似度の演算の3つの具体例を説明する。
具体例1(図21の(1))は、データ1とデータ2との間の類似度、データ1とデータ3との間の類似度、およびデータ2とデータ3との間の類似度を演算する例である。類似度の演算の対象となる期間は時刻「2」から「8」である。類似度の演算の対象となる期間は、上述したウィンドウである。
具体例2(図21の(2))は、類似度の演算の対象となる時系列データはデータ1およびデータ2の2つである。具体例2では、類似度の演算の対象となる期間は時刻「1」から「7」および時刻「4」から「10」である。
具体例2では、差分処理部15は、データ1およびデータ2の双方のウィンドウをずらしながら、一致数の変化量を求める。そして、具体例2では、演算部14は、合計4ペアの類似度(相関値)を演算する。
具体例3(図21の(3))は、類似度の演算の対象となる時系列データはデータ1およびデータ2の2つである。具体例3では、類似度の演算の対象となる期間は時刻「3」から「9」および時刻「4」から「10」である。
具体例3では、差分処理部15は、データ1およびデータ2ののうち、データ1のウィンドウを固定し、データ2のウィンドウをずらしながら、一致数の変化量を求める。そして、具体例3では、演算部14は、合計4ペアの類似度(相関値)を演算する。
<具体例1>
図22は、時間差が「1」の場合における変化点の検出の例を示す。図22の例に示される時系列データにおいて、時刻「1」から「3」は値が単調増加し、時刻「3」から「7」は値が単調減少し、「7」から「10」は値が単調減少する。
従って、値の大小関係が変化する時刻は「1」、「3」、「7」および「10」である。図22以降の例において、実線の矢印は、単調増加区間を示し、破線の矢印は単調減少区間を示す。
検出部12は、値の大小関係が変化する時刻に加えて、該時刻の前の時刻を考慮して、変化点を検出する。検出部12は、図23の例のうち、区間「1」から「2」、区間「2」から「3」、区間「3」から「6」、区間「6」から「7」、および区間「7」から「9」を比較処理する対象の区間として、変化点を検出する。
上記の各区間は、図23の例において、「比較元」として表記されており、「比較元」はマトリクスのY方向である。「比較先」は、時間差が「1」であるため、「比較元」の時刻に「1」を加算した時刻になる。「比較先」は、マトリクスのX方向である。
図24は、時刻「1」と時刻「2」との間の時間差の一例を示す。時刻「1」の値は「2.1」であり、時刻「2」の値は「5.3」である。時刻「1」と時刻「2」との間の時間差は初期値である。
時刻「1」の値は、時刻「2」の値より小さいため、時刻「1」と時刻「2」との大小関係は「−」になる。従って、検出部12は、時間差「1」で「1−」を検出する。図24の例のマトリクスでは、Y方向(比較元)の時刻が「1」であり、且つX方向(比較先)の時刻が「2」の点が「−」の変化点となる。
図25は、時刻「1」から「2」の間を比較元とし、時刻「2」から「3」の間を比較先とした場合の変化点の検出の一例を示す。この場合、比較元の時刻「2」の値と比較先の時刻「3」の値とが同じである。
ただし、検出部12は、比較元と比較先とで一致する値が1つの場合、比較元の区間と比較先の区間とは分離されているとみなす。従って、比較元の区間と比較先の区間とは分離されているため、検出部12は変化点を検出しない。
図26は、時刻「2」から「3」の間を比較元とし、時刻「3」から「4」の間を比較先とした場合の変化点の検出の一例を示す。この場合、比較元の区間と比較先の区間とでは、値「6.2」から値「7.5」までが重複する。よって、検出部12は、比較元の区間と比較先の区間とが分離されていないことを検出する。
従って、検出部12は、上記の区間で、大小関係が変化する変化点があれば、該変化点を検出する。図26の例の場合、時刻「3」において、値の大小関係が変化する。つまり、時刻「2」の値は時刻「3」の値より小さいため、大小関係は「−」である。
一方、時刻「3」の値は時刻「4」の値より大きいため、大小関係は「+」である。このため、検出部12は、時刻「3」において、値の大小関係が変化したことを検出する。つまり、検出部12は、時刻「3」を変化点として検出する。検出部12は、変化点データのうち時間差「1」に「3+」を追加する。
次に、図27の例に示されるように、検出部12は、比較元の時刻「3」から「6」の区間および比較先の時刻「4」から「7」の区間で、大小関係が変化する変化点があれば、該変化点を検出する。
比較元の時刻「3」から「6」の区間および比較先の時刻「4」から「7」の区間は、単調減少区間である。よって、この単調減少区間に変化点は存在しない。従って、検出部12は、同じ単調減少区間における変化点の検出をスキップする。
図28は、時刻「6」から「7」の間を比較元とし、時刻「7」から「8」の間を比較先とした場合の変化点の検出の一例を示す。比較元の区間と比較先の区間とは値が重複するため、検出部12は、比較元の区間と比較先の区間とが分離されていないことを検出する。
従って、検出部12は、上記の区間で、大小関係が変化する変化点があれば、該変化点を検出する。図28の例の場合、時刻「7」において、値の大小関係が変化したことを検出する。検出部17は、変化点データのうち時間差「7」に「7−」を追加する。
図29の例において、比較元の時刻「7」から「9」の区間および比較先の時刻「8」から「10」の区間は、単調増加区間である。よって、この単調増加区間に変化点は存在しない。従って、検出部12は、同じ単調増加区間における変化点の検出をスキップする。
次に、時間差が「2」の場合における変化点の検出について説明する。図30の例に示されるように、値の大小関係が変化する時刻は「1」、「3」、「7」および「10」である。
時間差が「2」であるため、「何れかが反転する時刻」は、上記の各時刻から「2」を減算した時刻「−1」、「1」、「5」および「8」である。従って、比較元の区間および比較先の区間は、図30の例に示す区間になる。
時間差が「2」の場合、値の大小関係を比較する対象となる時刻の時間差は「2」である。例えば、図31の例の場合、検出部12は、時刻「1」と時刻「3」との間の値の大小関係を比較する。
この場合、時刻「1」の値は、時刻「3」の値より小さいため、大小関係は「−」になる。検出部12は、時間差「2」の初期値に「1−」を追加する。なお、検出部12は、時間差「1」についての処理が終了した変化点データに、時間差「2」の変化点データを追加する。
図32は、時刻「1」から「3」の間を比較元とし、時刻「3」から「5」の間を比較先とした場合の変化点の検出の一例を示す。比較元の区間と比較先の区間とで値は重複する。従って、検出部12は、この区間で変化点があれば、該変化点を検出する。
検出部12は、変化点を検出する区間を分割してもよい。図32の例では、検出部12は、上記の区間を2つに分割し、それぞれの区間で変化点を検出する。区間が大きい場合、検出部12は、1つの区間から変化点の検出を行うよりも、分割された小サイズの区間から変化点の検出を行う方が効率的な場合がある。
図32の例の場合、検出部12は、上記の区間を2つの区間に分割する。1つ目の区間は、比較元の時刻が「1」から「2」であり、比較先の時刻が「3」から「4」の区間である。2つ目の区間は、比較元の時刻が「2」から「3」であり、比較先の時刻が「4」から「5」の区間である。
1つ目の区間では、値の大小関係に変化がないため、検出部12は、変化点を検出しない。2つ目の区間では、時刻「3」において、値の大小関係が変化する。このため、検出部12は、2つ目の区間で変化点を検出する。従って、検出部12は、時間差「2」の変化点データに「3+」を追加する。
図33は、時刻「3」から「5」の間を比較元とし、時刻「5」から「7」の間を比較先とした場合の変化点の検出の一例を示す。この区間は、単調減少区間であるため、変化点は存在しない。従って、検出部12は、同じ単調減少区間における変化点の検出をスキップする。
図34は、時刻「5」から「7」の間を比較元とし、時刻「7」から「9」の間を比較先とした場合の変化点の検出の一例を示す。この区間は、値が分離されていない。よって、検出部12は、この区間に変化点があれば、該変化点を検出する。
図34の例では、検出部12は、上記の区間を2つに分割する。1つ目の区間は、時刻「5」から「6」の間が比較元であり、時刻「7」から「8」の間が比較先である。2つ目の区間は、時刻「6」から「7」の間が比較元であり、時刻「8」から「9」の間が比較先である。
1つ目の区間では、値の大小関係は変化しない。よって、検出部12は、1つ目の区間から変化点を検出しない。2つ目の区間では、時刻「7」において値の大小関係が変化する。検出部12は、時刻「7」を変化点として検出し、時間差「2」の変化点データに「7−」を追加する。
図35は、時刻「7」から「8」の間を比較元とし、時刻「9」から「10」の間を比較先とした場合の変化点の検出の一例を示す。この区間は、同じ単調増加区間であるため、検出部12は、変化点を検出しない。従って、変化点の検出はスキップされる。
検出部12は、時間差「3」から「9」まで上述した処理を繰り返す。これにより、検出部12は、図36の例に示されるような変化点データを生成する。計数部13は、変化点データに基づいて、大小関係の一致数をカウントし、演算部14は、2つの時系列データの類似度を演算する。
例えば、比較対象の時系列データのそれぞれについて、時間差ごとの大小関係を全て記憶する場合、記憶する大小関係の情報量は多くなる。このため、大小関係の一致数をカウントする処理に長い時間がかかり、類似度の演算時間も長くなる。
また、比較対象の時系列データのそれぞれについて、時間差ごとの値の大小関係を全て記憶する場合、記憶する情報量が多くなる。
上述したように、検出部12は、時系列データの変化点を記憶部11に記憶する。計数部13は、該変化点に基づいて、大小関係の一致数をカウントし、演算部14は、大小関係の一致数Pに基づいて、時系列データ同士の類似度の演算を行う。
演算部14は、大小関係の変化点に基づいてカウントされた大小関係の一致数Pを用いて、時系列データ同士の類似度の演算を行うため、時間差ごとの全ての大小関係に基づいて演算を行う場合と比較して、演算する対象の情報が少なくなる。このため、類似度の演算を行うための演算時間が短くなる。
また、時系列データの時間差ごとの大小関係を全て記憶する場合と比較すると、大小関係の変化点のみを示す変化点データを記憶する方が、記憶する情報量が少なくなる。さらに、検出部12は、同じ単調増加区間や同じ単調減少区間等をスキップして変化点を検出するため、変化点を迅速に検出することができる。
図37は、データ2およびデータ3の変化点データの例を示す。検出部12は、上述したデータ1の場合と同様に、データ2およびデータ3の変化点を検出し、変化点データを記憶部11に記憶する。
次に、時刻「2」から「8」までの間におけるデータ1とデータ2との大小関係の一致数について説明する。図38は、データ1およびデータ2の変化点データと、それぞれのマトリクスとの一例を示す。
計数部13が、時刻「2」から「8」までの間におけるデータ1とデータ2との大小関係の一致数をカウントする場合、ウィンドウ範囲は「7」である。従って、図39の例に示されるように、一致数をカウントする対象は、時間差「1」から「6」の間である。
データ1は「D1」と表記され、データ2は「D2」と表記される。計数部13は、データ1とデータ2との間の大小関係の一致数をカウントするため、ウィンドウの端が「1」になるようにオフセットを求める。
データ1およびデータ2のウィンドウは、時刻「2」から始まるため、データ1のオフセットも、データ2のオフセットも「1(=2−1)」になる。上述したように、時間差が「1」の場合、ウィンドウ範囲は、時刻「1」から「6(=7−1)」になる。
図40の例に示されるように、類似度の演算の対象となる2つの時系列データのそれぞれについて、変化点を示すテーブルを変化点テーブルと称する。変化点テーブルの各項目には、変化点の情報が格納される。各項目の括弧には、変化点の値からオフセットの値を減じた値が格納されてもよい。
図40の例には、データ1およびデータ2のマトリクスが示される。図40の例において、2つのマトリクスの間には、時間差に応じた変化点のY方向に対応する位置が示される。一点鎖線は、ウィンドウ範囲を示す。
図41は、データ1の変化点「1−」とデータ2の変化点「1−」との比較の例を示す。データ1およびデータ2の変化点「1−」は、ウィンドウ範囲から外れている。図41の例において、2つのマトリクスの間の点線で囲まれた2つの変化点が、データ1の変化点「1−」およびデータ2の変化点「1−」である。
これら2つの変化点は、大小関係の一致数をカウントする対象となるウィンドウ範囲から外れている。よって、計数部13は、これら2つの変化点については、大小関係が一致するかを判定しない。つまり、図41の例の時点での一致数は「0」である。
また、計数部13は、変化点テーブルのうち、データ1の変化点「1−」の項目およびデータ2の変化点「1−」の項目の括弧に、変化点の値からオフセットの値を減じた値を格納する。
図41は、データ1の変化点「1−」とデータ2の変化点「1−」との比較の例を示す。データ1およびデータ2の変化点「1−」は、ウィンドウ範囲から外れている。図41の例において、2つのマトリクスの間の点線で囲まれた2つの変化点が、データ1の変化点「1−」およびデータ2の変化点「1−」である。
これら2つの変化点は、大小関係の一致数をカウントする対象となるウィンドウ範囲から外れている。よって、計数部13は、これら2つの変化点については、大小関係が一致するかを判定しない。つまり、図41の例の時点での一致数は「0」である。
計数部13は、大小関係の一致数についての処理が終わると、変化点テーブルの各変化点のうち、インデックスの値が最も低い変化点に、比較対象を移す。よって、次に、比較対象となる変化点は、変化点「2+」である。
図42は、データ1の変化点「1−」とデータ2の変化点「2+」との比較の例を示す。データ1の変化点「1−」は、ウィンドウ範囲から外れている。従って、図42の例の時点での一致数は「0」である。
次に、比較対象となる変化点はデータ1については、変化点「3+」であり、データ2については変化点「3−」である。これら2つの変化点のインデックスは同じ値である。この場合、計数部13は、データ1の変化点およびデータ2の変化点を共に移す。
図43は、データ1の変化点「3+」とデータ2の変化点「3−」との比較の例を示す。計数部13は、データ1とデータ2とのそれぞれについて、変化点における大小関係に基づいて、大小関係の一致数をカウントする。
図43の例の場合、データ1の変化点「3+」のオフセットは「2」であり、データ2の変化点「3−」のオフセットは「2」である。両者の大小関係は一致しない。従って、図43の例の時点での一致数は「0」である。
図44の例は、データ1の比較対象が次の変化点「7−」に移された場合を示す。データ1の変化点「7ー」のオフセットは「6」であり、ウィンドウ範囲内におけるオフセット「6」以前の大小関係は「−」である。
データ2の変化点「3−」のオフセットは「2」であり、ウィンドウ範囲内におけるオフセット「2」以降の大小関係は「−」である。よって、データ1とデータ2との大小関係は、オフセット「6」において一致する。
このため、計数部13は、大小関係の一致数を加算する。大小関係の一致数の初期値はゼロであるため、この時点における大小関係の一致数は「1」である。
図45の例に示されるように、計数部13は、データ2の比較対象を次の変化点「8+」に移す。この時点では、ウィンドウ範囲内におけるデータ1とデータ2との大小関係の比較は終了している。従って、計数部13は、一致数がゼロとして、時間差「1」における大小関係の一致数をカウントする処理を終了する。
次に、時間差「2」の場合における大小関係の一致数について説明する。図46の例において、時間差が「2」であるため、ウィンドウ範囲は「1」から「5」の間になる。
図47は、データ1の変化点「1−」とデータ2の変化点「1−」との比較の例を示す。これら2つの変化点は、ウィンドウ範囲から外れている。よって、計数部13は、これら2つの変化点については、大小関係が一致するかを判定しない。つまり、図47の例の時点での一致数は「0」である。
図48の例に示されるように、データ1の変化点「3+」とデータ2の変化点「3−」とのオフセットは同じである。計数部13は、データ1の変化点「3+」とデータ2の変化点「3−」とに比較対象を移す。
データ1の変化点「3+」のオフセットは「2」であり、ウィンドウ範囲内におけるオフセット「2」以前の大小関係は「+」である。データ2の変化点「3−」のオフセットは「2」であり、ウィンドウ範囲内におけるオフセット「2」以前の大小関係は「−」である。
よって、両者の大小関係は一致しない。計数部13は、大小関係の一致数を加算しない。時間差「2」における大小関係の一致数の初期値はゼロであるため、この時点における大小関係の一致数はゼロである。
図49の例に示されるように、データ1の変化点「7−」とデータ2の変化点「7+」とのインデックスは同じである。計数部13は、データ1の変化点「7−」とデータ2の変化点「7+」とに比較対象を移す。
データ1の変化点「3+」から変化点「7−」までの大小関係は「−」である。データ2の変化点「3−」から変化点「7+」までの大小関係は「+」である。よって、両者の大小関係は一致しないため、計数部13は、大小関係の一致数を加算しない。
従って、この時点における大小関係の一致数はゼロになるため、時間差「2」における一致数はゼロとして処理が終了する。
計数部13は、上述したように、時間差「1」および時間差「2」について、データ1とデータ2との大小関係の一致数のカウントを行う。上述したように、大小関係の一致数のカウントは、大小関係の変化点に基づいて行われる。
計数部13は、時間差「1」および「2」と同様に、時間差「3」から「7」までの大小関係の一致数のカウントを行う。上述したように、データ1とデータ2との類似度の演算を行う対象となる期間は、時刻「2」と「8」の間の期間である。
計数部13は、時間差ごとの一致数を合計する。図50の例の場合、計数部13は、時刻「2」と「8」との間におけるデータ1とデータ2との大小関係の一致数Pが「1」であることを得る。
演算部14は、計数部13がカウントした一致数Pと、時系列データのデータサイズ(項目数=n)とを用いて、上述した式(A)により、時刻「2」と「8」との間におけるデータ1とデータ2との類似度(相関値)を演算する。
一致数Pは「P=1」であり、項目数nは、時刻「2」から「8」までのウィンドウ範囲の時間(項目)の数であるため、「n=7」である。よって、演算部14は、上述した式(A)を用いて演算を行い、類似度「t=(4×1/7×(7−1))−1」を得る。この演算結果は、約「−0.90」となる。
従って、上記のウィンドウ範囲におけるデータ1とデータ2との類似度(相関値)は、約「−0.90」であることが得られる。
具体例1では、演算部14は、データ1とデータ2との類似度だけでなく、データ1とデータ3との類似度、およびデータ2とデータ3との類似度の演算も行う。
図51の例に示されるように、上記のウィンドウ範囲におけるデータ1とデータ3との時間差ごとの大小関係の一致数を合計した値は「11」である。演算部14は、一致数P(P=11)および項目数n(n=7)を用いて、式(A)の演算を行う。演算結果(類似度t)は、約「−0.05」である。
上記のウィンドウ範囲におけるデータ2とデータ3との時間差ごとの大小関係の一致数を合計した値は「9」である。演算部14は、一致数P(P=9)および項目数n(n=7)を用いて、式(A)の演算を行う。演算結果(類似度t)は、約「−0.14」である。
従って、データ1とデータ2とデータ3とのうち2つの時系列データのペアの3組の類似度が得られる。
<具体例2>
具体例2は、比較対象の2つの時系列データにおける双方のウィンドウをずらしながら、2つの時系列データの類似度を演算する例である。図52の例において、変化点テーブルは、順番の項目を含む。順番は、比較対象の変化点の順番を示す。
また、具体例2では、図52の例に示される差分処理テーブルが用いられる。差分処理テーブルは、時間差と一致数と後端の一致と前端の一致と次の後端と次の前端との項目を含む。
時間差は、差分処理の対象となる時間差を示す。一致数は、時間差に応じた2つの時系列データの一致数を示す。後端の一致は、ウィンドウ外の後端における2つの時系列データの大小関係が一致するか否かを示す。前端の一致は、ウィンドウ内の前端における2つの時系列データの大小関係が一致するか否かを示す。
次の後端は、ウィンドウがずらされた後に、次にウィンドウの後端から出る変化点を示す。次の前端は、ウィンドウがずらされた後に、次にウィンドウに入る変化点を示す。
図53の例では、計数部13は、データ1の変化点「1−」とデータ2の変化点「1−」とを対象として、大小関係の一致数をカウントする。データ1は時間「1」で大小関係が「−」に反転する。データ2も時間「1」で大小関係が「−」に反転する。
よって、データ1とデータ2との大小関係は一致するため、計数部13は、一致数を加算する。これにより、一致数は「1」になる。差分処理部15は、差分処理テーブルの一致数を「1」にする。
データ1の変化点「1−」およびデータ2の変化点「1−」は、変化点テーブルにおいて、オフセットが「1」であるため、ウィンドウ外の後端に位置する。また、2つの変化点の大小関係は「−」である。
従って、差分処理部15は、後端の一致の項目を「○」にする。また、データ1の変化点「1−」およびデータ2の変化点「1−」は、ウィンドウがずらされると、ウィンドウから出る。
差分処理部15は、上記2つの変化点を示す情報を変化点テーブルのうち、次の項目に格納する。図53の例では、上記の変化点を示す情報は、データ番号と順番と到達時間との情報を含む。
データ番号は、時系列データを特定する番号を示す。例えば、「D1」はデータ1を示す。順番は、変化点テーブルの順番を示す。
括弧内の到達時間は、変化点がウィンドウから出るまでの時間を示す。ウィンドウが1回ずらされると、時刻が1つ後ろにずれる。例えば、到達時間が「1」の場合、ウィンドウが1回ずらされると、変化点はウィンドウから出ることを示す。
例えば、図53の例において、変化点を示す情報「D1−1(1)」は、該変化点はデータ1の変化点であることを示す。また、該変化点の順番は「1」であることを示し、ウィンドウが1回ずらされると、該変化点はウィンドウから出ることを示す。
次に、データ2の比較の対象が変化点「2+」に移る。ウィンドウ内の2つの時系列データの大小関係が一致するか否かを判定する処理は、具体例1と同様である。図54の例に示されるように、一致数は変化しない。
また、ウィンドウがずらされていないことから、後端の一致および次の後端についても変化はない。よって、図54の例に示されるように、差分処理テーブルの内容に変化はない。
次に、図55の例に示されるように、データ1の比較の対象が変化点「3+」に移り、データ2の比較の対象が変化点「3−」に移る。この場合、2つの変化点のオフセットが同じであるため、データ1の変化点とデータ2の変化点とが共に次に移る。
ウィンドウはずらされておらず、一致数も変化しないことから、差分処理テーブルの内容に変化はない。
次に、図56の例に示されるように、データ1の比較の対象が変化点「7−」に移る。ウィンドウはずらされておらず、一致数も変化しないことから、差分処理テーブルのうち、時間差、一致数、後端の一致および次の後端の項目の情報は変化しない。
差分処理部15は、データ1の比較の対象の変化点「7−」がウィンドウから出たため、データ1の前端とデータ2の前端とが一致するか否かを判定する。データ2はウィンドウの前端に到達していないため、差分処理部15は、差分処理テーブルのうち前端の一致の項目を「×」とする。
また、ウィンドウがずらされた場合、データ1の変化点「7−」がウィンドウに入る。次の前端に格納される変化点を示す情報は、データ番号と順番と到達時間との情報を含む。これらの情報は、次の後端に格納される変化点を示す情報と同様である。
データ1の変化点「7−」の場合、データ番号は「D1」であり、順番は「3」であり、到達時間は「1」である。従って、差分処理部15は、差分処理テーブルのうち次の前端の項目に「D1−3(1)」という情報を格納する。
次に、図57の例に示されるように、データ2の比較の対象が変化点「8+」に移る。ウィンドウはずらされておらず、一致数も変化しないことから、差分処理テーブルのうち、時間差、一致数、後端の一致および次の後端の項目の情報は変化しない。
ウィンドウの前端におけるデータ1の大小関係は「+」であり、データ2の大小関係は「−」である。よって、ウィンドウの前端において、データ1とデータ2とは大小関係が一致しない。差分処理部15は、差分処理テーブルのうち前端の一致の項目を「×」とする。
また、ウィンドウが2回ずらされた場合、データ2の変化点「8+」はウィンドウに入る。よって、差分処理部15は、差分処理テーブルのうち、次の前端の項目に「D2−4(2)」を追加する。
以上により、差分処理部15は、時間差が「1」の場合の差分処理テーブルを生成する。差分処理部15は、時間差が「1」の場合と同様の処理を行い、時間差が「2」から「6」の場合の差分処理テーブルを生成する。
図58は、生成された差分処理テーブルの一例を示す。計数部13は、時間差「1」から「6」までの大小関係の一致数を合計し、一致数P(P=4)を得る。演算部14は、上述した式(A)に、「P=4」、「n=7」を当て嵌めて演算し、類似度(相関値)t(t=−0.62)を得る。
差分処理部15は、時間差「1」から「6」の差分処理テーブルに基づいて、前端の一致の項目の「○」の数を合計する。図58の例の場合、前端の一致の「○」の数の合計は「1」である。また、差分処理部15は、後端の一致の項目の「○」の数を合計する。図58の例の場合、後端の一致の「○」の数の合計は「4」である。
差分処理部15は、前端の一致の「○」の数の合計から後端の一致の「○」の数の合計を減算する。図58の例の場合、減算結果は「−3」になる。この減算結果が、一致数の変化量(図58以降、一致数の変化と表記することがある)である。
ウィンドウがずらされた際に、大小関係の変化点がウィンドウから出入りしなければ、一致数の変化量は一定である。一方、ウィンドウがずらされた際に、大小関係の変化点がウィンドウから出入りする場合、一致数の変化量は変化する。
次に、具体例2における管理テーブルの例について説明する。図59の例に示される差分処理テーブルは、図58の例で示した差分処理テーブルのうち、一致数と後端の一致数と前端の一致との項目を省略して表したテーブルである。
管理テーブルは、到達時間と後端と前端との項目を含む。管理テーブルは、ウィンドウに対する変化点の位置関係を示すテーブルである。後端の項目には、後端に到達するまでの時間ごとに、変化点を示す情報が格納される。前端の項目には、前端に到達するまでの時間ごとに、変化点を示す情報が格納される。
差分処理部15は、差分処理テーブルの次の後端および次の前端に格納された変化点を示す情報と時間差とに基づいて、管理テーブルを生成する。管理テーブルに格納される変化点を示す情報は、時間差とデータ番号と順番との情報を含む。
例えば、図59の例では、時間差「4」における次の後端の項目の変化点を示す情報は「D1−3(3)」である。このうち、「D1」はデータ番号を示し、「3」は順番を示し、括弧内の「3」は到達時間を示す。
差分処理部15は、差分処理テーブルから各変化点を抽出し、括弧内の到達時間に応じて、各変化点を管理テーブルに格納する。例えば、次の前端の変化点を示す情報が「D1−3(3)」である場合、差分処理部15は、管理テーブルの到達時間が「3」の前端の項目に該変化点を示す情報を格納する。
図59の例では、差分処理部15は、変化点を示す情報を、時間差とデータ番号と順番とを含む情報に変換して、管理テーブルに格納する。例えば、上述した次の前端の変化点を示す情報が「D1−3(3)」の場合、時間差は「4」、データ番号は「D1」、順番は「3」である。
差分処理部15は、管理テーブルのうち、到達時間「3」の前端の項目に「4−D1−3」の形式で変化点を示す情報を格納する。差分処理部15は、差分処理テーブルに格納された各変化点を示す情報について同様の処理を行い、図59の例に示すような管理テーブルを記憶部11に記憶する。
図60の例は、データ1およびデータ2の双方のウィンドウがずらされた場合の例を示す。この場合、差分処理部15は、図59の例の管理テーブルの到達時間を1つ繰り上げ、データ1およびデータ2のオフセットをインクリメントする。図60の例の場合、データ1およびデータ2のオフセットの値は「1」になる。
図61は、差分処理部15が管理テーブルを更新する一例を示す。データ1のウィンドウがずれることにより、時間差「1」における変化点「1−」(管理テーブルにおいては、「1−D1−1」で表される)は、ウィンドウの後端から出る。
時間差「1」における変化点「1−」がウィンドウから出たため、差分処理部15は、差分処理テーブルの時間差「1」におけるウィンドウの後端の一致を反転する。図61の例の場合、時間差「1」におけるウィンドウの後端の一致は「○」であったため、差分処理部15は、「○」を「×」に反転する。
上述したように、一致数の変化量は、差分処理テーブルにおける前端の一致の「○」の数の合計値から後端の一致の「○」の数の合計値を減算した値である。ウィンドウがずらされる前の一致数の変化量は「−3」であった。
後端の一致における「○」が「×」に反転した場合、一致数の変化量は増える。図61の例の場合、時間差「1」における後端の一致が「×」に変化したため、一致数の変化量は1つ増える。
時間差「1」における変化点「1−」の次の変化点は「3+」である。この変化点「3+」が次の後端になる。差分処理部15は、この変化点「3+」を管理テーブルに格納する。
変化点「3+」はデータ1の変化点であり、時間差は「1」であり、順番は「2」である。差分処理部15は、変化点「3+」を示す情報を「1−D1−2」の形式で管理テーブルの後端に格納する。
図62は、データ1の時間差「6」における変化点「2+」に着目した場合の管理テーブルの更新の例を示す。ウィンドウがずれることにより、データ1の時間差「6」における変化点「2+」(管理テーブルにおいては、「6−D1−2」で表される)は、ウィンドウの前端から入る。
ウィンドウがずれると、時間差「6」の変化点「−1」は、ウィンドウから出る。従って、データ1の時間差「6」における次の後端は、変化点「2+」になる。また、該変化点「2+」がウィンドウの後端に到達するまでの時間(到達時間)は「1」である。
差分処理部15は、管理テーブルの前端から後端に「6−D1−2」を移動する。また、データ1の時間差「6」における変化点「2+」がウィンドウに入ったため、差分処理部15は差分処理テーブルの時間差「6」における前端の一致を反転させる。
時間差「6」における前端の一致が「×」に反転されたため、一致数の変化量は1つ減る。従って、一致数の変化量は「−3(=−3+1−1)」になる。
差分処理部15は、管理テーブルのうち到達時間がゼロの全ての変化点について、上述した処理を行う。図63は、到達時間がゼロの全ての変化点について処理された管理テーブルの例を示す。差分処理部15は、処理を行った変化点を管理テーブルから削除する。
差分処理部15は、差分処理テーブルの後端の一致および前端の一致の更新を行う。図63の例において、例えば、時間差「1」の後端の一致は、2回反転されるため、更新されない。
ウィンドウがずらされることにより、データ1の時間差「1」の変化点「1−」は、ウィンドウから出る。これにより、差分処理テーブルのうち、該変化点の後端の一致は反転される。
また、データ2の時間差「1」の変化点「1−」も、ウィンドウがずらされることにより、ウィンドウから出る。これにより、差分処理テーブルのうち、該変化点の後端の一致は反転される。
従って、差分処理テーブルのうち、時間差「1」の後端の一致は、2回反転されることになるため、この場合、差分処理部15は、時間差「1」の後端の一致を更新しない。
図63の例の場合、差分処理テーブルのうち、前端の一致の「○」の数の合計と後端の一致の「○」の数の合計とは変化しない。よって、ウィンドウがずらされた後(更新後)の一致数の変化量は「−3」になる。
図64の例に示されるように、差分処理部15は、ウィンドウがずらされる前の一致数「4」に、一致数の変化量「−3」を加算する。これにより、ウィンドウがずらされた後のデータ1とデータ2との大小関係の一致数は「1(=4−3)」になる。
演算部14は、一致数P(P=1)、項目数(n=7)を上述した式(A)に当て嵌めて演算し、演算結果として、ウィンドウがずらされた後の類似度「t=−0.90」を得る。
図65は、次に、ウィンドウがずらされた場合における類似度(相関値)の演算の例を示す。ウィンドウがずらされたため、変化点データのオフセットは1つ増える。ウィンドウがずらされる前の一致数の変化量は「−3」である。
差分処理テーブルにおいて、時間差「3」における前端の一致と、時間差「1」における前端の一致とが反転する。両者は、逆方向に反転するため、前端の一致のみに着目すると、一致数の変化量はゼロである。
差分処理テーブルの後端の一致において、時間差「1」、「4」、「5」および「6」の4つが、「○」から「×」に変化する。よって、一致数の変化量は4つ増える。ウィンドウがずらされる前の一致数の変化量は「−3」であったため、ウィンドウがずらされた後の一致数の変化量は「1(=−3+4)」になる。
差分処理部15は、ウィンドウがずらされる前の一致数は「1」に一致数の変化量「1」を加算して、一致数P(P=2)を得る。
演算部14は、一致数P(P=2)、項目数n(n=7)を上述した式(A)に当て嵌めて類似度tの演算を行う。これにより、演算部14は、類似度「t=−0.81」を得る。
図66は、次に、ウィンドウがずらされた場合における類似度の演算の例を示す。差分処理部15は、ウィンドウがずらされたため、データ1およびデータ2のオフセットを「3」に更新する。
図66の例において、差分処理テーブルの時間差「1」および「4」における前端の一致が「○」に反転している。
よって、差分処理部15は、ウィンドウがずらされる前の変化量「1」に「2」を加算して、一致数の変化量「3」を得る。また、ウィンドウがずらされる前の一致数は「2」であったため、差分処理部15は、「2」に「3」を加算して、一致数P(P=5)を得る。
演算部14は、一致数P(P=5)、項目数n(n=7)を上述した式(A)に当て嵌めて類似度tの演算を行う。これにより、演算部14は、類似度「t=−0.52」を得る。ウィンドウは、データ1およびデータ2の末尾までずらされたため、処理は完了する。
<具体例3>
次に、類似度の演算を行う対象である2つの時系列データのうち、片方の時系列データのウィンドウを固定し、他方の時系列データのウィンドウをずらす場合における類似度の演算の例について説明する。
図67の例において、データ1の変化点データのうち、時間「3」から「9」までがウィンドウ範囲であるとする。図67の例に示されるように、差分処理部15は、オフセット「2(=時間「3」−時間「1」)」として、以下の処理を行う。
データ1のウィンドウは固定される。時間差「1」の変化点「1−」は、ウィンドウに入っていない。変化点テーブルのうち、次の変化点「3+」はウィンドウ内のうち後端に位置する。よって、該変化点「3+」のアンカーは、タイプBである。
差分処理部15は、アンカーに関するデータ(以下、アンカーデータ)に上記の変化点「3+」の情報を追加する。差分処理部15は、変化点「3+」のオフセットである括弧内の「1」と、タイプBであることを特定する情報と、大小関係が「+」である情報とをアンカーデータに追加する。図68の例では、この情報は「B1+」である。
図69の例において、変化点「7−」は、ウィンドウ内のうち後端ではない場所に位置する。よって、該変化点「7−」のアンカーは、タイプCであり、オフセットは「5」である。差分処理部15は、アンカーデータに「C5−」を追加する。
差分処理部15は、時間差「1」について、ウィンドウの前端に変化点があるかを判定する。変化点テーブルのうち最後の変化点は「7−」である。よって、図70の例の場合、ウィンドウの前端に変化点はない。
この場合、上述したように、差分処理部15は、変化点を追加する。ウィンドウの前端の時間は「10」であるため、オフセットは「7」である。また、時間「10」における大小関係は「+」である。よって、差分処理部15は、アンカーデータに「A7+」を追加する。
図71は、時間差「1」から「6」までのアンカーデータの例を示す。差分処理部15は、時間差「1」の場合と同様の処理を行い、時間差「2」から「6」までのアンカーデータを生成する。時間差ごとのアンカーデータは、データ1における固定されたウィンドウの情報である。
次に、データ1とデータ2との大小関係の一致数の例について説明する。具体例3では、データ1とデータ2とを比較する場合、差分処理部15は、データ1についてはアンカーテーブルを用い、データ2については変化点テーブルを用いる。
図71の例の場合、データ2のウィンドウ範囲は、時間「1」から「7」までである。一方、データ1のウィンドウ範囲は時間「3」から「9」までである。上述したように、差分処理部15は、オフセット「2」を考慮して、データ1のアンカーデータを生成する。
図72の例では、比較の対象は、データ1については、アンカー「B1+」であり、データ2については、変化点「1−」である。アンカー「B1−」は、上述したように、データ1における変化点「3」に対応する。
図72の例において、差分処理部15は、アンカーテーブルを生成する。アンカーテーブルは、時間差に応じた、一致数とアンカーの一致関係と次にアンカーに到達する変化点との情報を含む。
アンカーの一致関係は、比較対象であるデータ1のアンカーとデータ2の変化点との大小関係が一致するか否かを示す。図72の例では、アンカーの一致関係は、アンカーの順番ごとに、一致するか否かを示す。
アンカー「B1+」と変化点「1−」とは大小関係が逆である。アンカー「B1−」においてデータ1とデータ2との大小関係が一致しないため、差分処理部15は、アンカーテーブルの1番を「×」にする。また、アンカー「B1+」と変化点「1−」との大小関係が一致しないため、計数部13は、大小関係の一致数を加算しない。
図73の例は、比較の対象が、データ1のアンカー「B1+」とデータ2の変化点「2+」とである場合を示す。データ1の変化点「1+」からデータ2の変化点「2+」までの大小関係は「+」であり、データ1のアンカー「B1+」の大小関係と一致する。よって、差分処理部15は、大小関係の一致数を加算する。
データ2の変化点「2+」は、ウィンドウがずらされると、ウィンドウ内の後端に位置する。差分処理部15は、アンカーテーブルのうち「次にアンカーに到達する変化点」に、データ2の変化点「2+」の情報を格納する。
差分処理部15は、データ2の変化点の順番を示す情報と、該変化点がアンカー(この場合は、ウィンドウ内の後端)に到達するまでにウィンドウがずらされる回数(時間)の情報と、対応するアンカーの順番を示す情報とを、アンカーテーブルに格納する。
図73の例では、データの変化点「2+」の順番を示す情報は「2」である。該変化点「2+」はウィンドウが1回ずらされると、アンカーに到達する。対応するアンカーは「B1+」であるため、対応するアンカーの順番を示す情報は「1」である。
差分処理部15は、アンカーテーブルのうち「次にアンカーに到達する変化点」に、変化点「2+」を示す情報として、「2(1)−1」を格納する。括弧内の値は、上記の変化点がアンカーに到達するまでにウィンドウがずらされる回数を示す。
図74の例は、比較の対象が、データ1のアンカー「B1+」とデータ2の変化点「3−」とである場合を示す。データ1の変化点「2+」からデータ2の変化点「3−」までの大小関係は「−」であり、データ1のアンカー「B1+」の大小関係と一致しない。よって、差分処理部15は、大小関係の一致数を加算しない。
図75の例に示されるように、差分処理部15は、比較の対象を、データ1のアンカー「C5−」とデータ2の変化点「3−」とに移す。データ1の変化点「2+」からデータ2の変化点「3−」までの大小関係は「−」であり、データ2のアンカー「C5−」の大小関係と一致する。よって、差分処理部15は、大小関係の一致数を加算する。
また、データ1のアンカー「C5−」において、該アンカー「C5−」と変化点「3−」とは大小関係が一致する。よって、差分処理部15は、「アンカーの一致関係」の2番目を「○」にする。
図76の例に示されるように、差分処理部15は、比較の対象を、データ1のアンカー「A7+」とデータ2の変化点「3−」とに移す。データ1の変化点「2+」からデータ2の変化点「3−」までの大小関係は「−」であり、データ1のアンカー「B1+」の大小関係と一致する。よって、差分処理部15は、大小関係の一致数を加算する。
また、データ1のアンカー「A7+」において、該アンカー「A7+」と変化点「3−」とは大小関係が一致しない。よって、差分処理部15は、「アンカーの一致関係」の3番目を「×」にする。
図77の例に示されるように、ウィンドウがずらされると、データ2の変化点「8+」はウィンドウの前端に位置する。差分処理部15は、アンカーテーブルのうち「次にアンカーに到達する変化点」に、データ2の変化点「8+」の情報を格納する。
データ2の変化点「8+」の順番を示す情報は「4」であり、該変化点がアンカー(この場合はウィンドウの前端)に到達するまでにウィンドウがずらされる回数は「1」であり、対応するアンカーの順番は「3」である。よって、差分処理部15は、「次にアンカーに到達する変化点」に「4(1)−3」を追加する。
以上により、時間差「1」についての処理が終了する。差分処理部15は、時間差「1」と同様の処理を、時間差「2」から「6」について行う。図78は、時間差ごとのアンカーテーブルの一例を示す。
図79の例において、差分処理部15は、アンカーテーブルの「次にアンカーに到達する変化点」に格納された各変化点の情報を、アンカーに到達するまでにウィンドウがずらされる回数順(時間順)に管理する。
差分処理部15は、アンカーテーブルのうち「次にアンカーに到達する変化点」の各変化点の情報のうち、ウィンドウがずらされる回数を到達時間として、到達時間順に各変化点の情報を管理テーブルに格納する。
図79の例では、差分処理部15は、各変化点の情報を「時間差―変化点の順番―アンカーの順番」の形式で管理テーブルに格納する。例えば、アンカーテーブルの「次にアンカーに到達する変化点」に格納された情報が「2(1)−1」の場合、差分処理部15は、「1−2−1」の形式で該変化点の情報を管理テーブルに格納する。
これにより、差分処理部15は、管理テーブルを用いて、ウィンドウがずらされた場合における変化点の到達時間を管理する。
図79の例のアンカーテーブルにおいて、一致数の合計は「8(=3+3+2)」である。演算部14は、一致数P(P=8)、項目数n(n=7)を上述した式(A)に当て嵌めて演算を行い、類似度t「t=−0.23」を得る。
上述したように、類似度の演算を行う対象の2つの時系列データうち、片方の時系列データのウィンドウを固定し、他方の時系列データのウィンドウをずらす場合、アンカーのタイプごとに一致数の変化量および変化量の差分に重みが付与される。
例えば、時間差「1」の「B1+×」は、アンカー「B1+」に対応するデータ2の変化点「1−」と大小関係が一致しないことを示す。従って、「B1+×」は、タイプBであり、且つ大小関係が不一致であることを示すため、重みはゼロである。
また、時間差「1」の「C5−○」は、アンカー「C5−」に対応する変化点「3−」と大小関係が一致することを示す。従って、「C5−○」は、タイプCであり、且つ大小関係が一致することを示すため、重みは「−1」である。
差分処理部15は、時間差ごとのアンカーデータに重み付けを行い、全てのアンカーの重みを合計する。図80の例の場合、重みの合計は「−2」である。この重みの合計が一致数の変化量になる。
上述したように、ウィンドウがずらされる前の大小関係の一致数は「8」である。差分処理部15は、ウィンドウがずらされる前の大小関係の一致数に一致数の変化量を加算する。これにより、ウィンドウがずらされた後(更新後)の大小関係の一致数Pは、「P=8+(−2)=6」となる。
演算部14は、一致数P(P=6)、項目数n(n=7)を上述した式(A)に当て嵌めて演算を行い、類似度t「t=−0.42」を得る。
図81は、データ2のウィンドウがずらされた場合の一例を示す。ウィンドウがずらされたため、差分処理部15は、データ2のオフセットを1つ増やす。ウィンドウがずらされたことにより、管理テーブルの到達時間がずらされる。
例えば、ウィンドウがずらされたことにより、データ2の変化点「2+」は、アンカーに到達する。該変化点「2+」は、管理テーブルでは、「1−2−1」として管理される。
差分処理部15は、管理テーブルにおいて「1−2−1」が到達時間ゼロに達したため、「1−2−1」に対応するアンカー「B1−」の大小関係の一致を反転させる。これにより、時間差「1」におけるアンカー「B1−」は「○」に反転される。
差分処理部15は、アンカー「B1−」の大小関係が「×」から「○」に反転したため、一致数の変化を1つ減らす。
また、データの変化点「2+」の次の変化点「3−」は、アンカー「B1+」からアンカー「C5−」の間に存在するため、差分処理部15は、変化点「3−」に関する情報を管理テーブルに追加する。データ2の変化点「3−」は、管理テーブルでは、「1−3−1」として管理される。
図82の例において、管理テーブルの到達時間ゼロのうち「1−4−3」は、上述したように、データ2の変化点「8+」であることを示す。この変化点「8+」は、アンカー「A7+」に対応する。
従って、差分処理部15は、アンカー「A7+」の大小関係を「○」に反転する。差分処理部15は、アンカー「A7+」の大小関係が「×」から「○」に反転したため、一致数の変化量を1つ減らす。
データ2の変化点「8+」は、ウィンドウが2回ずらされると、アンカー「C5−」に達する。アンカー「C5−」を示す順番は「2」である。よって、差分処理部15は、データ2の変化点「8+」を示す管理テーブルの「1−4−3」を「1−4−2」として、到達時間「2」に格納する。
また、差分処理部15は、データ2の変化点「9−」を示す「1−5−3」を管理テーブルに追加する。
図83は、全ての時間差について、差分処理部15が処理した例を示す。差分処理部15は、データ1の全てのアンカーについて、タイプごとの重み付けに基づいて、変化量の差分を求める処理を行い、「−2」を得る。
ウィンドウがずれる前の一致数の変化量は「−2」であったため、一致数の変化量は「−4(=(−2)+(−2))」となる。ウィンドウがずれる前の大小関係の一致数は「6」であったため、ウィンドウがずれた後の一致数Pは「P=6−4=2」になる。
演算部14は、一致数P(P=2)、項目数n(n=7)を上述した式(A)に当て嵌めて演算を行い、類似度t「t=−0.80」を得る。
また、差分処理部15は、到達時間ゼロの変化点の情報を削除し、上述した処理を行い、管理テーブルを更新する。
図84は、次にウィンドウがずれた場合の例を示す。差分処理部15は、アンカーデータに基づいて、タイプごとの重み付けを行い、変化量の差分「5」を得る。ウィンドウがずれる前の一致数の変化量は「−4」であったため、差分処理部15は、「−4」に「5」を加算して、一致数の変化量「1」を得る。
ウィンドウがずれる前の一致数は「2」であったため、差分処理部15は、これに一致数の変化量「1」を加算して、一致数P(P=3)を得る。演算部14は、一致数P(P=3)、項目数n(n=7)を上述した式(A)に当て嵌めて演算を行い、類似度t「t=−0.71」を得る。
図84の例に示されるように、データ2の期間は時間「1」から「10」までである。ウィンドウは、データ2の期間の末尾まで移動したため、具体例3の処理が終了する。
<他の値を用いた一致数の例>
次に、上述した各例とは異なる値を用いた2つの時系列データの大小関係の一致数の例について説明する。図85の例の変化点テーブルに示されるように、オフセットおよび変化点の値は、上述した各例とは異なる。「D1」はデータ1であり、「D2」はデータ2である。
図85の例において、2つの時系列データの期間は、時間「1」から「20」までとする。従って、データ1およびデータ2の期間は「20」である。また、図85は、時間差「4」の場合の例を示す。この場合、ウィンドウ範囲は「1」から「16」になる。
図86の例に示されるように、計数部13は、変化点テーブルのうち、データ1の始点のオフセット補正後の位置を求める。オフセット補正後の位置は、上述したインデックスである。図86の例の場合、オフセット補正後の位置は「−3=4−7」である。
オフセット補正後の位置が「−」であるため、データ1の変化点「4+」はウィンドウに入っていない。従って、この時点では、計数部13は、一致数を加算しないため、一致数はゼロである。
計数部13は、オフセットの値が小さい変化点から順番に比較の対象を移す。図87の例に示されるように、データ1の変化点「19−」のオフセットは「12」であり、データ2の変化点「8−」のオフセットは「6」である。
従って、計数部13は、データ1の変化点「4+」とデータ2の変化点「8−」とを比較の対象として、大小関係の一致数を求める。データ1におけるオフセット補正後の位置「−3」以降の大小関係は「+」である。また、データ2におけるオフセット補正後の位置「6」以降の大小関係は「−」であり、「5」以前の大小関係は「+」である。
よって、オフセット補正後の位置「1」から「5」までの範囲の大小関係は「+」であり、一致する。計数部13は、大小関係が一致する数をカウントする。従って、一致数は、「5」になる。
図88の例に示されるように、次にオフセット補正後の値が最も小さい変化点は「19−」である。データ1は、ウィンドウ範囲に対して、オフセット補正後の位置が「11」より前の大小関係は「+」である。データ2は、オフセット補正後の位置が「7」から「11」までの間における大小関係は「−」である。
よって、オフセット補正後の位置が「7」から「11」までの間におけるデータ1とデータ2とは不一致である。一方、データ1は、オフセット補正後の位置「12」以降、大小関係が「+」になる。
このため、オフセット補正後の位置「12」において、データ1とデータ2との大小関係が一致する。計数部13は、一致数をカウントして、一致数「1」を得る。ここまでの、一致数の合計は「6=1+5」である。
図89の例に示されるように、次にオフセット補正後の値が最も小さい変化点はデータ1の「22+」である。データ1は、オフセット補正後の位置「13」から「14」の大小関係は「−」であり、「15」以降の大小関係は「+」である。
データ2は、オフセット補正後の位置「6」以降の大小関係は「−」である。よって、データ1とデータ2とは、オフセット補正後の位置「13」から「14」において大小関係が一致する。従って、計数部13は、一致数をカウントして、一致数「2」を得る。ここまでの、一致数の合計は「8=6+2」である。
図90の例に示されるように、次にオフセット補正後の値が最も小さい変化点はデータ2の「23+」である。データ1は、オフセット補正後の位置「15」以降の大小関係は「+」である。
データ2は、オフセット補正後の位置「6」から「20」までの大小関係は「−」である。ウィンドウ範囲は「1」から「16」であるため、この場合の比較の対象は、オフセット補正後の位置「15」から「16」になる。
データ1のオフセット補正後の位置「15」から「16」の大小関係は「+」であり、データ2のオフセット補正後の位置「15」から「16」の大小関係は「−」である。よって、この範囲でのデータ1とデータ2との大小関係は一致しない。
従って、計数部13がカウントする一致数はゼロである。ここまでの一致数の合計は「8=8+0」である。
以上のようにして、計数部13は、ウィンドウ範囲「1」から「16」におけるデータ1とデータ2との一致数をカウントする。
<実施形態の処理の流れを示すフローチャートの一例>
次に、実施形態の処理の流れを示すフローチャートについて説明する。図91の例に示されるように、データ処理装置1は、類似度の演算の対象となる時系列データおよび該時系列データのうち比較対象となるウィンドウ(期間)を決定する(ステップS1)。以下、時系列データを系列と称することがある。
実施形態では、検出部12は、対象となる時系列データを記憶部11から読み出す。少なくとも2つの時系列データが記憶部11から読み出される。検出部12は、対象となる全ての時系列データについてウィンドウの範囲内で変化点を検出する(ステップS2)。以下、変化点を検出する処理を処理Aと称する。
演算部14が、対象となる全ての時系列データについて類似度の演算を行った場合(ステップS3でno)、処理は終了する。
差分処理部15は、比較対象の2つの時系列データに設定された双方のウィンドウが固定されるか、双方のウィンドウがずらされるか、または片方のウィンドウがずらされるかを判定する(ステップS4)。
差分処理部15は、双方のウィンドウをずらすことができるか、片方のウィンドウをずらすことができるか、または双方のウィンドウをずらすことができないか、の何れかに基づいて、ステップS4の判定を行ってもよい。
双方のウィンドウが固定された場合、ウィンドウがずらされることなく、検出された変化点に基づいて、類似度が演算される(ステップS5)。ステップS5の処理は、上述した具体例1の処理(以下、処理Bと称する)である。
双方のウィンドウがずらされる場合、差分処理部15が双方のウィンドウをずらしながら差分処理を行い、演算部14により類似度が演算される(ステップS6)。ステップS6の処理は、上述した具体例2の処理(以下、処理Cと称する)である。
片方のウィンドウがずらされる場合、差分処理部15が片方のウィンドウをずらしながら差分処理を行い、演算部14により類似度が演算される(ステップS7)。ステップS7の処理は、上述した具体例3の処理(以下、処理Dと称する)である。
処理A(変化点を検出する処理)について、図92のフローチャートを参照して説明する。検出部12は、対象となる各時系列データのうち、変化点を検出する処理を行っていない時系列データがあるかを判定する(ステップS11)。
全ての時系列データについて変化点を検出する処理が済んでいる場合(ステップS11でno)、処理は終了する。変化点を検出する処理が済んでいない時系列データが存在する場合(ステップS11でyes)、検出部12は、該時系列データを記憶部11から取得し、該時系列データの期間を得る(ステップS12)。
検出部12は、取得された時系列データのうち単調区間(単調増加区間および単調減少区間)を検出する(ステップS13)。検出部12は、変数i(iは整数)に「1」を代入する。変数iは、時間差を示す。
検出部12は、変数iが時系列データの期間未満であるかを判定する(ステップS15)。変数iが時系列データの期間以上である場合(ステップS15でno)、処理はステップS11に戻る。
変数iが時系列データの期間未満である場合(ステップS15でyes)、検出部12は、上記の単調区間と変数iとに基づいて、上述したブロックを決定する(ステップS16)。そして、検出部12は、最初の変化点の値(初期値)を検出する(ステップS17)。
検出部12は、未処理のブロックが存在するかを判定する(ステップS18)。未処理のブロックが存在する場合(ステップS18でyes)、該ブロックが同じ単調区間に含まれるかを判定する(ステップS19)。
該ブロックが同じ単調区間に含まれない場合(ステップS19でno)、検出部12は、該ブロックが、「値の範囲が分離されているブロック」であるかを判定する(ステップS20)。
該ブロックが「値の範囲が分離されているブロック」でない場合(ステップS20でno)、該ブロックは変化点検出の対象のブロックである。この場合、検出部12は、ブロックの長さが長いかを判定する(ステップS21)。
ブロックの長さは、時系列データの範囲である。ブロックの長さが長いか否かは、任意に設定されてよい。例えば、ブロックの長さに閾値が設定され、ブロックの長さが該閾値を超えた場合に、ブロックの長さが長いと判定されてもよい。
ブロックの長さが長いと判定された場合(ステップS21でyes)、検出部12は、上述したように、ブロックを分割する(ステップS22)。ブロックが分割された後、処理はステップS21に戻る。従って、1つのブロックが2つのブロックに分割される場合もあり、3つ以上のブロックに分割される場合もある。
検出部12は、ブロック内(時系列データの範囲)内で大小関係が変化する変化点を探索する(ステップS23)。そして、検出部12は、変化点を探索するブロックを次のブロックに移す(ステップS24)。ステップS19でyesの場合、およびステップS20でyesの場合、処理はステップS24に移る。
ステップS18でnoの場合、つまり未処理のブロックが存在しない場合、検出部12は、変数iをインクリメントする(ステップS25)。検出部12は、以上の処理を、変数iが時系列データの期間に達するまで行う。
次に、処理Bについて、図93のフローチャートを参照して、説明する。処理Bの場合、比較対象の2つの時系列データのウィンドウは固定される。最初に、比較期間(ウィンドウ範囲)が決定される(ステップS31)。
計数部13は、変数P(Pは整数)にゼロを代入する(ステップS32)。変数Pは、一致数を示す。また、計数部13は、変数iに「1」を代入する(ステップS33)。
計数部13は、変数iが時系列データの期間未満であるかを判定する(ステップS34)。変数iが時系列データの期間未満の場合(ステップS34でyes)、検出部12は、変数iの時間差の変化点データを選択する(ステップS35)。
計数部13は、上述した具体例1の処理を行い、変化点データの各変化点について、時系列データのウィンドウ範囲内の一致数を求め、該一致数を変数Pに加算する(ステップS36)。
計数部13は、変数iをインクリメントし(ステップS37)、処理はステップS34に戻る。時間差を示す変数iが時系列データの期間に達するまで、ステップS35乃至S37の処理が行われる。
変数iが時系列データの期間に達した場合(ステップS34でno)、計数部13は、一致数を合計して、一致数Pを求める。演算部14は、一致数Pおよび項目数を、上述した式(A)に当て嵌めて演算を行い、時系列データ同士の類似度を得る(ステップS38)。その後、処理Bは終了する。
次に、処理Cについて、図94のフローチャートを参照して、説明する。最初に、比較期間(ウィンドウ範囲)が決定される(ステップS41)。計数部13は、上述した具体例1の処理を行い、最初に設定されたウィンドウの範囲内の大小関係の一致数Pを求める(ステップS42)。
差分処理部15は、ウィンドウの前端および後端における一致数を用いて、具体例2で説明した一致数の変化量dを求める(ステップS43)。演算部14は、一致数Pおよび項目数を、上述した式(A)に当て嵌めて演算を行い、類似度を得る(ステップS44)。
差分処理部15は、ウィンドウをずらすことができる次の時刻が存在するかを判定する(ステップS45)。ウィンドウをずらすことができる次の時刻が存在する場合(ステップS45でyes)、差分処理部15は、比較対象の2つの時系列データにそれぞれ設定されたウィンドウをずらす(ステップS46)。
差分処理部15は、上述した具体例2の処理を行い、ウィンドウに出入りする変化点に基づいて、一致数の変化量dを更新する(ステップS47)。差分処理部15は、ウィンドウがずらされる前に求められた一致数Pに、一致数の変化量dを加算する(ステップS48)。
これにより、ウィンドウがずらされた後における大小関係の一致数Pが得られる。ステップS44において、演算部14は、ウィンドウがずらされた後の一致数Pおよびウィンドウ範囲内の項目数を、上述した式(A)に当て嵌めて演算を行い、類似度を得る。
ステップS45において、ウィンドウをずらすことができる次の時刻が存在するかが判定される。ウィンドウをずらすことができる次の時刻が存在しないと判定された場合(ステップS45でno)、処理Cは終了する。
次に、処理Dについて、図95のフローチャートを参照して、説明する。最初に、比較期間(ウィンドウ範囲)が決定される(ステップS51)。計数部13は、上述した具体例1の処理を行い、最初に設定されたウィンドウの範囲内の大小関係の一致数Pを求める(ステップS52)。
差分処理部15は、固定された時系列データ(ずらさない系列の変化点)およびウィンドウの前端および後端のアンカーにおける一致数を用いて、一致数の変化量dを求める(ステップS53)。
演算部14は、一致数Pおよびウィンドウ範囲内の項目数を上述した式(A)に当て嵌めて、2つの時系列データの類似度を得る(ステップS54)。
差分処理部15は、固定されない方のウィンドウをずらすことができる次の時刻が存在するかを判定する(ステップS55)。ウィンドウをずらすことができる次の時刻が存在する場合(ステップS55でyes)、差分処理部15は、固定されていない方のウィンドウをずらす(ステップS56)。
差分処理部15は、上述した具体例3の処理を行い、ウィンドウがずらされる前に求められた一致数Pに、一致数の変化量dを加算する(ステップS57)。これにより、ウィンドウがずらされた後における大小関係の一致数Pが得られる。
演算部14は、ウィンドウがずらされた後における、一致数Pおよびウィンドウ範囲内の項目数を上述した式(A)に当て嵌めて、2つの時系列データの類似度を得る(ステップS58)。
差分処理部15は、上述したアンカーに到達した変化点から一致数の変化量dを更新する(ステップS59)。ステップS55において、ウィンドウをずらすことができる次の時刻が存在しない場合(ステップS55でno)、処理Dは終了する。
<その他>
図96は、3種類の時系列データ(データA、データBおよびデータC)の例を示す。データAは、値の変化が緩やかなデータであり、局所性が大きい時系列データである。データAのような時系列データは、変化点が少ないため、大小関係の一致数を求める時間が短くなり、時系列データ同士の類似度の演算時間も短くなる。
データBは、細かい周期でサンプリングされたデータであり、波形全体として、時系列データの値は、小さい値から大きい値に変化する。このような時系列データも、局所性がある程度大きいため、大小関係の一致数を求める時間が短くなり、時系列データ同士の類似度の演算時間も短くなる。
データCは、値の変動が大きい時系列データである。データCのような時系列データは、局所性が小さく、変化点が多くなるため、大小関係の一致数を求める時間が、データAおよびデータBよりは長くなる。
従って、データCの場合、データAやデータBと比較して、時系列データ同士の類似度の演算時間が長くなる。ただし、データCの場合であっても、変化点に基づいて、大小関係の一致数を求め、該一致数に基づいて類似度の演算を行っているため、類似度の演算時間は短くなる。
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。