(57)【要約】【課題】従来のＤＴＷ手法と比較して、同等の精度で、かつ、少ない計算コストで、類似する部分シーケンスのペアを検出することを課題とする。【解決手段】本発明の類似部分シーケンス検出装置１は、スコア行列および所定の閾値を記憶する記憶部１３と、処理部１２と、を備える。処理部１２は、２つのデータストリームから、類似する部分シーケンスのペアを、２つの部分シーケンス同士のＤＴＷ距離と相互変換可能な類似度スコアを行列要素とする単一のスコア行列を用いて、類似度スコアが所定の閾値以上である部分シーケンスのペアを類似する部分シーケンスのペアと判定し、適合する部分シーケンスのペアとして検出する。【選択図】図１
2010198227.tif 000002
【特許請求の範囲】
【請求項１】
２つのデータストリームから、類似する部分シーケンスのペアを、２つの前記部分シーケンス同士のＤＴＷ(Dynamic Time Warping）距離と相互変換可能な類似度スコアを行列要素とする単一のスコア行列を用いて検出する類似部分シーケンス検出装置であって、
前記スコア行列、および、所定の閾値を記憶する記憶部と、
前記２つのデータストリームのいずれかのデータの１つの要素を受信したとき、当該要素を含む前記データストリーム中の部分シーケンスと、他方の前記データストリーム中の部分シーケンスと、の類似度スコアを算出し、
前記算出した類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記記憶部のスコア行列に記憶し、
前記記憶部のスコア行列に記憶された前記類似度スコアが前記所定の閾値以上である部分シーケンスのペアを類似する部分シーケンスのペアと判定し、この類似する部分シーケンスのペアを適合する部分シーケンスのペアとして検出する処理部と、を備え、
前記処理部は、
前記類似度スコアのいずれかを算出するとき、
前記スコア行列において当該類似度スコアと隣接し前記２つのデータストリームのいずれかあるいは両方に関して１つ前の時刻に対応する３つの前記類似度スコアのうちの最大の類似度スコアを取得し、
当該取得した最大の類似度スコアに対して、対象の２つの前記部分シーケンスにおける対応するデータの要素同士の差の大きさに応じた値を減算するとともに、
前記取得した最大の類似度スコアの算出に使用した２つの前記部分シーケンスの長さに比べたときの当該類似度スコアの算出に使用した２つの前記部分シーケンスの長さの伸びに応じた数値を加算することで、当該類似度スコアを算出する
ことを特徴とする類似部分シーケンス検出装置。
【請求項２】
前記処理部は、
前記適合する部分シーケンスのペアを検出したとき、
当該適合する部分シーケンスのペアの類似度スコアと２つの部分シーケンスの長さとに基づいてＤＴＷ距離を算出する
ことを特徴とする請求項１に記載の類似部分シーケンス検出装置。
【請求項３】
前記処理部は、
前記類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置を前記記憶部のスコア行列に記憶するとき、前記取得した最大の類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置を、前記類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置として前記記憶部のスコア行列に記憶し、
前記適合する部分シーケンスのペアを検出するとき、前記記憶部のスコア行列を参照して、前記所定の閾値以上の前記類似度スコアに対応する開始位置を特定する
ことを特徴とする請求項１または請求項２に記載の類似部分シーケンス検出装置。
【請求項４】
前記所定の閾値は、前記適合する部分シーケンスのペアの２つの部分シーケンスの長さの下限値として予め設定された値に、前記データストリームの種類に応じて予め設定された所定の係数を乗算した値であり、
前記処理部は、
前記適合する部分シーケンスのペアを検出するとき、当該所定の閾値を用いることで、前記下限値以上の長さの適合する部分シーケンスのペアを検出する
ことを特徴とする請求項３に記載の類似部分シーケンス検出装置。
【請求項５】
前記処理部は、
前記類似度スコアが前記所定の閾値以上である複数の部分シーケンスのペアを、複数の適合する部分シーケンスのペアとして前記記憶部に記憶し、
前記記憶部に記憶された複数の前記適合する部分シーケンスのペアのうち、算出に使用した前記スコア行列における行列要素の少なくとも一部に重複しているものがあるとき、前記重複している複数の適合する部分シーケンスのペアの中から、前記類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出する
ことを特徴とする請求項４に記載の類似部分シーケンス検出装置。
【請求項６】
前記処理部は、
前記重複している複数の適合する部分シーケンスのペアの中から、前記類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出するとき、
前記スコア行列において、前記類似度スコアがその時点で最大の適合する部分シーケンスのペアの終了位置より後の行および列のいずれにおいても、開始位置が当該最大の適合する部分シーケンスのペアの開始位置と一致する部分シーケンスのペアが１つもないと判定した場合、当該最大の適合する部分シーケンスのペアを最適な部分シーケンスのペアとして検出する
ことを特徴とする請求項５に記載の類似部分シーケンス検出装置。
【請求項７】
２つのデータストリームから、類似する部分シーケンスのペアを、２つの前記部分シーケンス同士のＤＴＷ(Dynamic Time Warping）距離と相互変換可能な類似度スコアを行列要素とする単一のスコア行列を用いて検出する類似部分シーケンス検出装置による類似部分シーケンス検出方法であって、
前記類似部分シーケンス検出装置は、
前記スコア行列、および、所定の閾値を記憶する記憶部と、
前記２つのデータストリームのいずれかのデータの１つの要素を受信したとき、当該要素を含む前記データストリーム中の部分シーケンスと、他方の前記データストリーム中の部分シーケンスと、の類似度スコアを算出し、
前記算出した類似度スコアと、その類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置および終了位置と、を対応付けて前記記憶部のスコア行列に記憶し、
前記記憶部のスコア行列に記憶された前記類似度スコアが前記所定の閾値以上である部分シーケンスのペアを類似する部分シーケンスのペアと判定し、この類似する部分シーケンスのペアを適合する部分シーケンスのペアとして検出する処理部と、を備えており、
前記処理部は、
前記類似度スコアのいずれかを算出するとき、
前記スコア行列において当該類似度スコアと隣接し前記２つのデータストリームのいずれかあるいは両方に関して１つ前の時刻に対応する３つの前記類似度スコアのうちの最大の類似度スコアを取得し、
当該取得した最大の類似度スコアに対して、対象の２つの前記部分シーケンスにおける対応するデータの要素同士の差の大きさに応じた値を減算するとともに、
前記取得した最大の類似度スコアの算出に使用した２つの前記部分シーケンスの長さに比べたときの当該類似度スコアの算出に使用した２つの前記部分シーケンスの長さの伸びに応じた数値を加算することで、当該類似度スコアを算出する
ことを特徴とする類似部分シーケンス検出方法。
【請求項８】
前記処理部は、
前記適合する部分シーケンスのペアを検出したとき、
当該適合する部分シーケンスのペアの類似度スコアと２つの部分シーケンスの長さとに基づいてＤＴＷ距離を算出する
ことを特徴とする請求項７に記載の類似部分シーケンス検出方法。
【請求項９】
前記処理部は、
前記類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置を前記記憶部のスコア行列に記憶するとき、前記取得した最大の類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置を、前記類似度スコアの算出に用いた２つの前記部分シーケンスの開始位置として前記記憶部のスコア行列に記憶し、
前記適合する部分シーケンスのペアを検出するとき、前記記憶部のスコア行列を参照して、前記所定の閾値以上の前記類似度スコアに対応する開始位置を特定する
ことを特徴とする請求項７または請求項８に記載の類似部分シーケンス検出方法。
【請求項１０】
前記所定の閾値は、前記適合する部分シーケンスのペアの２つの部分シーケンスの長さの下限値として予め設定された値に、前記データストリームの種類に応じて予め設定された所定の係数を乗算した値であり、
前記処理部は、
前記適合する部分シーケンスのペアを検出するとき、当該所定の閾値を用いることで、前記下限値以上の長さの適合する部分シーケンスのペアを検出する
ことを特徴とする請求項９に記載の類似部分シーケンス検出方法。
【請求項１１】
前記処理部は、
前記類似度スコアが前記所定の閾値以上である複数の部分シーケンスのペアを、複数の適合する部分シーケンスのペアとして前記記憶部に記憶し、
前記記憶部に記憶された複数の前記適合する部分シーケンスのペアのうち、算出に使用した前記スコア行列における行列要素の少なくとも一部に重複しているものがあるとき、前記重複している複数の適合する部分シーケンスのペアの中から、前記類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出する
ことを特徴とする請求項１０に記載の類似部分シーケンス検出方法。
【請求項１２】
前記処理部は、
前記重複している複数の適合する部分シーケンスのペアの中から、前記類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出するとき、
前記スコア行列において、前記類似度スコアがその時点で最大の適合する部分シーケンスのペアの終了位置より後の行および列のいずれにおいても、開始位置が当該最大の適合する部分シーケンスのペアの開始位置と一致する部分シーケンスのペアが１つもないと判定した場合、当該最大の適合する部分シーケンスのペアを最適な部分シーケンスのペアとして検出する
ことを特徴とする請求項１１に記載の類似部分シーケンス検出方法。
【請求項１３】
請求項７ないし請求項１２のいずれか１項に記載の類似部分シーケンス検出方法をコンピュータに実行させるための類似部分シーケンス検出プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ストリームマイニングにおいて類似部分シーケンスペアを検出する技術に関する。
【背景技術】
【０００２】
データストリーム（以下、単に「ストリーム」ともいう。）とは、ネットワークから高速に流れてくる大量のデータのことである。ストリームマイニングとは、時系列として表現されるデータストリームから役に立つ情報を素早く見つけ出す技術である。ストリームマイニングは、単にデータベースに蓄えられた大規模データを分析するものではなく、増え続けるデータの流れをリアルタイムに分析し、監視するための技術である。そして、増え続ける大規模なデータを分析するため、また、ユーザに情報をリアルタイムに提供するため、ストリームマイニングの技術は高速化と省メモリ化を図る必要がある。
【０００３】
ストリーム監視においては、シーケンスマッチング技術が必要とされる。シーケンスマッチングでは、例えば、２つのデータシーケンス間の類似度を距離（距離値）として表し、この距離を用いて類似度を判断する。これまでも多くのシーケンスマッチング技術が提案されてきたが、その多くは蓄積されたデータセットを対象としたものである。例えば、データベースに蓄積されたシーケンスに対して問い合わせシーケンスに類似する部分的なシーケンス（部分シーケンス）を検出する手法などである。
【０００４】
また、シーケンスマッチング技術では、データストリームのサンプリングレートなどによって、データストリームと問合せシーケンスの間や、２つのデータストリームの間で、相対的な経時速度が異なることがあるので、データの時間軸方向の伸縮も考慮に入れたマッチングを行うことが望ましい。
【０００５】
これらについて、図１２を用いて説明する。図１２は、類似部分シーケンスペアの検出に使用されるデータストリーム（シーケンス）の例である。図１２の（ａ）と（ｂ）に示すように、シーケンス＃１は＃１１、＃１２、＃１４に、シーケンス＃２は＃２２、＃２３に、小さなスパイク（突出部）が存在するデータである。各スパイクの振幅はほぼ同じであるが、周期（時間幅）はそれぞれ異なっている。また、これらのシーケンスには３つの大きなスパイク（＃１３、＃２１、＃２４）が含まれており、これらについても周期は異なっている。
【０００６】
ここで、２つのシーケンス間の部分的な類似を見つけることを考える。例えば、部分シーケンスペア＃１１と＃２２、＃１１と＃２３、＃１３と＃２１、＃１３と＃２４は、シーケンス＃１と＃２の類似部分シーケンスペアである。これらのペアの周期は異なっているため、時間軸方向の伸縮を考慮しない場合、的確に検出することが困難である。
【０００７】
例えば、データストリームＸを、時刻Ｉ＝ｉ１，ｉ２，…，ｉｎ，…で収集されるｘ１，ｘ２，…，ｘｎ，…の値からなる半無限長のシーケンスとして表記する。ｘｎはｉｎにおける最新のデータであり、時間の経過と共にｎは増加する。Ｘ[ｉｓ：ｉｅ]をｉｓからｉｅまでの部分シーケンスであるとする。同様に、Ｙは、ｙ１，ｙ２，…，ｙｍ，…の値からなるシーケンスであり、Ｙ[ｊｓ：ｊｅ]をｊｓからｊｅまでの部分シーケンスであるとする。例えば、シーケンス＃１をデータストリームＸ、シーケンス＃２をデータストリームＹとすると、部分シーケンス＃１１はＸ［１１５５：２７１２］、＃２２はＹ［６１１１：８３６１］と表せる。
【０００８】
この時間軸方向の伸縮を考慮する距離関数としては、ダイナミックタイムワーピング（ＤＴＷ：Dynamic Time Warping）が広く用いられている。ＤＴＷは、蓄積されたシーケンスに対して用いられる距離関数であり、２つのシーケンス間の距離を最小化するように時間軸方向に伸長を行い、各要素同士をマッチングさせた計算により距離値を求め、類似か否かを、距離値と閾値によって判定する。この距離値はＤＴＷ距離と呼ばれ、最適にシーケンス長を調整した後の距離の合計値で表され、動的計画法に基づくタイムワーピング行列によって計算される。ＤＴＷ距離の値が小さいほど２つのシーケンスは類似度が高く、ＤＴＷ距離の値が「０」の場合は２つのシーケンスが完全に一致していることを意味する。
【０００９】
図１３は、ＤＴＷの説明図である。図１３（ａ）に示すように、２つのシーケンスＸ＝（ｘ１，ｘ２，…，ｘi，…，ｘｎ）とシーケンスＹ＝（ｙ１，ｙ２，…，ｙｊ，…，ｙｍ）に関して、ＤＴＷ距離を求める際、ＤＴＷ距離が最小になるように対応付けがなされる。２つのシーケンスの長さが同じ場合でも異なる場合でも、ＤＴＷは各要素を適切に対応付けることができる。
【００１０】
図１３（ｂ）に示すように、ＤＴＷ距離の計算に用いられるタイムワーピング行列において、２つのシーケンス間で対応付けられたその組み合わせ（集合）はタイムワーピングパスと呼ばれ、ここでは色付け（黒塗り）されたセルとして示している。
【００１１】
ＤＴＷ距離について、さらに説明する。長さｎのシーケンスＸ＝（ｘ１，ｘ２，…，ｘｎ）と長さｍのシーケンスＹ＝（ｙ１，ｙ２，…，ｙｍ）において、これらのＤＴＷ距離Ｄ（Ｘ，Ｙ）は以下の式（１）〜（４）によって算出される。なお、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍとする。
【００１２】
Ｄ（Ｘ，Ｙ）＝ｆ（ｎ，ｍ）                              ・・・式（１）
ｆ（ｉ，ｊ）＝‖ｘｉ−ｙｊ‖＋ｍｉｎ｛ｆ（ｉ，ｊ−１），
ｆ（ｉ−１，ｊ），
ｆ（ｉ−１，ｊ−１）｝・・・式（２）
ｆ（０，０）＝０                                        ・・・式（３）
ｆ（ｉ，０）＝ｆ（０，ｊ）＝∞                          ・・・式（４）
【００１３】
式（１）は、ＤＴＷ距離の定義である。式（２）は、具体的な計算式である。式（２）において、‖ｘｉ−ｙｊ‖は、２つの数値（ｘｉとｙｊ）の距離を表すものであり、例えば、ユークリッド距離やマンハッタン距離（Ｌ１距離）などが挙げられる。ｎ次元空間において、ａ，ｂという２つの点の座標をａ（ａ１，ａ２，…，ａｎ），ｂ（ｂ１，ｂ２，…，ｂｎ）とし、また、（１≦ｋ≦ｎ）とすると、ユークリッド距離とは√（Σ（ａｋ−ｂｋ）２）、マンハッタン距離とはΣ｜ａｋ−ｂｋ｜で表される距離のことである。
【００１４】
式（２）において、ｍｉｎ｛ｆ（ｉ，ｊ−１），ｆ（ｉ−１，ｊ），ｆ（ｉ−１，ｊ−１）｝は、｛｝内の３つの値のうち、最小のものを採用する、という意味である。式（３）および式（４）は、これらの３つの値を計算する際に使用する、タイムワーピング行列における境界条件である。このＤＴＷ距離を用いたタイムワーピング行列によれば、シーケンスＹと類似するシーケンスＸの部分シーケンスを検出することができる。
【００１５】
例えば、特許文献１では、ＤＴＷによってストリームのシーケンスマッチングを行う手法が提案されている。特許文献２や非特許文献１，２では、リアルタイムでのストリーム監視に焦点をあて、ストリーム間の相関を検出する手法が提案されている。また、非特許文献３では、ストリームから部分シーケンスペアを検出する手法が提案されている。
【先行技術文献】
【特許文献】
【００１６】
【特許文献１】特開２００８−１３４７０６号公報
【特許文献２】特開２００７−１５０４８４号公報
【非特許文献】
【００１７】
【非特許文献１】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.
【非特許文献３】M. Toyoda, Y. Sakurai and T. Ichikawa: “Identifying similar subsequences in Data stream”, In Proceedings of the 19th International Conference on Database and Expert Systems Applications (DEXA2008), Lecture Note in Computer Science Vol. 5181, pp. 210-224
【発明の概要】
【発明が解決しようとする課題】
【００１８】
しかしながら、特許文献１の技術は、問合せシーケンスに類似する部分シーケンスをストリームから検出するものであり、それ以外の類似を見つけるには大きな計算コストがかかる。また、特許文献２や非特許文献１，２の技術は、時間軸方向の調節がない距離尺度を用いており、２つのデータストリームのサンプリングレートが異なる場合などに類似している部分シーケンスを見つけることができないことがある。
【００１９】
非特許文献３の技術は、時間軸方向の伸縮を考慮し、問合せシーケンスを用いることなくストリームから類似する部分シーケンスのペアを検出するものであり、類似する部分シーケンスのペアを柔軟に見つけることができる。しかし、類似判定には独自の距離関数を用いており、ＤＴＷのように広く用いられ、その効果の有用性も認知されている距離関数を用いた場合との検出結果が異なる。すなわち、実験で用いられている以外のデータセットに適用した場合の効果が保証されていないものであった。
【００２０】
また、ＤＴＷは、計算コストが高いことが知られている。例えば、長さｎのシーケンスＸと長さｍのシーケンスＹの距離を求めようとすると、ＤＴＷはＯ（ｍｎ）の時間を要する。これは、ＤＴＷが２つのシーケンスのすべての要素を対応付けて計算を行うためであり、特に長いシーケンスを扱う場合には計算コストが著しく大きくなる。つまり、ＤＴＷの場合、データストリームから類似部分シーケンスを検出するとき、あらゆるパターンの部分シーケンスとの比較を行う必要があるので、時刻が経過してデータストリームのデータが到着するたびにタイムワーピング行列を追加するとともに、すべてのタイムワーピング行列を更新する必要がある。本明細書では、この方法をナイーブな手法と呼ぶ。
【００２１】
ナイーブな手法では、ｉ，ｊ番目の行列（すなわち、データストリームＸの時刻ｉとデータストリームＹの時刻ｊから始まる行列）において、要素（ｋ，ｌ）の距離をｄｉ，ｊ（ｋ，ｌ）とすると、ＸとＹの部分シーケンスマッチングの距離Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）は、前記した式（１）〜（４）のように、以下の式（５）〜（９）によって算出される。なお、ｉ＝１,２，…,ｎ、ｐ＝１,２，…,ｎ−ｉ＋１、ｊ＝１,２，…,ｍ、ｑ＝１,２，…,ｍ−ｊ＋１である。また、式７（２）において、ｄｂｅｓｔ＝｛ｄｉ，ｊ（ｐ，ｑ−１），ｄｉ,ｊ（ｐ−１,ｑ），ｄｉ,ｊ（ｐ−１,ｑ−１）｝は、｛｝内の３つの値のうち、ベスト（例えば最小）のものを採用する、という意味である。
【００２２】
Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｄｉｓ,ｊｓ（ｌｘ,ｌｙ）・・・式（５）
ｄｉ,ｊ（ｐ,ｑ）＝‖ｘｉ＋ｐ−１−ｙｊ＋ｑ−１‖＋ｄｂｅｓｔ     ・・・式（６）
ｄｂｅｓｔ＝｛ｄｉ，ｊ（ｐ，ｑ−１），
ｄｉ,ｊ（ｐ−１,ｑ），
ｄｉ,ｊ（ｐ−１,ｑ−１）｝                       ・・・式（７）
ｄｉ,ｊ（０,０）＝０                                        ・・・式（８）
ｄｉ,ｊ（ｐ,０）＝ｄｉ,ｊ（０,ｑ）＝∞                        ・・・式（９）
【００２３】
ナイーブな手法では、各時刻で新たな行列を作成するため、Ｏ（ｍｎ）個の行列を必要とする。また、１つのタイムワーピング行列に対し、ＸとＹのそれぞれの要素について、タイムワーピング行列の２列（すなわち、現在の列と直前の列）がＤＴＷ距離を計算するために必要になる。そのため、毎時刻に更新する必要のある値はＯ（ｍ２ｎ）またはＯ（ｍｎ２）となり、つまり、単位時間あたりＯ（ｍ２ｎ＋ｍｎ２）個の値を更新することになり、計算コスト（計算量やメモリ使用量）が大幅に増加するという問題がある。
【００２４】
そこで、本発明は、前記問題を解決するためのものであり、２つのデータストリームから、従来のＤＴＷ手法と比較して、同等の精度で、かつ、少ない計算コストで、類似する部分シーケンスのペアを検出することを課題とする。
【課題を解決するための手段】
【００２５】
前記した課題を解決するため、本発明は、２つのデータストリームから、類似する部分シーケンスのペアを、２つの部分シーケンス同士のＤＴＷ距離と相互変換可能な類似度スコアを行列要素とする単一のスコア行列を用いて検出する類似部分シーケンス検出装置であって、スコア行列、および、所定の閾値を記憶する記憶部と、２つのデータストリームのいずれかのデータの１つの要素を受信したとき、当該要素を含むデータストリーム中の部分シーケンスと、他方のデータストリーム中の部分シーケンスと、の類似度スコアを算出し、算出した類似度スコアと、その類似度スコアの算出に用いた２つの部分シーケンスの開始位置および終了位置と、を対応付けて記憶部のスコア行列に記憶し、記憶部のスコア行列に記憶された類似度スコアが所定の閾値以上である部分シーケンスのペアを類似する部分シーケンスのペアと判定し、この類似する部分シーケンスのペアを適合する部分シーケンスのペアとして検出する処理部と、を備える。処理部は、類似度スコアのいずれかを算出するとき、スコア行列において当該類似度スコアと隣接し２つのデータストリームのいずれかあるいは両方に関して１つ前の時刻に対応する３つの類似度スコアのうちの最大の類似度スコアを取得し、当該取得した最大の類似度スコアに対して、対象の２つの部分シーケンスにおける対応するデータの要素同士の差の大きさに応じた値を減算するとともに、取得した最大の類似度スコアの算出に使用した２つの部分シーケンスの長さに比べたときの当該類似度スコアの算出に使用した２つの部分シーケンスの長さの伸びに応じた数値を加算することで、当該類似度スコアを算出することを特徴とする。
【００２６】
かかる発明によれば、２つのデータストリームから、類似する部分シーケンスのペアを、２つの部分シーケンス同士のＤＴＷ距離と相互変換可能な類似度スコアと所定の閾値とを用いて、適合する部分シーケンスのペアとして検出することで、従来のＤＴＷ手法と比較して、同等の精度を保証できる。また、単一のスコア行列を用いることで、従来のＤＴＷ手法と比較して、少ない計算コストで済む。
【００２７】
また、本発明は、処理部が、適合する部分シーケンスのペアを検出したとき、当該適合する部分シーケンスのペアの類似度スコアと２つの部分シーケンスの長さとに基づいてＤＴＷ距離を算出することを特徴とする。
【００２８】
かかる発明によれば、適合する部分シーケンスのペアの類似度スコアをＤＴＷ距離に変換することで、ユーザは、従来のＤＴＷ手法を使用したときと変わらない結果を得ることができる。
【００２９】
また、本発明は、処理部が、類似度スコアの算出に用いた２つの部分シーケンスの開始位置を記憶部のスコア行列に記憶するとき、取得した最大の類似度スコアの算出に用いた２つの部分シーケンスの開始位置を、類似度スコアの算出に用いた２つの部分シーケンスの開始位置として記憶部のスコア行列に記憶し、適合する部分シーケンスのペアを検出するとき、記憶部のスコア行列を参照して、所定の閾値以上の類似度スコアに対応する開始位置を特定することを特徴とする。
【００３０】
かかる発明によれば、取得した最大の類似度スコアの算出に用いた２つの部分シーケンスの開始位置を引き継ぐことで、類似度スコアの算出と同時に開始位置を特定することができる。
【００３１】
また、本発明は、所定の閾値が、適合する部分シーケンスのペアの２つの部分シーケンスの長さの下限値として予め設定された値に、データストリームの種類に応じて予め設定された所定の係数を乗算した値であり、処理部は、適合する部分シーケンスのペアを検出するとき、当該所定の閾値を用いることで、下限値以上の長さの適合する部分シーケンスのペアを検出することを特徴とする。
【００３２】
かかる発明によれば、前記所定の閾値を用いて、下限値以上の長さの適合する部分シーケンスのペアを検出することで、短すぎて意味の少ない部分シーケンスのペアの検出を回避し、ユーザの真の要求に沿った部分シーケンスのペアを検出することができる。
【００３３】
また、本発明は、処理部が、類似度スコアが所定の閾値以上である複数の部分シーケンスのペアを、複数の適合する部分シーケンスのペアとして記憶部に記憶し、記憶部に記憶された複数の適合する部分シーケンスのペアのうち、算出に使用したスコア行列における行列要素の少なくとも一部に重複しているものがあるとき、重複している複数の適合する部分シーケンスのペアの中から、類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出することを特徴とする。
【００３４】
かかる発明によれば、算出に使用したスコア行列における行列要素の少なくとも一部が重複している複数の適合する部分シーケンスのペアの中から類似度スコアが最大のものを検出することで、ユーザに対して、冗長性の少ない有益な情報を提供するとともに、検出速度の低下を抑制することができる。
【００３５】
また、本発明は、処理部が、重複している複数の適合する部分シーケンスのペアの中から、類似度スコアが最大の適合する部分シーケンスのペアを、最適な部分シーケンスのペアとして検出するとき、スコア行列において、類似度スコアがその時点で最大の適合する部分シーケンスのペアの終了位置より後の行および列のいずれにおいても、開始位置が当該最大の適合する部分シーケンスのペアの開始位置と一致する部分シーケンスのペアが１つもないと判定した場合、当該最大の適合する部分シーケンスのペアを最適な部分シーケンスのペアとして検出することを特徴とする。
【００３６】
かかる発明によれば、スコア行列において、類似度スコアがその時点で最大の適合する部分シーケンスのペアの終了位置より後の行および列のいずれにおいても、開始位置が当該最大の適合する部分シーケンスのペアの開始位置と一致する部分シーケンスのペアが１つもないと判定した場合、当該最大の適合する部分シーケンスのペアを最適な部分シーケンスのペアとして検出することで、検出漏れを確実に回避し、早期に報知することができる。
【００３７】
また、本発明は、類似部分シーケンス検出方法をコンピュータに実行させるための類似部分シーケンス検出プログラムである。このようなプログラムによれば、類似部分シーケンス検出方法を一般的なコンピュータに実行させることができる。
【発明の効果】
【００３８】
本発明によれば、２つのデータストリームから、従来のＤＴＷ手法と比較して、同等の精度で、かつ、少ない計算コストで、類似する部分シーケンスのペアを検出することができる。
【図面の簡単な説明】
【００３９】
【図１】本実施形態の類似部分シーケンス検出装置の構成図である。
【図２Ａ】第１の部分シーケンスペア検出処理（適合する部分シーケンスペアの検出処理）を示すフローチャートである。
【図２Ｂ】第２の部分シーケンスペア検出処理（最適な部分シーケンスペアの検出処理）を示すフローチャートである。
【図３】候補配列への格納処理を示すフローチャートである。
【図４】最適な部分シーケンスペアの報知処理を示すフローチャートである。
【図５】スコア行列の例を示す図である。
【図６】（ａ）と（ｂ）はホワイトノイズを持つ複数のサイン波から構成される人工データ（Sines＃１とSines＃２）を示す図であり（縦軸は数値、横軸は時間）、（ｃ）は実験結果の散布図である。
【図７】（ａ）と（ｂ）は大小のスパイクから構成される人工データ（Spikes＃１とSpikes＃２）を示す図であり（縦軸は数値、横軸は時間）、（ｃ）は実験結果の散布図である。
【図８】（ａ）と（ｂ）は自動車の交通量（Automobile traffic）の時系列データ（Traffic＃１とTraffic＃２）を示す図であり（縦軸は数値、横軸は時間）、（ｃ）はその散布図である。
【図９】（ａ）はメールサイト（Mail site）のアクセス数を１０秒毎に記録したデータセットであり、（ｂ）はブログサイト（Blog site）のアクセス数を１０秒毎に記録したデータセットであり、（ｃ）はその散布図である。
【図１０】（ａ）と（ｂ）は１日毎の太陽の黒点数（Sunspots＃１とSunspots＃２）を記録したデータを示す図であり（縦軸は数値、横軸は時間）、（ｃ）はその散布図である。
【図１１】本実施形態による部分シーケンスマッチングの様子を示す模式図である。
【図１２】データストリームからの類似部分シーケンスペアの検出例である。
【図１３】ＤＴＷの説明図である。
【発明を実施するための形態】
【００４０】
以下、図面を参照（言及図以外の図も適宜参照）して、本発明を実施するための形態（以下、実施形態という。）について説明する。ここでは、本実施形態のポイント、具体的な実施形態、実験結果の順で説明する。
【００４１】
≪本実施形態のポイント≫
本実施形態の目的は、次の式（１０）を満たす部分シーケンスペアを検出することである。
Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）≦εＬ（ｌｘ，ｌｙ）  ・・・式（１０）
【００４２】
前記したように、Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）はＸの部分シーケンスとＹの部分シーケンスのＤＴＷ距離である。しかし、本実施形態では、ＤＴＷ距離を直接計算するのではなく類似度スコア（以下、単に「スコア」ともいう。詳細は後記）を計算することで、従来のＤＴＷ手法と比較して、同等の精度で、かつ、少ない計算コストで、類似する部分シーケンスのペアを検出することができる。
【００４３】
ここで、Ｌ（ｌｘ，ｌｙ）は部分シーケンスペアの長さを表す関数である。本実施形態では、２つの部分シーケンスの平均長であるＬ（ｌｘ，ｌｙ）＝（ｌｘ＋ｌｙ）／２を用いるが、他の長さでもかまわない（すなわち、Ｌ（ｌｘ，ｌｙ）＝ｍａｘ（ｌｘ＋ｌｙ），Ｌ（ｌｘ，ｌｙ）＝ｍｉｎ（ｌｘ＋ｌｙ）などでもよい）。つまり、ＤＴＷ距離は、対応付けられた要素間の距離の合計で表されるため、部分シーケンス長が長くなるにつれてその値は大きくなる。そのため、類似判定に使用する閾値も部分シーケンス長に比例することが望ましいと考えられるので、εＬ（ｌｘ，ｌｙ）を用いて判定を行なう。なお、εは、データストリームの種類に応じて予め設定される所定の係数である。
【００４４】
また、以下の「具体的な実施形態」における第１の部分シーケンスペア検出処理（適合する部分シーケンスペアの検出処理）（図２Ａ参照）では、意味の少ないシーケンスの排除を実現する。従来のＤＴＷではシーケンス長の極端に短い適合ペアを検出する可能性がある。しかしながら、データストリームのような半無限長のシーケンスを考えた場合、極端に短いシーケンスはあまり意味を持たないことが多い。例えば、データストリームＸとＹのシーケンス長が50000である場合に、適合した部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］の長さが「２」と「４」である場合、これらを見ただけで有用な情報が得られるとは言いがたい。すなわち、検出する部分シーケンスの長さは、ユーザの要求に応じて決定する。
【００４５】
そして、以下の「具体的な実施形態」における第２の部分シーケンスペア検出処理（最適な部分シーケンスペアの検出処理）（図２Ｂ参照）では、重複シーケンスの排除をさらに実現する。部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］が類似する時、その部分シーケンスペアと一部の区間が重複する他の多くの部分シーケンス同士も類似と判断されることがある。ここで、重複には、主に次の２つのケースが考えられる。１つは、開始位置が異なる２つ以上の部分シーケンスペアのワーピングパスが途中から重複する場合である。もう１つは、重複したワーピングパスが途中から分離する場合である。
【００４６】
そこで、一部重複する複数の部分シーケンスペアの中から最も類似度の高い部分シーケンスペアを検出することを考える。これは、（ａ）重複する部分シーケンスペアは冗長な情報である、（ｂ）不必要な結果についてもユーザに報知することでアルゴリズムの処理速度が低下する、という２つの理由のためである。
【００４７】
すなわち、本実施形態の目的をさらに具体的に表現すると、次の通りである。
２つのシーケンスＸとＹ、所定の係数ε、部分シーケンス長の下限値ｌｍｉｎが与えられた時、次の条件を満たす部分シーケンスペアＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］を検出する。
（条件１）Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）≦ε（Ｌ（ｌｘ，ｌｙ）−ｌｍｉｎ）
（条件２）ワーピングパスが重複する部分シーケンスペアのグループの中で、
Ｄ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）−ε（Ｌ（ｌｘ，ｌｙ）−ｌｍｉｎ）が最小値をとる。
【００４８】
以下、条件１を満たすものを「適合する部分シーケンスペア」と呼び、その検出については「具体的な実施形態」における第１の部分シーケンスペア検出処理（図２Ａ参照）で具体的に説明する。
また、条件１と条件２の両方の条件を満たすものを「最適な部分シーケンスペア」と呼び、その検出については「具体的な実施形態」における第２の部分シーケンスペア検出処理（図２Ｂ参照）で具体的に説明する。
【００４９】
さらに、本実施形態では、類似度スコアを計算する関数をシーケンスマッチングに導入する。ナイーブな手法では、毎時刻、新しいタイムワーピング行列を作成する。そのようなＯ（ｍｎ）のオーダの個数の行列を必要とするナイーブな手法を用いる代わりに、本実施形態では、スコアリング関数を用いてＸとＹの部分シーケンスペアの類似度スコアを単一の行列を用いて計算する。このスコアリング関数は以下の特徴を持つ。
【００５０】
（特徴１）スコアリング関数は非負（「０」以上）の類似度スコアを出力する。
（特徴２）スコアリング関数の操作はＤＴＷ距離に関して可逆（相互変換可能な関係）である。
【００５１】
スコア計算はＤＴＷの距離計算と同様に動的計画法に基づいて行うが、その違いはＤＴＷが最小の累積距離を計算して求めるのに対し、本実施形態が提案するスコアリング関数は最大の類似度スコアを計算して求めることにある。すなわち、類似したシーケンスペアは高い類似度スコアを示す。類似度スコアは非負であり、スコア行列の類似度スコアがもし負と算出されれば「０」に置き換えられる（詳細は後記）。つまり、前記した条件１を満たす可能性のない部分シーケンスペアについては、スコア行列の中で初期化される。この性質によって、適合する部分シーケンスペアを効率的に追い求めることが可能となる。ここで、図１１は、スコア行列を用いた部分シーケンスマッチングの様子を示す模式図である。図１１では、スコア行列において、複数の最適な部分シーケンスペアのワーピングパスが色付け（黒塗り）されたセルとして示されている。
【００５２】
≪具体的な実施形態≫
まず、類似部分シーケンス検出装置１の構成について説明する。図１に示すように、類似部分シーケンス検出装置１は、入力部１１、処理部１２、記憶部１３および出力部１４を備え、例えば、コンピュータ装置によって実現される。
【００５３】
入力部１１は、外部装置（不図示）やセンサ（不図示）からインターネットやＬＡＮ（Local Area Network）経由でデータストリームの入力を受け付けたり、キーボードやマウス等の入力装置（不図示）から類似部分シーケンスペア（以下、単に「類似部分シーケンス」ともいう。）の検出のための類似部分シーケンス検出条件の入力を受け付けたりする。この類似部分シーケンス検出条件は、例えば、適合する部分シーケンスペアの長さの下限値ｌｍｉｎ（ユーザによって予め設定。つまり、Ｌ（ｌｘ，ｌｙ）がｌｍｉｎ以上であるペアを検出する。）、データストリームの種類に応じて予め設定された所定の係数ε等（詳細は後記）である。この入力部１１は、インターネットやＬＡＮ経由でデータの送受信を行うための通信インタフェースや、入力装置等の外部装置との各種データの入出力を行うための入出力インタフェースにより実現される。
【００５４】
このような入力部１１は、２つのデータストリームから適合する部分シーケンスペアを検出するときに用いる類似部分シーケンス検出条件の入力を受け付ける検出条件入力部１１１と、データストリームの入力を受け付けるデータストリーム入力部１１２とを含んで構成される。
【００５５】
処理部１２は、２つのデータストリームから適合する部分シーケンスペアを検出するための各種演算処理を行うものであり、例えば、ＣＰＵ（Central Processing Unit）が記憶部１３に格納されたプログラムを実行することで実現される。この処理部１２は、データストリーム処理部１２１を備え、データストリーム入力部１１２で受信したデータストリームに関して、記憶部１３のスコアリングデータ記憶部１３２のスコア行列を用いて、適合する部分シーケンスペアを検出し、出力部１４の類似部分シーケンス出力部１４１（後記）経由で外部へ出力する。なお、このデータストリーム処理部１２１は、２つのデータストリームから部分シーケンス同士の類似度スコアを計算するとき、前記したスコアリング関数を用いる。
【００５６】
以下、スコアリング関数等について、さらに具体的に説明する。スコアリング関数は、一方のシーケンスＸ＝（ｘ１，ｘ２，…，ｘｎ）と、他方のシーケンスＹ＝（ｙ１，ｙ２，…，ｙｍ）との類似度スコアを計算するための関数である。データストリーム処理部１２１は、いずれかのデータストリームのデータが１つ到着するたびに、このスコアリング関数により、データストリームＸの部分シーケンスＸ［ｉｓ：ｉｅ］と、データストリームＹの部分シーケンスＹ［ｊｓ：ｊｅ］の類似度スコアを計算（算出）する。
【００５７】
２つのシーケンスＸ＝（ｘ１，…，ｘｉ，…，ｘｎ）とＹ＝（ｙ１，…，ｙｊ，…，ｙｍ）とが与えられた時、２つの部分シーケンスＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］との類似度スコアＶ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）は、以下の式（１１）〜式（１３）によって算出される。なお、ｉ＝１，２，…，ｎ、ｊ＝１，２，…，ｍとする。
【００５８】
Ｖ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）＝ｖ（ｉｅ,ｊｅ）        ・・・式（１１）
ｖ（ｉ,ｊ）＝ｍａｘ｛０，
ｗｖε＋ｖ（ｉ,ｊ−１）−‖ｘｉ−ｙｊ‖，
ｗｈε＋ｖ（ｉ−１,ｊ）−‖ｘｉ−ｙｊ‖，
ｗｄε＋ｖ（ｉ−１,ｊ−１）−‖ｘｉ−ｙｊ‖｝
・・・式（１２）
ｖ（０,０）＝ｖ（ｉ,０）＝ｖ（０,ｊ）＝０                  ・・・式（１３）
【００５９】
ここで、εは、前記した所定の係数である。式（１１）は、類似度スコアの定義である。式（１２）は、具体的な計算式である。式（１２）において、‖ｘｉ−ｙｊ‖は、２つの数値（ｘｉとｙｊ）の距離を表すものであり、例えば、ユークリッド距離やマンハッタン距離（Ｌ１距離）などが挙げられるが、以下の具体例では、計算を容易にするために、ユークリッド距離の二乗の値を使用する。
【００６０】
式（１２）におけるｍａｘ｛｝は、｛｝内の値のうち、最大のものを採用する、という意味である。なお、式（１３）は、スコア行列における境界条件である。なお、式（１２）に示すように、ｖ（ｉ,ｊ）を計算する場合において、｛｝内の値のうち「０」以外の最大のものが「０」より小さくなったときには、ｖ（ｉ,ｊ）＝０とする。このようにすることで、類似度スコアが「０」より小さく算出された場合でも「０」に置き換え、それ以降の部分シーケンスの類似度スコアに影響を与えないようにすることができる。つまり、類似度スコアのより高い部分シーケンス同士のつながりを反映した類似度スコアの計算を継続することができる。
【００６１】
換言すると、適合する部分シーケンスペアを効率的に追い求めるため、類似度スコアは負の値になってしまう事態を避けるべく「０」に初期化され、現在のセルからスコアを再計算する。これは、「０」に初期化しなければ類似度スコアが負の値になってしまうような場合は、セル（ｉ,ｊ）で終了するＸとＹの部分シーケンスペアがもはや前記した条件１を満たす可能性がないことを意味する。そのため、これまでのスコアを引き継がず、そのセル（ｉ,ｊ）から始まる新たなマッチング処理を開始する。ナイーブな手法が単位時間あたりＯ（ｍ２ｎ＋ｍｎ２）個の距離値を更新するのに対し、このスコアリング関数はＯ（ｍ＋ｎ）のスコア値しか更新しないため、計算コストの大幅な低減化につながる。
【００６２】
また、スコアリング関数の操作はＤＴＷ距離に関して可逆（相互変換可能な関係）である。式（１２）においてｗｖ，ｗｈ，ｗｄはＬによって決定される重みである。すでに述べたように、ＤＴＷ距離の閾値は部分シーケンス長Ｌ（ｌｘ，ｌｙ）に比例する。例えば、Ｌ（ｌｘ，ｌｙ）＝（ｌｘ＋ｌｙ）／２であれば、ｗｖ＝ｗｈ＝１／２，ｗｄ＝１となる。これは、スコア行列において垂直方向または水平方向の要素が引き継がれた場合、部分シーケンス長Ｌ（ｌｘ，ｌｙ）は「１／２」増加し、対角方向の要素が引き継がれた場合、部分シーケンス長Ｌ（ｌｘ，ｌｙ）は「１」増加するためである。スコア行列の中での各ワーピングパス上の重み（すなわちｗｖ，ｗｈ，ｗｄ）の合計は、Ｌ（ｌｘ，ｌｙ）と等しくなるように設計されており、スコアリング関数の操作がＤＴＷ距離に関して可逆であるという関係が保証される。なお、Ｌ（ｌｘ，ｌｙ）＝ｍａｘ（ｌｘ，ｌｙ）であれば、ｌｘ＞ｌｙの場合はｗｄ＝ｗｈ＝１，ｗｖ＝０となり、ｌｘ＜ｌｙの場合はｗｄ＝ｗｖ＝１，ｗｈ＝０となり、ｌｘ＝ｌｙの場合はｗｄ＝１，ｗｖ＝ｗｈ＝０となる。Ｌ（ｌｘ，ｌｙ）＝ｍｉｎ（ｌｘ，ｌｙ）についても同様に重みを決定することができる。
【００６３】
また、スコア行列は、どの部分シーケンスペアが最大スコアを出力したのかを判断するために、部分シーケンスペアの開始位置の情報を保持する。これは、データストリーム処理に対応するために重要となる。検出すべき部分シーケンスペアＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］については、スコアｖ（ｉｅ,ｊｅ）と開始位置ｓ（ｉｅ,ｊｅ）がスコア行列のセル（ｉｅ,ｊｅ）に保存される。ｓ（ｉｅ,ｊｅ）は、Ｘ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］のマッチングの開始位置（ｉｓ,ｊｓ）を指し示す。スコア行列のスコア値と部分シーケンスペアの開始位置は同時に更新される。このことによって、どの部分シーケンスのペアがスコアの最大値を出力したのかをストリーム処理の間も認識することができる。具体的には開始位置ｓ（ｉ,ｊ）を以下の式（１４）のように求める。
【００６４】
ｓ（ｉ,ｊ）＝
｛ｓ（ｉ,ｊ−１）  （if  ｖ（ｉ,ｊ−１）＞０  かつ
ｖ（ｉ,ｊ）＝ｗｖε＋ｖ（ｉ,ｊ−１）−‖ｘｉ−ｙｊ‖），
ｓ（ｉ−１,ｊ）  （if  ｖ（ｉ−１,ｊ）＞０  かつ
ｖ（ｉ,ｊ）＝ｗｈε＋ｖ（ｉ−１,ｊ）−‖ｘｉ−ｙｊ‖），
ｓ（ｉ−１,ｊ−１）（if  ｖ（ｉ−１,ｊ−１）＞０  かつ
ｖ（ｉ,ｊ）＝ｗｄε＋ｖ（ｉ−１,ｊ−１）−‖ｘｉ−ｙｊ‖），
（ｉ,ｊ）        （if  その他）｝
・・・式（１４）
【００６５】
つまり、このスコア行列は、各行列要素に、類似度スコアと、その類似度スコアの算出に用いた部分シーケンスＸ，Ｙの開始位置の情報とを保持することで、該当するパスの開始位置を、過去に遡ることなく（過去のデータを保持することなく）認識することができる。
【００６６】
スコア計算において、垂直方向、水平方向、対角方向のいずれかの行列要素が選択された場合（すなわち、ｖ（ｉ,ｊ−１），ｖ（ｉ−１,ｊ），ｖ（ｉ−１,ｊ−１）のいずれかがｖ（ｉ,ｊ）に算出に使用された場合）、選択されたその行列要素が保持している開始位置が引き継がれる。スコア行列においていずれの方向の行列要素も「０」である場合、開始位置として（ｉ,ｊ）が選択される。
【００６７】
記憶部１３は、２つのデータストリームから適合する部分シーケンスペアを検出するための各種データや処理部１２の動作プログラムなどを記憶する。この記憶部１３は、例えば、ＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）、ＨＤＤ（Hard Disk Drive）などにより実現される。この記憶部１３は、検出条件記憶部１３１と、スコアリングデータ記憶部１３２と、類似部分シーケンス候補記憶部１３３とを含んで構成される。
【００６８】
検出条件記憶部１３１は、類似部分シーケンス検出条件を記憶する。この類似部分シーケンス検出条件は、例えば、前記したデータストリームから適合する部分シーケンスペアを検出するときの部分シーケンス長の下限値ｌｍｉｎ（ユーザによって予め設定）、データストリームの種類に応じて予め設定された所定の係数ε等である。
【００６９】
スコアリングデータ記憶部１３２は、スコア行列（図５参照）などのスコアリングに必要なデータを記憶する。
類似部分シーケンス候補記憶部１３３は、算出に使用したスコア行列における行列要素の少なくとも一部が重複している複数の適合する部分シーケンスペアのうちのその時点で最適なものを記憶する。
【００７０】
出力部１４は、データストリーム処理部１２１で検出された適合する部分シーケンスペアを出力する類似部分シーケンス出力部１４１を含んで構成される。この出力部１４は、前記した通信インタフェースや、出力装置等の外部装置との各種データの入出力を行うための入出力インタフェースにより実現される。
【００７１】
次に、スコアリング関数とスコア行列とのデータストリーム処理への適用について説明する。本実施形態では単一のスコア行列しか使わないため、単位時間あたりＯ（ｍ＋ｎ）のスコア値と開始位置を更新するだけで最適な部分シーケンスペアＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］を検出することができる。また、この処理アルゴリズムはデータストリーム処理の中でも検出漏れを起こさないように注意深く設計されている。スコアリング関数の操作はＤＴＷ距離に関して可逆（相互変換可能な関係）である。出力結果の厳密性（従来のＤＴＷ手法との精度的な整合性）を保証するため、本実施形態ではこの可逆性を利用する。
【００７２】
処理の概要を説明すると、まず、Ｘ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］の開始位置（ｉｓ,ｊｓ）と終了位置（ｉｅ,ｊｅ）、類似度スコアＶ（Ｘ［ｉｓ：ｉｅ］，Ｙ［ｊｓ：ｊｅ］）を求める。そして、類似度スコアと部分シーケンス長から以下の式（１５）のようにＸ［ｉｓ：ｉｅ］とＹ［ｊｓ：ｊｅ］のＤＴＷ距離Ｄ（Ｘ［ｉｓ：ｉｅ］，Ｙ［ｊｓ：ｊｅ］）を計算し、適合する部分シーケンスペアとして出力する。
Ｄ（Ｘ［ｉｓ：ｉｅ］，Ｙ［ｊｓ：ｊｅ］）＝
εＬ（ｌｘ，ｌｙ）−Ｖ（Ｘ［ｉｓ：ｉｅ］，Ｙ［ｊｓ：ｊｅ］）  ・・・式（１５）
【００７３】
また、同様に、前記した条件１と条件２は、それぞれ、次の条件３と条件４と等価である。双方の計算により同一のワーピングパスが選択されるのは明らかだからである。本実施形態では、条件３と条件４を用いて類似判断を行う。
（条件３）Ｖ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）≧εｌｍｉｎ
（条件４）ワーピングパスが重複する部分シーケンスペアのグループの中で、Ｖ（Ｘ［ｉｓ：ｉｅ］,Ｙ［ｊｓ：ｊｅ］）−εｌｍｉｎが最大値をとる。
【００７４】
次に、類似部分シーケンス検出装置１の具体的な処理について説明する。ここでは、２つのデータストリームＸ（＝ｘ１，…，ｘｉ，…，ｘｎ，…）と、データストリームｙ（＝ｙ１，…，ｙｊ，…，ｙｍ，…）とにおける各要素が、順次与えられるものとする。ここでは、まず、前記した条件１を満たすための第１の部分シーケンスペア検出処理（適合する部分シーケンスペアの検出処理）（図２Ａ参照）について説明する。その後、前記した条件１と条件２の両方の条件を満たすための第２の部分シーケンスペア検出処理（最適な部分シーケンスペアの検出処理）（図２Ｂ参照）について説明する。
【００７５】
図２Ａに示すように、まず、データストリーム処理部１２１は、データストリーム入力部１１２経由で、時刻ｉにおいてデータｘｉを受信する（ステップＳ１１）。
次に、データストリーム処理部１２１は、ｊの値を「０」にリセットする（ステップＳ１２）。
【００７６】
その後、データストリーム処理部１２１は、ｊの値をインクリメント（「１」増加）させながら、ｊの値がｍになるまで、ステップＳ１３〜Ｓ１７の処理を繰り返す。
【００７７】
ステップＳ１４において、データストリーム処理部１２１は、ｘｎとｙｊの類似度スコアＣｖ’＝ｖ（ｎ,ｊ）、開始位置Ｃｓ’＝ｓ（ｎ,ｊ）、および、終了位置Ｃｅ’＝（ｎ,ｊ）を、前記式（１１）〜（１４）を用いて計算する。
【００７８】
ステップＳ１５において、データストリーム処理部１２１は、Ｃｖ’≧εｌｍｉｎの条件を満たすか否かを判断し、この条件を満たす場合（Ｙｅｓ）、ステップＳ１６０１に進み、この条件を満たさない場合（Ｎｏ）、ステップＳ１７に進む。
【００７９】
ステップＳ１６０１において、データストリーム処理部１２１は、その類似度スコアＣｖをＤＴＷ距離ｄｍｉｎに変換する（ｄｍｉｎ＝εＬ（ｌｘ,ｌｙ）−Ｃｖ’）。
次に、ステップＳ１６０２において、データストリーム処理部１２１は、ステップＳ１６０１で算出したＤＴＷ距離ｄｍｉｎ、それに対応する開始位置Ｃｓ’および終了位置Ｃｅ’を類似部分シーケンス出力部１４１経由でユーザに報知する。
【００８０】
また、データストリーム処理部１２１は、データストリーム入力部１１２経由で、時刻ｊにおいてデータｙｊを受信した場合（ステップＳ２１）、ステップＳ１２〜ステップＳ１７の処理と同様にして、ステップＳ２２〜ステップＳ２７の処理を行う。
【００８１】
ステップＳ１３〜Ｓ１７の後、あるいは、ステップＳ２３〜Ｓ２７の処理の後、データストリーム処理部１２１は、２つのデータストリームの受信が終了したか否か判断し（ステップＳ１９）、終了していなければ（Ｎｏ）、ステップＳ１１あるいはステップＳ２１に戻り、終了していれば（Ｙｅｓ）、処理を終了する。
【００８２】
このように、類似度スコアではなくＤＴＷ距離を算出して出力することで、従来のＤＴＷ手法と同じ結果を出力することができる。
【００８３】
次に、第２の部分シーケンスペア検出処理（最適な部分シーケンスペアの検出処理）について説明する。なお、第１の部分シーケンスペア検出処理（適合する部分シーケンスペアの検出処理）と同じ処理については同じステップ番号（例えば「ステップＳ１１」）を付し、説明を適宜省略する。
図２Ｂに示すように、ステップＳ１１〜Ｓ１４の処理の後、ステップＳ１５でＹｅｓの場合、ステップＳ１６において、データストリーム処理部１２１は、候補配列への格納処理を行う（詳細は図３で後記）。
【００８４】
また、データストリーム処理部１２１は、データストリーム入力部１１２経由で、時刻ｊにおいてデータｙｊを受信した場合（ステップＳ２１）、ステップＳ１２〜ステップＳ１７の処理と同様にして、ステップＳ２２〜ステップＳ２７の処理を行う。
【００８５】
ステップＳ１３〜Ｓ１７の後、あるいは、ステップＳ２３〜Ｓ２７の処理の後、
ステップＳ１８において、データストリーム処理部１２１は、最適な部分シーケンスペアの報知処理を行う（詳細は図４で後記）。
【００８６】
その後、データストリーム処理部１２１は、２つのデータストリームの受信が終了したか否か判断し（ステップＳ１９）、終了していなければ（Ｎｏ）、ステップＳ１１あるいはステップＳ２１に戻り、終了していれば（Ｙｅｓ）、処理を終了する。
【００８７】
次に、候補配列への格納処理（図２ＢのステップＳ１６）について説明する。なお、以下、候補配列（候補集合の配列）Ｓとは、区間の一部が重複する部分シーケンスペアの集合ごとにその時点で最適な１つずつの部分シーケンスペアの情報を格納する配列を表す。また、類似度スコア、開始位置および終了位置に関して、Ｃｖ’，Ｃｓ’およびＣｅ’は候補配列へ格納する前の段階の変数を表し、Ｃｖ，ＣｓおよびＣｅは候補配列へ格納した後の段階の変数を表す。
【００８８】
図３に示すように、開始位置Ｃｓ’が候補配列Ｓに含まれないか否かを判断し（ステップＳ１６１）、含まれない場合（Ｙｅｓ）、ステップＳ１６２に進み、含まれる場合（Ｎｏ）、ステップＳ１６３に進む。
【００８９】
ステップＳ１６２において、データストリーム処理部１２１は、その部分シーケンスペアの類似度スコアＣｖ’、開始位置Ｃｓ’および終了位置Ｃｅ’を、類似度スコアＣｖ、開始位置Ｃｓおよび終了位置Ｃｅとして候補配列Ｓに格納する。その部分シーケンスペアと区間の一部が重複する部分シーケンスペアの集合がないからである。
【００９０】
ステップＳ１６３〜Ｓ１６６において、データストリーム処理部１２１は、部分シーケンスペアごとにステップＳ１６４，Ｓ１６５の処理を行う。
【００９１】
ステップＳ１６４において、データストリーム処理部１２１は、ある部分シーケンスペアについて、その部分シーケンスペアが属する（区間一部重複の）集合において（つまり、例えばＣｓ’＝Ｃｓの条件を満たし）、類似度スコアＣｖ’がそれまでの類似度スコアＣｖ以上か否か（つまり、Ｃｖ’≧Ｃｖか否か）を判断し、その条件を満たせば（Ｙｅｓ）、ステップＳ１６５に進み、その条件を満たさなければ（Ｎｏ）、ステップＳ１６６に進む。
【００９２】
ステップＳ１６５において、データストリーム処理部１２１は、その部分シーケンスペアの類似度スコアでＣｖ（最大スコア）を更新し（Ｃｖ：＝Ｃｖ’）、併せて、終了位置Ｃｅ’も更新する（Ｃｅ：＝Ｃｅ’）。このように、区間一部重複の集合ごとに最大の類似度スコアとそれに対応する部分シーケンスペアの情報を１つずつ格納することで、後にユーザに対して冗長性の少ない有益な情報を提供することができる。つまり、区間一部重複の複数の部分シーケンスペアという冗長な情報をユーザに提供する事態を回避できる。
【００９３】
ステップＳ１６２およびＳ１６６の後、データストリーム処理部１２１は処理を終了する。
【００９４】
次に、最適な部分シーケンスペアの報知処理（図２ＢのステップＳ１８）について説明する。図４に示すように、ステップＳ１８１〜Ｓ１８６において、データストリーム処理部１２１は、候補配列Ｓの各要素（類似度スコアＣｖ、開始位置Ｃｓおよび終了位置Ｃｅのセット）についての処理を行う。
【００９５】
ステップＳ１８２において、データストリーム処理部１２１は、ある要素について、その後出現する部分シーケンスペアによって置き換わることがないか（つまり、∀ｉ，ｓ（ｉ，ｍ）≠Ｃｓ、かつ、∀ｊ，ｓ（ｎ，ｊ）≠Ｃｓを満たすか）否かを判断し、Ｙｅｓの場合はステップＳ１８３に進み、Ｎｏの場合はステップＳ１８６に進む。
【００９６】
ステップＳ１８３において、データストリーム処理部１２１は、その類似度スコアＣｖをＤＴＷ距離ｄｍｉｎに変換する（ｄｍｉｎ＝εＬ（ｌｘ,ｌｙ）−Ｃｖ）。
ステップＳ１８４において、データストリーム処理部１２１は、ステップＳ１８３で算出したＤＴＷ距離ｄｍｉｎ、それに対応する開始位置Ｃｓおよび終了位置Ｃｅを類似部分シーケンス出力部１４１経由でユーザに報知する。
【００９７】
ステップＳ１８５において、データストリーム処理部１２１は、ステップＳ１８４で報知した情報に対応するＣｖ，Ｃｓ，Ｃｅを候補配列Ｓから削除する。
【００９８】
このように、類似度スコアではなくＤＴＷ距離を算出して出力することで、従来のＤＴＷ手法と同じ結果を出力することができる。
【００９９】
次に、スコア行列の具体例について説明する。図５に示すように、Ｘ＝（５，１２，６，１０，６，５，２１），Ｙ＝（１１，６，９，４，２，９，１３）の２つのシーケンスの場合について考える。ここでは、係数ε＝１４，適合する部分シーケンスペアの下限値ｌｍｉｎ＝３を設定した場合に計算されるスコア行列を示している。各セル（ｉ，ｊ）に、スコアｓ（ｉ，ｊ）と開始位置ｐ（ｉ，ｊ）が保持される。色付け（網掛け）された４つのセルは前記した条件１を満たす部分シーケンスペア（適合する部分シーケンスペア）を表している。その中で、濃く色付け（網掛け）されたセル（ｘ-＝５，ｙ＝４の位置のセル）は、前記した条件１および条件２を満たす部分シーケンスペア（最適な部分シーケンスペア）を表している。
【０１００】
ここで、図５のスコア行列を参照してストリーム処理の動作を説明する。説明を単純にするために、ｘｉとｙｊが交互に到着すると想定する。ｉ＝５において、ｓ（５，４）＝５０≧εｌｍｉｎ（＝１４×３＝４２）となる（２，１）から始まる適合する部分シーケンスペアＸ[２：５]とＹ[１：４]を検出する（図２ＢのステップＳ１５でＹｅｓ）。ｊ＝５において、条件を満たす部分シーケンスペアは検出されないが、これから出現する適合する部分シーケンスペアが最適な部分シーケンスペアになる可能性があるため（図４のステップＳ１８２でＮｏ）、Ｘ[２：５]とＹ[１：４]を最適な部分シーケンスペアとして報知しない。そして、ｉ＝６において、最適な部分シーケンスペアＸ[２：６]とＹ[１：４]を検出する（図２ＢのステップＳ１５でＹｅｓ）。最終的にｊ＝７において、これから出現するものは最適な部分シーケンスペアになる可能性がないことが確認でき（図４のステップＳ１８２でＹｅｓ）、類似度スコアをＤＴＷ距離に変換し（図４のステップＳ１８３）、この部分シーケンスペアを報知する（図４のステップＳ１８４）。
【０１０１】
ここで、前記した図４のステップＳ１８２でＹｅｓとなる判断についてさらに説明すると、図５のスコア行列において、ｉ＝７の列とｊ＝７の行のいずれにおいても、（２，１）から始まる部分シーケンスペアが１つもないことから、（２，１）から始まりその時点で類似度スコアが最大の部分シーケンスペアＸ[２：６]とＹ[１：４]をｊ＝７の時点で最適な部分シーケンスのペアと判断することができる。従来のＤＴＷ手法の場合は複数の行列から検出される開始位置の異なる適合する部分シーケンス同士の重複を調べる必要があったが、本実施形態による単一のスコア行列の場合は図５を参照してもわかるように開始位置が一致するか否かの判断だけで最適な部分シーケンスペアを特定することができる。
【０１０２】
なお、図５では、受信したデータストリームのすべての要素のスコア行列を示しているが、スコアリングデータ記憶部１３２に記憶されるスコア行列は、外側（新しいデータ側）の２行２列分のデータ（図５のスコア行列ではｉ＝６，７、ｊ＝６，７の部分のデータ）があればよい。
【０１０３】
ナイーブな手法では、適合する部分シーケンスペアを検出するためにＯ（ｍ２ｎ＋ｍｎ２）のメモリ量を使用し、単位時間あたりＯ（ｍ２ｎ）（Ｘの要素が到着した場合）またはＯ（ｍｎ２）（Ｙの要素が到着した場合）の距離値の更新が必要となる。一方、本実施形態では単一のスコア行列のみで適合する部分シーケンスペアの検出が可能なため、Ｏ（ｍ＋ｎ）のメモリ量を使用し、単位時間あたりＯ（ｍ）（Ｘの要素が到着した場合）またはＯ（ｎ）（Ｙの要素が到着した場合）の値しか更新しなくてよい。そのため、計算量（計算時間）やメモリ使用量の大幅な低減化を実現できる。
【０１０４】
また、本実施形態では、用いるスコア行列が単一なので、従来のＤＴＷ手法よりも少ない計算コストで済む。また、従来のＤＴＷ手法では２つの部分シーケンスの長さに関係なく一定の閾値を用いて類似判断を行っていたが、２つの部分シーケンスの長さに比例して閾値も増加させるのが原理的に好ましく、本実施形態では、当該長さの伸びに応じた数値の加算によって、閾値は実際には一定でも増加させたのと同等の効果が期待できる。
【０１０５】
≪実験結果≫
次に、本実施形態の類似部分シーケンス検出装置１を用いた処理の実験結果について説明する。なお、各実験は、４ＧＢのメモリと２ＧＨｚのＣＰＵを搭載したコンピュータ上で実施した。また、実験には実データと人工データを使用した。実験結果を視覚的に把握するため、ここでは、散布図を用いる。散布図では、データストリームＸとＹにおける最適な部分シーケンスペアであるＸ[ｉｓ：ｉｅ]とＹ[ｊｓ：ｊｅ]のワーピングパスを描画する。なお、散布図において、横軸はＸの要素を、縦軸はＹの要素を表す。そして、そのプロットされた点の集合や周期を見ることで、最適な部分シーケンスペアの存在や特徴を把握することができる。
【０１０６】
図６を参照して、ホワイトノイズを持つ複数のサイン波から構成される人工データの場合について説明する。図６の（ａ）と（ｂ）に示すように、Sines＃１とSines＃２は、含まれるサイン波の周期と、サイン波の現れる間隔が、それぞれ異なっている。そして、図６の（ｃ）の散布図に示すように、本実施形態の類似部分シーケンス検出装置１によれば、すべてのサイン波と時間変化する周期性を完全に特定（表現）することができていることがわかる。つまり、Sines＃１にはサイン波が６つ、Sines＃２にもサイン波が６つあり、散布図には３６個（＝６×６）のプロット群が存在している。具体的には、例えば、図６の（ｃ）の散布図の左下部分のプロットを見ると、Sines＃１における時間「0〜約2500」の部分のサイン波と、Sines＃２における時間「0〜約4000」の部分のサイン波とが類似していることがわかる。また、図６の（ｃ）の散布図において、各サイン波の周期の違いは傾きの違いとして表れていることが確認できる。
【０１０７】
図７を参照して、大小のスパイク（突出部）から構成される人工データの場合について説明する。なお、図７の（ａ）と（ｂ）におけるスパイクとスパイクの間のデータは、ランダムウォーク関数を用いて異なる長さで生成し、各スパイクの周期も元なっている。図７の（ｃ）の散布図から、大小のスパイクを完全に検出している様子が確認できる。各スパイクの周期の違いは描画の長さの違いとして現れており、幅の広いスパイクは描画長が長く、幅の狭いスパイクは描画長が短い。
【０１０８】
図８を参照して、自動車の交通量の時系列データ（Automobile trafficデータ）の場合について説明する。図８の（ａ）と（ｂ）において、１日の周期と朝夕のラッシュアワーを示す半日周期が存在する。時間単位の交通量はバースト的であり、ホワイトノイズとみなすことができる。図８の（ｃ）の散布図からわかるように、本実施形態の類似部分シーケンス検出装置１は、高周波である時間単位の交通量に惑わされることなく、１日の周期を高精度で検出することに成功している。散布図において、描画線が連続していることと、それらが一定間隔で現れていることが、１日の周期が繰り返されている様子を表している。また、描画線同士の間隔が日の周期と対応しており、Automobile trafficデータの特徴がよく反映されている。
【０１０９】
図９を参照して、Webデータのアクセス数の場合について説明する。なお、メールサイト（Mail site）とブログサイト（Blog site）以外のサイトも含めて実験を行い、サイト毎にアクセスパターンが異なる中、本実施形態の類似部分シーケンス検出装置１によって最適な部分シーケンスペアが検出されたのがメールサイトとブログサイトのアクセスパターンである。図９の（ａ）と（ｂ）からわかるように、これらの２つのデータはアクセス数のスケールが若干異なるが、朝からアクセスが上昇し夜にかけてピークを迎えるという、よく似た１日の周期が存在する。図９の（ｃ）の散布図から、これらの周期性の検出にほぼ成功していることが確認される。なお、図８の（ｃ）の場合と異なり、図９の（ｃ）のプロット群は曲がりくねった線となっている。これは、データシーケンスの要素同士を時間軸方向に伸張させながら最適に対応付けられたためであり、時間軸方向の伸縮を考慮するという特徴によって検出された最適な部分シーケンスペアであることがわかる。
【０１１０】
図１０を参照して、太陽の黒点数の場合について説明する。太陽の黒点の数には周期性があることがよく知られており、太陽の活動とも密接に関連している。太陽活動が活発な時は黒点が多く出現し、逆に太陽活動が不活発な時は黒点が減少する。図１０の（ａ）と（ｂ）からわかるように、この変化は約１１年の周期で増減する。図１０の（ｃ）の散布図から、黒点数の各周期の増減を区別し、類似する変化を示す周期を捉えることに成功していることがわかる。
【０１１１】
以上、本発明の実施形態について説明したが、本発明はこれに限定されるものではなく、その趣旨を変えない範囲で実施することができる。
例えば、‖ｘｉ−ｙｊ‖として、ユークリッド距離の二乗の値を使用したが、ユークリッド距離などの他の距離を使用してもかまわない。
【０１１２】
その他、ハードウェア、ソフトウェアの具体的な構成について、本発明の主旨を逸脱しない範囲で適宜変更が可能である。
なお、データストリームは、映像やセンサネットワーク、金融など様々な分野で発生する。本発明はこれらのすべての分野に適用可能である。
【符号の説明】
【０１１３】
１      類似部分シーケンス検出装置
１１    入力部
１２    処理部
１３    記憶部
１４    出力部
１１１  検出条件入力部
１１２  データストリーム入力部
１２１  データストリーム処理部
１３１  検出条件記憶部
１３２  スコアリングデータ記憶部
１３３  類似部分シーケンス候補記憶部
１４１  類似部分シーケンス出力部
【図１】
2010198227.tif 000003
【図２Ａ】
2010198227.tif 000004
【図２Ｂ】
2010198227.tif 000005
【図３】
2010198227.tif 000006
【図４】
2010198227.tif 000007
【図５】
2010198227.tif 000008
【図６】
2010198227.tif 000009
【図７】
2010198227.tif 000010
【図８】
2010198227.tif 000011
【図９】
2010198227.tif 000012
【図１０】
2010198227.tif 000013
【図１１】
2010198227.tif 000014
【図１２】
2010198227.tif 000015
【図１３】
2010198227.tif 000016