K_DM Book
用語集
対象者 標準
対象者別の入口 →

対象者の設定はこのブラウザの中にだけ保存されます。

言語 JA

形状・類似度

04.14

形状・類似度

まとめ
時系列どうしの「形が似ているか」を測る章です。DTW(動的時間伸縮)は 2 本の系列の全点対の距離を格子に並べ、時間を伸縮させながら最も安い対応づけ(ワーピングパス)を動的計画法で探す手法で、NumPy の 30 行で実装できます。値の差ではなく傾きの差で比べる DDTW はベースラインのずれ(0.6 持ち上げた系列)を無視でき、\(\min\) を soft-min に置き換えた Soft-DTW は微分できるのでニューラルネットの損失関数に使えます。最後に tsfresh の extract_features で 1 本の系列を 3,156 列の統計量に要約し、通常の分類・回帰モデルに渡す方法を学びます。

直感 #

同じ形の波形でも開始タイミングや速度が異なると、同じ時刻どうしを比べるユークリッド距離では似ていないと判定されます。DTW は時間軸を柔軟に伸縮させて「A の 5 番目と B の 7 番目」のようなずれた対応を許し、形が似ているかどうかを測る手法で、音声認識やセンサーデータの比較で広く使われています。DTW が苦手な縦方向のずれは DDTW が傾きで吸収し、学習に使えない「微分できない」問題は Soft-DTW が解決します。距離ではなく表形式に変換したいときは tsfresh のような自動特徴量抽出を使えば、時系列を 1 行の特徴量に要約して通常の機械学習モデルに投入できます。

詳細な解説 #

このチャプターで学べること #

  • DTWのアルゴリズム(距離行列・累積コスト・ワーピングパス)とPythonでの実装
  • DDTWによる微分ベースの改良と、DTWとの比較
  • Soft-DTWの微分可能な距離計算と最適化への応用
  • tsfreshによる時系列特徴量の自動抽出と選択

これがわかるとできること #

  • 形状が似た時系列をDTW距離でクラスタリング・検索できる
  • 勾配ベースの学習にSoft-DTWを損失関数として組み込める
  • tsfreshで大量の特徴量を自動生成し、分類・回帰モデルに投入できる

学習の進め方 #

まず DTW で累積コスト行列の遷移式 \(C_{i,j} = D_{i,j} + \min{\cdots}\) とワーピングパスの可視化を学び、位相のずれた sin 波に距離 5.02、cos 波に 10.19 が付く理由をつかみます。次に DTW と DDTW と DDTW で局所距離を傾きの差に替える効果を、Soft-DTW で \(\min\) を soft-min に替える効果をそれぞれ 1 行の変更として理解します。最後に tsfresh で、距離ではなく特徴量の表に変換して分類・回帰につなげるワークフローを試します。