【Python】DTW(動的時間伸縮法)でサンプル数が異なる時系列データの類似度計算

Pythonライブラリ「DTW」で動的時間伸縮法を実装し、サンプル数が異なる時系列データ同士の類似度を算出します。

【PYthon】DTW(動的時間伸縮法)の実装

DTW(Dynamic Time Warping)とは、2つの時系列データの類似度を調べることができるアルゴリズムです。
2つの時系列データの各サンプル値間の距離(コスト)を総渡りで計算していき、距離(コスト)が最小となる関係性(経路)を見つます。よって

●サンプル数が異なる時系列データ同士の比較が可能
●時間や位相軸が異なっていても、波形が似ていれば類似度が高くなる

という優れた利点があります。つまり、周期や動きが似ているが、サンプル数が異なる時系列データ同士を比較できます。

【Python】DTW(動的時間伸縮法)でサンプル数が異なる時系列データの類似度計算
Pythonライブラリ「DTW」で動的時間伸縮法を実装し、サンプル数が異なる時系列データ同士の類似度を算出します。

今回は「DTW」 or「fastdtw」モジュールを使って実装します。

【dtw】実装例

インストール

pip install dtw

サンプルコード


「acc_cost_matrix」のヒートマップを見ると、y=0.0に対して、x=0,1が結ばれています。
このように1点に複数点が結ばれるため、サンプル数が異なっている時系列データ間の類似度を算出できます。

【fastdtw】実装例

インストール

pip install fastdtw

サンプルコード


コメント