(57)【特許請求の範囲】
【請求項１】
２つのデータストリームから、類似する部分シーケンスのペアを、２つの前記部分シーケンス同士の類似度スコアを示すタイムワーピング行列を用いて検出する類似部分シーケンス検出装置による類似部分シーケンス検出方法であって、
前記類似部分シーケンス検出装置は、前記タイムワーピング行列を記憶する記憶部と、処理部と、を備えており、
前記処理部は、
前記２つのデータストリームのうちいずれかのデータストリームのデータの１つの要素を受信したとき、当該要素を含む前記データストリーム中の部分シーケンスと、他方の前記データストリーム中の部分シーケンスと、の類似度スコアを算出し、その際、
２つの部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］との類似度スコアＳ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）を、以下の式（１）〜式（５）により算出し、
Ｓ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｓ（ｉｅ,ｊｅ）      ・・・式（１）
ｓ（ｉ,ｊ）＝ｍａｘ｛０，２ε−‖ｘｉ−ｙｊ‖＋ｓｂｅｓｔ｝  ・・・式（２）
ｓｂｅｓｔ＝ｍａｘ｛ｓ（ｉ,ｊ−１），ｓ（ｉ−１,ｊ），ｓ（ｉ−１,ｊ−１）｝
・・・式（３）
ｓ（ｉ,０）＝０                                          ・・・式（４）
ｓ（０,ｊ）＝０                                          ・・・式（５）
前記タイムワーピング行列に記憶する前記部分シーケンスＸ［ｉｓ：ｉｅ］の開始位置ｉｓと、前記部分シーケンスＹ［ｊｓ：ｊｅ］の開始位置ｊｓとを示すｐ（ｉ,ｊ）を、以下の式（７）により算出し、
ｐ（ｉ,ｊ）＝｛ｐ（ｉ,ｊ−１）  （if  ｓｂｅｓｔ＝ｓ（ｉ,ｊ−１）），
ｐ（ｉ−１,ｊ）  （if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ）），
ｐ（ｉ−１,ｊ−１）（if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ−１）），
（ｉ,ｊ）      （if  ｓｂｅｓｔ＝０）｝    ・・・式（７）
前記開始位置ｉｓ,ｊｓを、以下の式（８）により算出し、
（ｉｓ,ｊｓ）＝ｐ（ｉｅ,ｊｅ）                              ・・・式（８）
前記算出した類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記記憶部の前記タイムワーピング行列に記憶し、
前記記憶部のタイムワーピング行列に記憶された前記類似度スコアを用いて、類似する部分シーケンスのペアを検出して出力し、その際、
類似度スコアの平均値ｓ’を、以下の式（６）により算出し、
ｓ’＝ｓ（ｉ,ｊ）／Ｗ                                    ・・・式（６）
前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記類似度スコアの算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上であるとき、それらの２つの前記部分シーケンスを、類似する部分シーケンスのペアとして検出して出力する
ことを特徴とする類似部分シーケンス検出方法。
ただし、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍ、‖ｘｉ−ｙｊ‖はｘｉとｙｊとの間の距離を示す。
また、Ｗは部分シーケンスＸ［ｉｓ：ｉｅ］と部分シーケンスＹ［ｊｓ：ｊｅ］とのタイムワーピングパスの長さを示す。
【請求項２】
前記処理部は、
前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上である場合、
当該２つの部分シーケンスを、類似部分シーケンスペア候補として前記記憶部に記憶し、
前記記憶部に記憶された前記類似部分シーケンスペア候補のうち、前記タイムワーピングパスの少なくとも一部に重複しているものがあるとき、前記重複している類似部分シーケンスペア候補の中から、前記タイムワーピングパスが最長の類似部分シーケンスペア候補を選択し、当該選択した類似部分シーケンスペア候補である２つの前記部分シーケンスを、類似する部分シーケンスのペアとして出力する
ことを特徴とする請求項１に記載の類似部分シーケンス検出方法。
【請求項３】
請求項１または請求項２に記載の類似部分シーケンス検出方法をコンピュータに実行させるための類似部分シーケンス検出プログラム。
【請求項４】
２つのデータストリームから、類似する部分シーケンスのペアを、２つの前記部分シーケンス同士の類似度スコアを示すタイムワーピング行列を用いて検出する類似部分シーケンス検出装置であって、
前記タイムワーピング行列を記憶する記憶部と、
前記２つのデータストリームのうちいずれかのデータストリームのデータの１つの要素を受信したとき、当該要素を含む前記データストリーム中の部分シーケンスと、他方の前記データストリーム中の部分シーケンスと、の類似度スコアを算出し、その際、
２つの部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］との類似度スコアＳ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）を、以下の式（１）〜式（５）により算出し、
Ｓ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｓ（ｉｅ,ｊｅ）      ・・・式（１）
ｓ（ｉ,ｊ）＝ｍａｘ｛０，２ε−‖ｘｉ−ｙｊ‖＋ｓｂｅｓｔ｝  ・・・式（２）
ｓｂｅｓｔ＝ｍａｘ｛ｓ（ｉ,ｊ−１），ｓ（ｉ−１,ｊ），ｓ（ｉ−１,ｊ−１）｝
・・・式（３）
ｓ（ｉ,０）＝０                                          ・・・式（４）
ｓ（０,ｊ）＝０                                          ・・・式（５）
前記タイムワーピング行列に記憶する前記部分シーケンスＸ［ｉｓ：ｉｅ］の開始位置ｉｓと、前記部分シーケンスＹ［ｊｓ：ｊｅ］の開始位置ｊｓとを示すｐ（ｉ,ｊ）を、以下の式（７）により算出し、
ｐ（ｉ,ｊ）＝｛ｐ（ｉ,ｊ−１）  （if  ｓｂｅｓｔ＝ｓ（ｉ,ｊ−１）），
ｐ（ｉ−１,ｊ）  （if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ）），
ｐ（ｉ−１,ｊ−１）（if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ−１）），
（ｉ,ｊ）      （if  ｓｂｅｓｔ＝０）｝    ・・・式（７）
前記開始位置ｉｓ,ｊｓを、以下の式（８）により算出し、
（ｉｓ,ｊｓ）＝ｐ（ｉｅ,ｊｅ）                              ・・・式（８）
前記算出した類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記記憶部の前記タイムワーピング行列に記憶し、
前記記憶部のタイムワーピング行列に記憶された前記類似度スコアを用いて、類似する部分シーケンスのペアを検出して出力し、その際、
類似度スコアの平均値ｓ’を、以下の式（６）により算出し、
ｓ’＝ｓ（ｉ,ｊ）／Ｗ                                    ・・・式（６）
前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記類似度スコアの算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上であるとき、それらの２つの前記部分シーケンスを、類似する部分シーケンスのペアとして検出して出力する処理部と、
を備えることを特徴とする類似部分シーケンス検出装置。
ただし、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍ、‖ｘｉ−ｙｊ‖はｘｉとｙｊとの間の距離を示す。
また、Ｗは部分シーケンスＸ［ｉｓ：ｉｅ］と部分シーケンスＹ［ｊｓ：ｊｅ］とのタイムワーピングパスの長さを示す。
【請求項５】
前記処理部は、
前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上である場合、
当該２つの部分シーケンスを、類似部分シーケンスペア候補として前記記憶部に記憶し、
前記記憶部に記憶された前記類似部分シーケンスペア候補のうち、前記タイムワーピングパスの少なくとも一部に重複しているものがあるとき、前記重複している類似部分シーケンスペア候補の中から、前記タイムワーピングパスが最長の類似部分シーケンスペア候補を選択し、当該選択した類似部分シーケンスペア候補である２つの前記部分シーケンスを、類似する部分シーケンスのペアとして出力する
ことを特徴とする請求項４に記載の類似部分シーケンス検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームマイニングにおいて類似部分シーケンスペアを検出する技術に関する。
【背景技術】
【０００２】
データストリーム（以下、単に「ストリーム」ともいう。）とは、ネットワークから高速に流れてくる大量のデータのことである。ストリームマイニングとは、時系列として表現されるデータストリームから役に立つ情報を素早く見つけ出す技術である。ストリームマイニングは、単にデータベースに蓄えられた大規模データを分析するものではなく、増え続けるデータの流れをリアルタイムに分析し、監視するための技術である。そして、増え続ける大規模なデータを分析するため、またユーザに情報をリアルタイムに提供するため、ストリームマイニングの技術は高速化と省メモリ化を図る必要がある。
【０００３】
ストリーム監視においては、シーケンスマッチング技術が必要とされる。シーケンスマッチングでは、２つのデータシーケンス間の類似度を距離値として表し、この距離値を用いて類似度を判断する。また、各データストリームのサンプリングレートが異なる場合や、データ送受信の周期が変化する場合があるが、これらに柔軟に対応するよう、タイムワーピングを考慮することが重要となる。このタイムワーピングを考慮する距離関数としては、ダイナミックタイムワーピング（ＤＴＷ： Dynamic Time Warping）が広く用いられている。
【０００４】
ＤＴＷは、蓄積されたシーケンスに対して用いられる距離関数であり、２つのシーケンス間の距離を最小化するように時間軸方向に伸長を行い、各要素同士をマッチングさせた計算により距離値を求め、類似か否かを、距離値と閾値εによって判定する。この距離値はＤＴＷ距離と呼ばれ、最適にシーケンス長を調整した後の距離の合計値で表され、動的計画法に基づくマトリックス（タイムワーピング行列）によって計算される。ＤＴＷ距離の値が小さいほど２つのシーケンスは類似度が高く、０の場合は完全に一致していることを意味する。
【０００５】
図１４はＤＴＷの説明図である。図１４（ａ）に示すように、２つのシーケンスＸ＝（ｘ１，ｘ２，…，ｘｎ）とシーケンスＹ＝（ｙ１，ｙ２，…，ｙｍ）とは、ＤＴＷ距離を求める際、ＤＴＷ距離が最小になるように対応付けがなされる。２つのシーケンスの長さが同じ場合でも異なる場合でも、ＤＴＷは各要素を適切に対応付けることができる。
【０００６】
図１４（ｂ）に示すように、ＤＴＷ距離の計算に用いられるマトリックス（タイムワーピング行列）において、２つのシーケンス間で対応付けられたその組み合わせ（集合）はタイムワーピングパスと呼ばれ、ここでは色付け（黒塗り）されたセルとして示している。
【０００７】
ＤＴＷについて、図１５を用いてさらに説明する。図１５は、ＤＴＷによるタイムワーピング行列を例示した図である。図１５において、シーケンスＹは、固定長ｍ（ここでは４）のデータであり、シーケンスの類似判断の元となるデータである。データストリームであるシーケンスＸは、時々刻々と伸張している（データ量が増えている）シーケンスであり、シーケンスＹに対する類似判断の対象となるデータである。
【０００８】
ＤＴＷ距離は、タイムワーピング行列に基づいて計算することができる。ここで、長さｎのシーケンスＸ＝（ｘ１，ｘ２，…，ｘｎ）と長さｍのシーケンスＹ＝（ｙ１，ｙ２，…，ｙｍ）において、これらのＤＴＷ距離Ｄ（Ｘ，Ｙ）は以下のように定義される。なお、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍとする。
【０００９】
Ｄ（Ｘ，Ｙ）＝ｆ（ｎ，ｍ）            ・・・式（９）
ｆ（ｉ，ｊ）＝‖ｘｉ−ｙｊ‖＋ｍｉｎ｛ｆ（ｉ，ｊ−１），ｆ（ｉ−１，ｊ），
ｆ（ｉ−１，ｊ−１）｝  ・・・式（１０）
ｆ（０，０）＝０                      ・・・式（１１）
ｆ（ｉ，０）＝ｆ（０，ｊ）＝∞        ・・・式（１２）
【００１０】
式（９）は、ＤＴＷ距離の定義である。式（１０）は、具体的な計算式である。式（１０）において、‖ｘｉ−ｙｊ‖は、２つの数値（ｘｉとｙｊ）の距離を表すものであり、例えば、ユークリッド距離やマンハッタン距離（Ｌ１距離）などが挙げられる。ｎ次元空間において、ａ、ｂという２つの点の座標をａ（ａ１，ａ２，…，ａｎ）、ｂ（ｂ１，ｂ２，…，ｂｎ）とし、また、（１≦ｋ≦ｎ）とすると、ユークリッド距離とは√（Σ（ａｋ−ｂｋ）２）、マンハッタン距離とはΣ｜ａｋ−ｂｋ｜で表される距離のことである。以下の具体例では、計算を容易にするために、‖ｘｉ−ｙｊ‖として、ユークリッド距離の二乗の値を使用する。なお、本発明は、ユークリッド距離の二乗の値を使用する場合に限定されず、他の距離を使用してもかまわない。
【００１１】
式（１０）において、ｍｉｎ｛ｆ（ｉ，ｊ−１），ｆ（ｉ−１，ｊ），ｆ（ｉ−１，ｊ−１）｝は、｛｝内の３つの値のうち、最小のものを採用する、という意味である。式（１１）および式（１２）は、これらの３つの値を計算する際に使用する、タイムワーピング行列における境界条件である。このＤＴＷ距離を用いたタイムワーピング行列によれば、シーケンスＹと類似するシーケンＸの部分シーケンスを検出することができる。
【００１２】
例えば、シーケンスＹ＝（１１，６，９，４）と、シーケンスＸ＝（１２,６,１０,６,５,１,…）のそれぞれとのＤＴＷ距離を計算すると、図１５のタイムワーピング行列に示す値となる。ここで、図１５のタイムワーピング行列のハッチング部分は、ＤＴＷ距離「６」を計算するために辿ってきたルート（タイムワーピングパス）であり、このルートを辿ることで、ＤＴＷ距離の計算の開始位置が分かる。つまり、このＤＴＷ距離の値が比較的小さいものが連なったタイムワーピングパスを見つけることで、シーケンスＸ＝（１２,６,１０,６,５,１,…）から、シーケンスＹ＝（１１，６，９，４）に類似する部分シーケンス（ここでは部分シーケンス（１２,６,１０,６））を検出することができる。
【００１３】
このように、タイムワーピング行列は、ＤＴＷの関数の値（すなわち、式（１０）におけるｆ（ｉ，ｊ）の値）を保持しており、これがＤＴＷの基礎をなす。長さｎのシーケンスＸと長さｍのシーケンスＹの距離を求めようとすると、ＤＴＷはＯ（ｎｍ）の時間を要する。これは、ＤＴＷが２つのシーケンスのすべての要素を対応付けて計算を行うためであり、特に長いシーケンスを扱う場合には計算コストが著しく大きくなる。
【００１４】
つまり、この従来の手法を用いる場合、データストリームから類似部分シーケンスを検出するとき、あらゆるパターンの部分シーケンスとの比較を行う必要があるので、時刻が経過してデータストリームのデータが到着するたびにタイムワーピング行列を追加していく必要がある。すなわち、図１５ではタイムワーピング行列を１つしか図示していないが、同様のタイムワーピング行列を時間の経過とともに次々と追加する必要がある。そのため、データストリームの増加とともに計算量やメモリ使用量が増大するという問題があった。
【００１５】
また、ＤＴＷを用いたシーケンスマッチングのためのアルゴリズムは数多く提案されているが、その多くは事前に用意された問い合わせシーケンスに類似するシーケンスを検出するものである。非特許文献１および非特許文献２では、ＤＴＷを用いたシーケンスマッチングにおいて計算コスト削減のための手法が提案されている。しかし、これらの手法は蓄積されたデータ集合のための手法であり、ストリーム処理には適していない。
【００１６】
また、ＤＴＷを用いたストリームのシーケンスマッチングについては、非特許文献３において、問い合わせシーケンスに類似する部分シーケンスを検出する手法が提案されている。しかし、このシーケンスマッチングのための従来手法は、用意された問い合わせシーケンスに類似する部分シーケンスを検出するものに過ぎない。
【００１７】
一方、特定の問い合わせシーケンスを用意せず、増え続けるストリームの中から類似する部分シーケンスペアを検出し続ける技術も重要視されている。非特許文献４や非特許文献５は、リアルタイムでのストリーム監視に焦点をあて、ストリーム間の相関を検出する手法を提案している。しかし、これらは、時間軸方向の調節がない距離尺度を用いており、タイムワーピングに対応していない。
【００１８】
本発明が扱うのは、データストリームからの類似部分シーケンスペア検出問題であり、具体的には「２つのデータストリームが与えられたとき、類似する部分シーケンスペアを、ＤＴＷに準じた手法（ＤＴＷと同等の手法）で検出する」ことである。この問題について、図１３を用いて説明する。図１３は、類似部分シーケンスペアの検出に使用されるデータストリーム（シーケンス）の例である。
【００１９】
図１３の（ａ）と（ｂ）に示すように、シーケンス＃１は＃１１、＃１２、＃１４に、シーケンス＃２は＃２２、＃２３に小さなスパイク（突出部）が存在するデータである。各スパイクの振幅はほぼ同じであるが、周期（時間幅）はそれぞれ異なっている。また、これらのシーケンスには３つの大きなスパイク（＃１３、＃２１、＃２４）が含まれており、これらについても周期は異なっている。
【００２０】
本発明が解決しようとする課題は、２つのシーケンス間の部分的な類似を見つけることである。例えば、部分シーケンスペア＃１１と＃２２、＃１１と＃２３、＃１３と＃２１、＃１３と＃２４は、シーケンス＃１と＃２の類似部分シーケンスペアである。これらのペアの周期は異なっているため、タイムワーピングを考慮しない場合、的確に検出することが困難である。
【００２１】
ここで、データストリームＸは、時刻Ｉ＝ｉ１，ｉ２，…，ｉｎ，…で収集されるｘ１，ｘ２，…，ｘｎ，…の値からなる半無限長のシーケンスとして表記できる。ｘｎはｉｎにおける最新のデータであり、時間の経過と共にｎは増加する。Ｘ[ｉｓ：ｉｅ]をｉｓからｉｅまでの部分シーケンスであるとする。同様に、Ｙは、ｙ１，ｙ２，…，ｙｍの値からなるシーケンスであり、Ｙ[ｊｓ：ｊｅ]をｊｓからｊｅまでの部分シーケンスであるとする。例えば、シーケンス＃１をデータストリームＸ、シーケンス＃２をデータストリームＹとすると、部分シーケンス＃１１はＸ［１１５５：２７１２］、＃２２はＹ［６１１１：８３６１］と表せる。このとき、類似部分シーケンスペア検出問題は、次のように定義される。
【００２２】
［類似部分シーケンスペア検出］
２つのデータストリームＸとＹ、類似判定のための閾値ε、類似部分シーケンス長の下限値ζが与えられたとき、次の条件を満たす類似部分シーケンスペアＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]を検出する。
１．  Ｘ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]の平均距離値はε以下である。
２．  Ｘ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]のシーケンス長はいずれもζ以上である。
ここで、平均距離値とは部分シーケンスＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]の１要素あたりの距離値を意味し、Ｘ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]の距離値／（Ｘ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]のタイムワーピングパス長）により求めるものとする。
【００２３】
閾値εおよび類似部分シーケンス長の下限値ζはユーザにより指定（設定）され、これらの条件に基づいて類似部分シーケンスペアが検出される。
【００２４】
この問題を従来技術であるＤＴＷを用いて解決することを考える。ＤＴＷを用いてデータストリームから類似部分シーケンスペアＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]を検出する場合、Ｏ（ｎｍ）個のマトリックスを必要とする。これは、１≦ｉｓ≦ｎ−ζ＋１，１≦ｊｓ≦ｍ−ζ＋１の範囲で変化する各開始点から始まるマトリックスを作成する必要があるためである。これが、従来の一般的な方法である。本明細書ではこの方法をナイーブな手法と呼ぶ。
【００２５】
ｉ，ｊ番目のマトリックス（すなわち、時刻ｉと時刻ｊから始まるマトリックス）において、要素（ｋ，ｌ）の距離をｄｉ，ｊ（ｋ，ｌ）とする。ナイーブな手法では、ＸとＹの部分シーケンスマッチングの距離は以下のように求められる。なお、ｉ＝１,２，…,ｎ、ｋ＝１,２，…,ｎ−ｉ＋１、ｊ＝１,２，…,ｍ、ｌ＝１,２，…,ｍ−ｊ＋１である。
【００２６】
Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｄｉｓ,ｊｓ（ｉｅ−ｉｓ＋１,ｊｅ−ｊｓ＋１）                                              ・・・式（１３）
ｄｉ,ｊ（ｋ,ｌ）＝‖ｘｉ＋ｋ−１−ｙｊ＋ｌ−１‖＋ｍｉｎ｛ｄｉ，ｊ（ｋ，ｌ−１），ｄｉ,ｊ（ｋ−１,ｌ），ｄｉ,ｊ（ｋ−１,ｌ−１）｝  ・・・式（１４）
ｄｉ,ｊ（０,０）＝０                                ・・・式（１５）
ｄｉ,ｊ（ｋ,０）＝ｄｉ,ｊ（０,ｌ）＝∞              ・・・式（１６）
【００２７】
また、Ｘ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]の類似度を評価するための平均距離ｄ’は、次のように求められる。なお、Ｗは部分シーケンスＸ[ｉｓ：ｉｅ]と部分シーケンスＹ[ｊｓ：ｊｅ]とのタイムワーピングパスの長さである。
ｄ’＝ｄｉ,ｊ（ｋ,ｌ）／Ｗ                            ・・・式（１７）
【００２８】
【非特許文献１】E. J. Keogh: “Exact Indexing of Dynamic Time Warping,” In Proceedings of the 28th International Conference on Very Large Data Base (VLDB2002), pp.406-417, 2002.
【非特許文献２】S. W. Kim, S. Park, W. W. Chu: “An Index-based Approach for Similarity Search Supporting Time Warping in Large Sequence Database,” In Proceedings of IEEE 17th International Conference on Data Engineering (ICDE2001), pp.607-614, 2001.
【非特許文献３】Y. Sakurai, C. Faloutsos, and M. Yamamuro: “Stream Monitoring under the Time Warping Distance,” In Proceedings of IEEE 23rd International Conference on Data Engineering (ICDE 2007), pp.1046-1055, 2007.
【非特許文献４】S. Papadimitriou, J. Sun, and C. Faloutsos: “Streaming Pattern Discovery in Multiple Time-Series,” In Proceedings of the 31th International Conference on Very Large Data Bases(VLDB2005), pp.697-708, 2005.
【非特許文献５】Y. Zhu, D. Shasha: “StatStream: Statistical Monitoring of Thousands of Data Streams in Real Time,” In Proceedings of the 28th International Conference on Very Large Data Bases (VLDB2002), pp.358-369, 2002.
【発明の開示】
【発明が解決しようとする課題】
【００２９】
しかしながら、ＤＴＷは固定長の問い合わせシーケンスに類似するシーケンスを検出するためのシーケンスマッチング手法であるため、この手法を使用すると、計算に必要となるマトリックスの数が時間の経過とともに増加する。そのため、毎時刻に更新する必要のある値はＯ（ｎｍ２）またはＯ（ｎ２ｍ）となり（マトリックスの数がＯ（ｎｍ）なので）、計算量やメモリ使用量が大幅に増加するという問題がある。
【００３０】
本発明は、前記問題に鑑みてなされたものであり、２つのデータストリームから類似する部分シーケンスのペアを検出するときの計算量やメモリ使用量の増加を抑制することを課題とする。
【課題を解決するための手段】
【００３１】
前記した課題を解決するため、本発明は、２つのデータストリームから、類似する部分シーケンスのペアを、２つの前記部分シーケンス同士の類似度スコアを示すタイムワーピング行列を用いて検出する類似部分シーケンス検出装置による類似部分シーケンス検出方法であって、前記類似部分シーケンス検出装置は、前記タイムワーピング行列を記憶する記憶部と、処理部と、を備えており、前記処理部は、前記２つのデータストリームのうちいずれかのデータストリームのデータの１つの要素を受信したとき、当該要素を含む前記データストリーム中の部分シーケンスと、他方の前記データストリーム中の部分シーケンスと、の類似度スコアを算出し、前記算出した類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記記憶部の前記タイムワーピング行列に記憶し、前記記憶部のタイムワーピング行列に記憶された前記類似度スコアを用いて、類似する部分シーケンスのペアを検出して出力することを特徴とする。
また、本発明は、前記処理部が、前記２つのデータストリームの部分シーケンス同士の前記類似度スコアを算出するとき、２つの部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］との類似度スコアＳ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）を、以下の式（１）〜式（５）により算出し、
Ｓ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｓ（ｉｅ,ｊｅ）      ・・・式（１）
ｓ（ｉ,ｊ）＝ｍａｘ｛０，２ε−‖ｘｉ−ｙｊ‖＋ｓｂｅｓｔ｝  ・・・式（２）
ｓｂｅｓｔ＝ｍａｘ｛ｓ（ｉ,ｊ−１），ｓ（ｉ−１,ｊ），ｓ（ｉ−１,ｊ−１）｝
・・・式（３）
ｓ（ｉ,０）＝０                                          ・・・式（４）
ｓ（０,ｊ）＝０                                          ・・・式（５）
前記タイムワーピング行列に記憶する前記部分シーケンスＸ［ｉｓ：ｉｅ］の開始位置ｉｓと、前記部分シーケンスＹ［ｊｓ：ｊｅ］の開始位置ｊｓとを示すｐ（ｉ,ｊ）を、以下の式（７）により算出し、
ｐ（ｉ,ｊ）＝｛ｐ（ｉ,ｊ−１）  （if  ｓｂｅｓｔ＝ｓ（ｉ,ｊ−１）），
ｐ（ｉ−１,ｊ）  （if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ）），
ｐ（ｉ−１,ｊ−１）（if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ−１）），
（ｉ,ｊ）      （if  ｓｂｅｓｔ＝０）｝    ・・・式（７）
前記開始位置ｉｓ,ｊｓを、以下の式（８）により算出することを特徴とする。
（ｉｓ,ｊｓ）＝ｐ（ｉｅ,ｊｅ）                              ・・・式（８）
ただし、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍ、‖ｘｉ−ｙｊ‖はｘｉとｙｊとの間の距離を示す。
また、本発明は、前記処理部が、前記記憶部のタイムワーピング行列に記憶された前記類似度スコアを用いて、類似する部分シーケンスのペアを検出して出力する場合、
類似度スコアの平均値ｓ’を、以下の式（６）により算出し、
ｓ’＝ｓ（ｉ,ｊ）／Ｗ                                    ・・・式（６）
前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記類似度スコアの算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上であるとき、それらの２つの前記部分シーケンスを、類似する部分シーケンスのペアとして検出して出力することを特徴とする。
ただし、Ｗは部分シーケンスＸ［ｉｓ：ｉｅ］と部分シーケンスＹ［ｊｓ：ｊｅ］とのタイムワーピングパスの長さを示す。
【００３２】
かかる発明によれば、２つのデータストリームから類似する部分シーケンスのペアを検出するとき、用いるタイムワーピング行列が単一で済むので、計算量やメモリ使用量の増加を抑制することができる。
また、かかる発明によれば、類似度スコアを具体的に適切に算出し、その類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記タイムワーピング行列に記憶することができる。
また、かかる発明によれば、類似度スコアをその対応するタイムワーピングパスの長さで除算した平均値を用いることで、類似する部分シーケンスのペアをより正確に検出することができる。
【００３７】
また、本発明は、前記処理部が、前記算出した類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、前記算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上である場合、当該２つの部分シーケンスを、類似部分シーケンスペア候補として前記記憶部に記憶し、前記記憶部に記憶された前記類似部分シーケンスペア候補のうち、前記タイムワーピングパスの少なくとも一部に重複しているものがあるとき、前記重複している類似部分シーケンスペア候補の中から、前記タイムワーピングパスが最長の類似部分シーケンスペア候補を選択し、当該選択した類似部分シーケンスペア候補である２つの前記部分シーケンスを、類似する部分シーケンスのペアとして出力することが望ましい。
【００３８】
かかる発明によれば、タイムワーピングパスの少なくとも一部が重複する類似部分シーケンスペアが複数あった場合、その中でタイムワーピングパスが最長の類似部分シーケンスペアを出力するので、ユーザに対して、冗長な情報を与えることなく、より有益な情報を提供できる。
【００３９】
また、本発明は、類似部分シーケンス検出方法をコンピュータに実行させるための類似部分シーケンス検出プログラムである。このようなプログラムによれば、類似部分シーケンス検出方法を一般的なコンピュータに実行させることができる。
【発明の効果】
【００４０】
本発明によれば、２つのデータストリームから類似する部分シーケンスのペアを検出するときの計算量やメモリ使用量の増加を抑制することができる。
【発明を実施するための最良の形態】
【００４１】
以下、本発明を実施するための最良の形態（以下、実施形態という）を、第１実施形態および第２実施形態に分けて説明する。また、その後で、３つの実験結果について説明する。
【００４２】
≪第１実施形態≫
図１は、第１実施形態の類似部分シーケンス検出装置の構成図である。類似部分シーケンス検出装置１は、コンピュータ装置であり、入力部１１、処理部１２、記憶部１３および出力部１４を備える。
【００４３】
入力部１１は、外部装置（不図示）やセンサ（不図示）からインターネットやＬＡＮ（Local Area Network）経由でデータストリームの入力を受け付けたり、キーボードやマウス等の入力装置（不図示）から類似部分シーケンスペア（以下、単に「類似部分シーケンス」ともいう。）の検出のための類似部分シーケンス検出条件の入力を受け付けたりする。この類似部分シーケンス検出条件は、例えば、データストリームから類似部分シーケンスを検出するときの部分シーケンス長の下限値ζ、類似度スコアの平均値の閾値ε等（詳細は後記）である。この入力部１１は、インターネットやＬＡＮ経由でデータの送受信を行うための通信インタフェースや、入力装置等の外部装置との各種データの入出力を行うための入出力インタフェースにより実現される。
【００４４】
このような入力部１１は、２つのデータストリームから類似部分シーケンスを検出するときに用いる類似部分シーケンス検出条件の入力を受け付ける検出条件入力部１１１と、データストリームの入力を受け付けるデータストリーム入力部１１２とを含んで構成される。
【００４５】
処理部１２は、２つのデータストリームから類似部分シーケンスペアを検出するための各種演算処理を行うものであり、例えば、ＣＰＵ（Central Processing Unit）が記憶部１３のプログラムを実行することで実現される。この処理部１２は、データストリーム処理部１２１を備え、データストリーム入力部１１２で受信したデータストリームに関して、記憶部１３のタイムワーピングデータ記憶部１３２のタイムワーピング行列（マトリックス）を用いて、類似部分シーケンスペアを検出し、出力部１４の類似部分シーケンス出力部１４１（後記）経由で外部へ出力する。なお、このデータストリーム処理部１２１は、２つのデータストリームから部分シーケンス同士の類似度スコアの平均値を計算するとき、スコアリング関数を用いる。
【００４６】
スコアリング関数は、類似部分シーケンスペアを検出するための類似判定手段である。部分シーケンス間の類似度は、２つのシーケンス間の各要素同士をマッチングするために時間軸方向に最適に伸長を行った後、スコアとして算出される。スコアリング関数はＤＴＷと同様、動的計画法に基づくアプローチであるが、次の２つの点でＤＴＷと異なる。
【００４７】
１つ目は、累積スコアの最大値を用いて類似部分シーケンスペアを求めることである。一方、ＤＴＷは、累積距離の最小値を用いて類似部分シーケンスペアを求める。
【００４８】
２つ目は、スコアリング関数のための“zero-resetting”を導入したことである。これは、もしマトリックスの累積スコアｓ（ｉ，ｊ）が負の値となった場合、この値を０（ゼロ）で置き換えること意味する。このアプローチは、バイオインフォマティックスの分野で提案されており、Smith-Watermanアルゴリズムなどに実装されている。バイオインフォマティックス分野におけるシーケンスは記号シーケンスを対象としているが、本実施形態でのスコアリング関数は数値シーケンスを対象としている点で異なる。
【００４９】
スコアを０で置き換えることは、終了点（ｉ，ｊ）における部分シーケンスＸとＹが、もはや類似部分シーケンス検出の定義を満たしていない、すなわち、全く類似していないことを意味する。そのため、０が連続する区間では、この区間の部分シーケンスペアが全く類似していないことを表す。“zero-resetting”により、部分シーケンスペアＸ[ｉｓ：ｉｅ]（長さはＬｘ）とＹ[ｊｓ：ｊｅ]（長さはＬｙ）の間の類似度を評価することができる。
【００５０】
以下、スコアリング関数等について、さらに具体的に説明する。スコアリング関数は、一方のデータストリームＸ＝（ｘ１，ｘ２，…，ｘｎ,…）と、他方のデータストリームＹ＝（ｙ１，ｙ２，…，ｙｍ,…）との類似度スコアの平均値を計算するための関数である。データストリーム処理部１２１は、いずれかのデータストリームのデータが１つ到着するたびに、このスコアリング関数により、データストリームＸの部分シーケンスＸ［ｉｓ：ｉｅ］と、データストリームＹの部分シーケンスＹ［ｊｓ：ｊｅ］の類似度スコアを計算（算出）する。
【００５１】
なお、このスコアリング関数により計算される類似度スコアは、式（１）〜式（５）に示すように、類似度が高ければ加算され、類似度が低ければ減算される仕組みになっており、類似度スコアが閾値ε以上となる部分シーケンス同士が、類似する部分シーケンス同士であることを意味する。この類似度スコアは、データストリーム処理部１２１が、タイムワーピング行列（図３〜図６参照）を用いて、部分シーケンスＸと部分シーケンスＹの各要素同士を対応させて計算する。
【００５２】
２つの前記部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］との類似度スコアＳ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）は、以下の式（１）〜式（５）により算出される。なお、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍとする。
【００５３】
Ｓ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｓ（ｉｅ,ｊｅ）      ・・・式（１）
ｓ（ｉ,ｊ）＝ｍａｘ｛０，２ε−‖ｘｉ−ｙｊ‖＋ｓｂｅｓｔ｝  ・・・式（２）
ｓｂｅｓｔ＝ｍａｘ｛ｓ（ｉ,ｊ−１），ｓ（ｉ−１,ｊ），ｓ（ｉ−１,ｊ−１）｝
・・・式（３）
ｓ（ｉ,０）＝０                                          ・・・式（４）
ｓ（０,ｊ）＝０                                          ・・・式（５）
【００５４】
また、前記類似度スコアの平均値ｓ’は、以下の式（６）により算出される。
ｓ’＝ｓ（ｉ,ｊ）／Ｗ                                    ・・・式（６）
【００５５】
ここで、εは、類似判定のための閾値である。式（１）は、類似度スコアの定義である。式（２）は、具体的な計算式である。式（２）において、‖ｘｉ−ｙｊ‖は、２つの数値（ｘｉとｙｊ）の距離を表すものであり、例えば、ユークリッド距離やマンハッタン距離（Ｌ１距離）などが挙げられるが、ここでは、ユークリッド距離の二乗の値を使用する。
【００５６】
式（２），（３）におけるｍａｘ｛｝は、｛｝内の値のうち、最大のものを採用する、という意味である。なお、式（４）および式（５）は、タイムワーピング行列における境界条件である。また、Ｗは部分シーケンスＸ［ｉｓ：ｉｅ］と部分シーケンスＹ［ｊｓ：ｊｅ］とのタイムワーピングパスの長さを示す。この類似度スコアを用いたタイムワーピング行列および類似度スコアの平均値ｓ’を使用することで、シーケンスＸとシーケンＹにおける類似部分シーケンスのペアをより正確に検出することができる（詳細は後記）。
【００５７】
なお、式（２）に示すように、ｓ（ｉ,ｊ）を計算する場合において、「２ε−‖ｘｉ−ｙｊ‖＋ｓｂｅｓｔ」の値が０より小さくなったときには、ｓ（ｉ,ｊ）＝０とする。このようにすることで、類似度スコアが０より小さくなった場合でも、それ以降の部分シーケンスの類似度スコアに影響を与えないようにすることができる。つまり、類似度スコアのより高い部分シーケンス同士のつながりを反映した類似度スコアの計算を行うことができる。
【００５８】
また、タイムワーピング行列に記憶させる部分シーケンスＸ［ｉｓ：ｉｅ］の開始位置ｉｓと、前記部分シーケンスＹ［ｊｓ：ｊｅ］の開始位置ｊｓとを示すｐ（ｉ,ｊ）は、以下の式（７）により算出することができる。
【００５９】
ｐ（ｉ,ｊ）＝｛ｐ（ｉ,ｊ−１）  （if  ｓｂｅｓｔ＝ｓ（ｉ,ｊ−１）），
ｐ（ｉ−１,ｊ）  （if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ）），
ｐ（ｉ−１,ｊ−１）（if  ｓｂｅｓｔ＝ｓ（ｉ−１,ｊ−１）），
（ｉ,ｊ）      （if  ｓｂｅｓｔ＝０）｝    ・・・式（７）
【００６０】
そして、開始位置ｉｓ,ｊｓは、以下の式（８）により算出することができる。
（ｉｓ,ｊｓ）＝ｐ（ｉｅ,ｊｅ）                              ・・・式（８）
【００６１】
つまり、このタイムワーピング行列は、各要素に類似度スコアと、その類似度スコアの算出に用いた部分シーケンスＸ，Ｙの開始位置を保持することで、該当するタイムワーピングパスの開始位置を、過去に遡ることなく（過去のデータを保持することなく）認識することができる。
【００６２】
記憶部１３は、２つのデータストリームから類似部分シーケンス検出を行うための各種データを記憶する。この記憶部１３は、例えば、ＲＡＭ（Random Access Memory）と、ＨＤＤ（Hard Disk Drive）とにより実現される。この記憶部１３は、検出条件記憶部１３１と、タイムワーピングデータ記憶部１３２とを含んで構成される。なお、破線で示した類似部分シーケンス候補記憶部１３３については、別途、第２実施形態で説明する。
【００６３】
検出条件記憶部１３１は、類似部分シーケンス検出条件を記憶する。この類似部分シーケンス検出条件は、２つのデータストリームから類似部分シーケンスのペアを検出するときの部分シーケンス長の下限値ζ、類似度スコアの平均値の閾値ε等を示す情報である。
【００６４】
タイムワーピングデータ記憶部１３２は、前記したタイムワーピング行列（図３〜図６参照）を記憶する。このタイムワーピング行列が単一であることが、類似部分シーケンス検出装置１の特徴の1つである。すなわち、１つのタイムワーピング行列の使用で類似部分シーケンスペアを検出することができるので、多数のタイムワーピング行列を使用する場合に比較して、計算量やメモリ使用量の増加を大幅に抑制することができる。また、オリジナルのデータストリームを保持する必要がなく、メモリ使用量の増加をさらに抑制することができる。
【００６５】
なお、図３〜図６では、受信したデータストリームのすべての要素のタイムワーピング行列を示しているが、このタイムワーピングデータ記憶部１３２に用意されるタイムワーピング行列は、外側（新しいデータ側）の２行２列分のデータ（図３のマトリックスではｉ＝３，４、ｊ＝４，５の部分のデータ）があればよい。
【００６６】
出力部１４は、データストリーム処理部１２１で検出された類似部分シーケンスを出力する類似部分シーケンス出力部１４１を含んで構成される。この出力部１４は、前記した通信インタフェースや、出力装置等の外部装置との各種データの入出力を行うための入出力インタフェースにより実現される。
【００６７】
次に、類似部分シーケンス検出装置１の処理について説明する。図２は、第１実施形態の類似部分シーケンス検出装置１の処理を示すフローチャートである。ここでは、２つのデータストリームＸ（＝ｘ１，…，ｘｉ，…，ｘｎ，…）と、データストリームｙ（＝ｙ１，…，ｙｊ，…，ｙｍ，…）とにおける各要素が、順次与えられるものとする。
【００６８】
まず、データストリーム処理部１２１は、データストリーム入力部１１２経由で、時刻ｉにおいてデータｘｉを受信する（ステップＳ１１）。
次に、データストリーム処理部１２１は、ｊの値を０にリセットする（ステップＳ１２）。
【００６９】
その後、データストリーム処理部１２１は、ｊの値をインクリメント（１増加）させながら、ｊの値がｍになるまで、ステップＳ１３〜Ｓ１６の処理を繰り返す。
【００７０】
ステップＳ１３において、データストリーム処理部１２１は、ｘｉとｙｊの類似度スコアｓ（ｉ,ｊ）、類似度スコアの平均値ｓ’、および、開始位置ｐ（ｉ,ｊ）を、前記式（１）〜（７）を用いて計算する。
【００７１】
ステップＳ１４において、データストリーム処理部１２１は、ｓ’≧εかつＬｘ≧ζかつＬｙ≧ζの条件を満たすか否か、つまり、類似度スコアの平均値ｓ’が所定の閾値ε以上であり、かつ、その類似度スコアｓ（ｉ,ｊ）の算出に使用した２つの部分シーケンスの長さがいずれも所定の長さζ以上であるか否か、判断する。
【００７２】
ステップＳ１４でＹｅｓのとき、ステップＳ１５において、データストリーム処理部１２１は、（ｉｓ,ｊｓ）にｐ（ｉｅ,ｊｅ）、ｉｅにｉ、ｊｅにｊ、の値をそれぞれ代入する。
【００７３】
ステップＳ１６において、データストリーム処理部１２１は、ｉｓ,ｉｅ,ｊｓ, ｊｅ,ｓ’の値を、類似部分シーケンス出力部１４１経由でユーザに対して出力する。
【００７４】
ステップＳ１４でＮｏのとき、ステップＳ１５およびステップＳ１６をスキップする。
【００７５】
データストリーム処理部１２１は、データストリーム入力部１１２経由で、時刻ｊにおいてデータｙｊを受信した場合（ステップＳ２１）、ステップＳ１２〜ステップＳ１６の処理と同様にして、ステップＳ２２〜ステップＳ２６の処理を行う。
【００７６】
ステップＳ１３〜Ｓ１６の処理の後、あるいは、ステップＳ２３〜Ｓ２６の処理の後、データストリーム処理部１２１は、２つのデータストリームの受信が終了したか否か判断する（ステップＳ３１）。データストリーム処理部１２１は、終了していなければ（ステップＳ３１でＮｏ）ステップＳ１１あるいはステップＳ２１に戻り、終了していれば（ステップＳ３１でＹｅｓ）処理を終了する。
【００７７】
次に、この図２のフローチャートの処理の具体例について説明する。図３〜図６は、その具体例の説明図である。この具体例では、２つのデータストリームＸ＝（５，１２，６，１０，６，５，１）、ｙ＝（１１，６，９，４，１３，８，５）について、ε＝３、ζ＝４の条件の下、類似部分シーケンスペアを検出することを想定する。なお、前記したように、マトリックス（タイムワーピング行列）は、各要素（セル）に、類似度スコアと、その類似度スコアの算出に用いた部分シーケンスＸ，Ｙの開始位置を保持するものであるが、以下では、説明を容易にするために、各要素（セル）に、類似度スコアの平均値と前記開始位置を保持するものとして説明する。
【００７８】
データストリームＸまたはＹの１つの要素が到着した時点で、類似部分シーケンス検出装置１による処理が実行される。まず、ｉ＝４，ｊ＝５の時点、つまり、Ｘ＝（５，１２，６，１０）、ｙ＝（１１，６，９，４，１３）のデータをすでに受信した場合のマトリックスは図３のようになる。各セルには類似度スコアの平均値ｓ’と、その算出の開始点ｐ（ｉ，ｊ）の情報が保持されており、上段に類似度スコアの平均値ｓ’を、下段に開始点情報を示している。例えば、セル（４，３）の類似度スコアの平均値ｓ’は４であり、部分シーケンスＸ［２：４］とＹ［１：３］の類似度スコアの平均値であることを意味する。
【００７９】
そして、時刻ｉ＝５においてｘ５＝６が到着した場合、図２のステップＳ１１〜Ｓ１６の処理が実行され、図４の色付け（網掛け）されたセルの各値が計算される。図４はｉ＝５，ｊ＝５の時点におけるマトリックスである。このとき、丸印で囲ったセル（５，４）において、平均スコアがε（＝３）以上、長さがいずれもζ（＝４）以上となる部分シーケンスＸ［２：５］、Ｙ［１：４］のペアが類似部分シーケンスペアとして検出される。
【００８０】
データストリームＹの要素が到着した場合には、図２のステップＳ２１〜Ｓ２６の処理が実行される。データストリームＸおよびＹの各要素が到着した時点でこれらの処理が繰り返され、最終的なマトリックスは図５のようになる。図５はｉ＝７，ｊ＝７の時点におけるマトリックスである（各数値の記載は省略）。図５に示すように、最終的に、丸印で囲った５つのセルに対応する部分シーケンスペアが類似部分シーケンスペアとして検出される。
【００８１】
ナイーブな手法では、類似部分シーケンスペアを検出するためにＯ（ｎｍ２＋ｎ２ｍ）のメモリ量を使用し、単位時間あたりＯ（ｎｍ２）（Ｘの要素が到着した場合）またはＯ（ｎ２ｍ）（Ｙの要素が到着した場合）の距離値の更新が必要となる。一方、本実施形態では単一のマトリックスのみで類似部分シーケンスペアの検出が可能なため、Ｏ（ｍ＋ｎ）のメモリ量を使用し、単位時間あたりＯ（ｍ）（Ｘの要素が到着した場合）またはＯ（ｎ）（Ｙの要素が到着した場合）の値しか更新しなくてよい。そのため、計算量（計算時間）やメモリ使用量の大幅な低減化を実現できる。
【００８２】
≪第２実施形態≫
次に、第２実施形態について説明する。前記した第１実施形態の類似部分シーケンス検出装置１によれば、類似部分シーケンスペア検出により出力される類似部分シーケンスペアには、タイムワーピングパスの少なくとも一部が重複するものも含まれる。例えば、図５で検出される類似部分シーケンスペアは、Ｘ[１：５］とＹ［４：７］のペア、Ｘ［１：６］とＹ［４：７］のペア、Ｘ［２：５］とＹ［１：４］のペア、Ｘ［２：６］とＹ［１：４］のペア、Ｘ［２：７］とＹ［１：４］のペアの５つであり、これらのタイムワーピングパスは図６のようになる。図６は、図５で検出される類似部分シーケンスペアのタイムワーピングパスを示す図である。
【００８３】
前記したように、タイムワーピングパスとは、２つの部分シーケンスのどの要素同士がマッチングしているのかを示すものである。図６から確認できるように、５つのシーケンスペアは大きく２つのグループに分類できる、すなわち、５つのタイムワーピングパスは異なる２つのグループに分類することができる。そこで、第２実施形態の類似部分シーケンス検出装置１では、タイムワーピングパスが重複する複数の類似部分シーケンスペアから、タイムワーピングパスが最長の類似部分シーケンスペアを１つ選択して検出する。ユーザヘの報知（データ出力）はその選択されたタイムワーピングパスが最長の類似部分シーケンスペアのみとすることにより、ユーザが重複する情報を受け取る事態を回避できる。図５の例では、Ｘ［１：６］，Ｙ［４：７］のペア、および、Ｘ［２：７］，Ｙ［１：４］のペアが、出力されるタイムワーピングパスが最長の類似部分シーケンスペアとなる。
【００８４】
第２実施形態の類似部分シーケンス検出装置１について、第１実施形態の場合との相違点を中心に説明する。第２実施形態の類似部分シーケンス検出装置１は、タイムワーピングパスの少なくとも一部が重複する複数の類似部分シーケンスペアから、最長の類似部分シーケンスペアを１つ選択して検出することを特徴とする。以下の説明において、前記した第１実施形態と同様の構成要素には同じ符号を付して、説明を省略する。
【００８５】
類似部分シーケンス検出装置１は、図１に示すように、記憶部１３に類似部分シーケンス候補記憶部１３３を備える。この類似部分シーケンス候補記憶部１３３は、ｓ’≧εかつＬｘ≧ζかつＬｙ≧ζの条件を満たす類似部分シーケンスペアの情報を１つ以上記録（蓄積）する。
【００８６】
このような類似部分シーケンス検出装置１の処理手順を、図７を用いて説明する。図７は、第２実施形態の類似部分シーケンス検出装置の処理を示すフローチャートである。
【００８７】
データストリーム処理部１２１は、ステップＳ１５の後、ｉｓ,ｉｅ,ｊｓ, ｊｅ,ｓ’の値を類似部分シーケンスペアの候補として、記憶部１３の類似部分シーケンス候補記憶部１３３に記憶させる（ステップＳ１７）。ステップＳ２７についても同様である。
【００８８】
データストリーム処理部１２１は、ステップＳ１３〜Ｓ１７のループの後、あるいは、ステップＳ２３〜Ｓ２７のループの後、タイムワーピングパスの少なくとも一部が重複する複数の類似部分シーケンスペアのうち、タイムワーピングパスが最長となる類似部分シーケンスペアが決定したか否か判断する（ステップＳ４１）。この判断は、タイムワーピング行列（マトリックス）の各セルの開始位置の情報を使用することで実行できる。つまり、例えば、タイムワーピングパスの少なくとも一部が重複する類似部分シーケンスペアが複数あった場合、マトリックスにおいて逐次更新するすべてのセルの開始位置の情報がそれらの複数の類似部分シーケンスペアのタイムワーピングパスの終了位置よりも後ろになっていれば、重複する類似部分シーケンスペアはもうそれ以上ないことになる。
【００８９】
ステップＳ４１でＹｅｓのとき、データストリーム処理部１２１は、タイムワーピングパスが最長となる類似部分シーケンスペアを類似部分シーケンス出力部１４１経由でユーザに対して出力（ステップＳ４２）し、ステップＳ３１に移る。
【００９０】
このようにして、第２実施形態の類似部分シーケンス検出装置１によれば、タイムワーピングパスの少なくとも一部が重複する類似部分シーケンスペアが複数あった場合、その中でタイムワーピングパスが最長の類似部分シーケンスを出力するので、ユーザに対して、冗長な情報を与えることなく、より有益な情報（タイムワーピングパスが最長の類似部分シーケンス）を提供できる。
【００９１】
また、第１実施形態および第２実施形態の類似部分シーケンス検出方法を実行させるための類似部分シーケンス検出プログラムを作成すれば、そのプログラムを実行する一般的なコンピュータが類似部分シーケンス検出装置１として動作できる。
【００９２】
≪実験結果≫
次に、第１実施形態の類似部分シーケンス検出装置１を用いた処理の実験結果について説明する。実験結果を視覚的に把握するため、ここでは、散布図を用いる。例えば、図８は、図１３のシーケンス＃１と＃２から類似部分シーケンスペアを検出した結果を表す散布図である。図８の散布図は、シーケンス＃１と＃２における類似部分シーケンスペアであるＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]における要素ｉｅとｊｅを反映している。つまり、この図８における横軸はＸの要素を、縦軸はＹの要素を表し、部分シーケンスペアＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]が類似している場合、散布図の（ｉｅ，ｊｅ）の位置に点がプロットされる。
【００９３】
図８では、２つの実線で囲まれたそれぞれの部分が検出された小さなスパイクを、破線で囲まれた部分が検出された大きなスパイクを含んだ領域を、それぞれ表している。この図８では、２つのシーケンス間の類似部分シーケンスペアの周期性（出現間隔や出現時間幅）を確認することができる。
【００９４】
例えば、小さなスパイク＃１１と＃２２は類似しており、その関係は散布図において左の実線で囲まれた部分の一番左下に現れている。実線で囲まれた部分では、小さなスパイク同士の対応を表す６つの位置が規則的にプロットされており、＃１１や＃２２に類似する小さなスパイクが周期的に現れていることがわかる。シーケンス＃１と＃２では大小のそれぞれのスパイクの間隔が異なっているが、類似部分シーケンスペアの存在およびその周期性を確認することができる。
以下、図９〜図１１について、同様にして散布図を作成することができる。
【００９５】
次に、実データを用いた実験結果を示す。各実験は、２ＧＢのメモリ、３ＧＨｚのＣＰＵを搭載したコンピュータ上で実施した。
【００９６】
図９において、（ａ）と（ｂ）はホワイトノイズを持つ複数のサイン波から構成される人工データ（Sines）を示す図であり（縦軸は数値、横軸は時間）、（ｃ）は実験結果の散布図である。
図９の（ａ）と（ｂ）に示すように、Sines１とSines２は、含まれるサイン波の周期と、サイン波の現れる周期が、それぞれ異なっている。そして、図９（ｃ）に示すように、本実施形態の類似部分シーケンス検出装置１によれば、すべてのサイン波と時間変化する周期性を完全に特定（表現）することができていることがわかる。つまり、Sines１にはサイン波が６つ、Sines２にはサイン波が５つあり、散布図には３０個（＝６×５）のプロット群が存在している。また、図９（ｃ）の散布図において、各サイン波の周期の違いは傾きの違いとして表れていることが確認できる。
【００９７】
図１０において、（ａ）と（ｂ）は温度センサの計測値（Temperature）を示す図でありその温度は摂氏で表され（縦軸は温度、横軸は時間）、（ｃ）は実験結果の散布図である。
【００９８】
図１０の（ａ）と（ｂ）におけるデータの取得間隔は約１分であり、これらのデータでは多くの時刻で計測値が欠けている。Temperature１とTemperature２は、天候によって、約１８度から３２度まで大きく変動する温度変化が連続して２つ表れるパターンを、それぞれ２つずつ含んでいる（破線部分参照）。図１０（ｃ）に示すように、本実施形態の類似部分シーケンス検出装置１では、これらの２つずつのパターンを見つけることに成功していることがわかる。つまり、図１０（ｃ）の散布図には４個（＝２×２）のプロット群が存在している。
【００９９】
図１１において、（ａ）と（ｂ）はモーションキャプチャデータ（Mocap）を示す図であり、（ｃ）は実験結果の散布図である。この２つのデータ（Mocap１とMocap２）は、被験者の各部位にマーカーを取り付け、取り付けた部位の角速度を１秒間に１２０回というサンプリング周期で測定したモーションキャプチャデータである。表の“Sec.”が実際のモーション時間に対応しており、被験者があるモーションを連続して行っていることを示す。
【０１００】
例えば、Mocap１では、被験者がwalking-running-jumping-…の順にモーションを行ったことを意味する。本実験では、二の腕・肘下・太もも・ふくらはぎの各部位に左右対称に取り付けられたマーカーから取得された８個の角速度データを選択し、８次元データをして使用している。これらのデータにはwalkingモーションが含まれており（表の色付けした部分）、各walkingモーションのデータ長は異なっている。図１１（ｃ）に示すように、本実施形態の類似部分シーケンス検出装置１では、walkingモーションがすべて検出されている様子が散布図から確認できる。つまり、Mocap１にはwalkingが３つ、Mocap２にもwalkingが３つあり、散布図には９個（＝３×３）のプロット群が存在している。
【０１０１】
なお、Mocap１およびMocap２における「Time」の数値と、散布図におけるプロット群の位置とに多少のずれが生じている部分があるようにも見える。しかし、それは、被験者によるモーションの切り替えが連続的な場合（一旦停止なし）と不連続な場合（一旦停止あり）とが混在していて、次のモーションが始まるまでを検出している（つまり、あるモーションの終了直後に、すぐ次のモーションが始まる場合と、被験者の動きが一旦（１，２秒）停止する場合とでは、類似スコアの減少速度が異なる）ことに起因するものであり、本手法の精度とは無関係である。
【０１０２】
図１２は、本実施形態による方法とナイーブな手法との計算時間に関する比較図である。データには人工データを用い、シーケンス長（横軸）のｎとｍを変化させている。図１２では、マトリックスの更新と類似部分シーケンスペア検出の合計時間を平均し、計算時間として縦軸に示している。この実験結果から、本実施形態による方法がナイーブな手法と比べ、非常に高い性能を示している（処理の高速化を実現している）ことがわかる。つまり、計算量が、ナイーブな手法のＯ（ｎｍ２＋ｎ２ｍ）（マトリックスの数がＯ（ｎｍ）なので）と比較して、本実施形態による方法はＯ（ｍ＋ｎ）（マトリックスが単一なので）であり、大幅な低減化を達成している。
【０１０３】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、その趣旨を変えない範囲で実施することができる。
【０１０４】
その他、ハードウェア、ソフトウェアの具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
【０１０５】
なお、データストリームは、映像やセンサネットワーク、金融など様々な分野で発生する。本発明はこれらのすべての分野に適用可能である。
【図面の簡単な説明】
【０１０６】
【図１】第１実施形態の類似部分シーケンス検出装置の構成図である。
【図２】第１実施形態の類似部分シーケンス検出装置の処理を示すフローチャートである。
【図３】タイムワーピング行列の一例を示す図である。
【図４】タイムワーピング行列の一例を示す図である。
【図５】タイムワーピング行列の一例を示す図である。
【図６】タイムワーピング行列の一例を示す図である。
【図７】第２実施形態の類似部分シーケンス検出装置の処理を示すフローチャートである。
【図８】図１３のシーケンスから類似部分シーケンスペアを検出した結果を表す散布図である。
【図９】（ａ）と（ｂ）はホワイトノイズを持つ複数のサイン波から構成される人工データを示す図であり、（ｃ）は実験結果の散布図である。
【図１０】（ａ）と（ｂ）は温度センサの計測値を示す図であり、（ｃ）は実験結果の散布図である。
【図１１】（ａ）と（ｂ）はモーションキャプチャデータを示す図であり、（ｃ）は実験結果の散布図である。
【図１２】本実施形態による方法とナイーブな手法との計算時間に関する比較図である。
【図１３】類似部分シーケンスペアの検出に使用されるデータストリームの例である。
【図１４】ＤＴＷの説明図である。
【図１５】ＤＴＷによるタイムワーピング行列を例示した図である。
【符号の説明】
【０１０７】
１      類似部分シーケンス検出装置
１１    入力部
１２    処理部
１３    記憶部
１４    出力部
１１１  検出条件入力部
１１２  データストリーム入力部
１２１  データストリーム処理部
１３１  検出条件記憶部
１３２  タイムワーピングデータ記憶部
１３３  類似部分シーケンス候補記憶部
１４１  類似部分シーケンス出力部
【図１】
0005060340.tif 000002
【図２】
0005060340.tif 000003
【図３】
0005060340.tif 000004
【図４】
0005060340.tif 000005
【図５】
0005060340.tif 000006
【図６】
0005060340.tif 000007
【図７】
0005060340.tif 000008
【図８】
0005060340.tif 000009
【図９】
0005060340.tif 000010
【図１０】
0005060340.tif 000011
【図１１】
0005060340.tif 000012
【図１２】
0005060340.tif 000013
【図１３】
0005060340.tif 000014
【図１４】
0005060340.tif 000015
【図１５】
0005060340.tif 000016