1

Dynamic Time Warping (DTW) の初心者として、その Python 実装mlpy.dtwが非常に詳細に文書化されていないことに気付きました。戻り値に問題があります。

戻り値distについて 2 つの質問があります。

  • ここにタイプミスはありますか?標準の DTW の場合、ドキュメントには次のように記載されています

[Muller07] で説明されている標準の DTW。ユークリッド距離 (差の絶対値)または 2 乗ユークリッド距離 ([Keogh01] のように) をローカル コストの尺度として使用します。

サブシーケンス DTW の場合、ドキュメントには次のように記載されています

[Muller07] で説明されているサブシーケンス DTW では、y の長さが x の長さよりもはるかに大きいと仮定し、マンハッタン距離 (差の絶対値)をローカル コストの尺度として使用します。

同じいわゆる「差の絶対値」は、2 つの異なる距離メトリックに対応していますか?

  • 総距離?スニペットを実行した後

    距離、コスト、パス = mlpy.dtw_std(x、y、dist_only=False)

dist1 つの値です。一致した各ペア間のすべての距離の一括和ですか?

4

2 に答える 2

2

はい、mlpy.dtw()関数は十分に文書化されていません。

  • 最初の質問:ここにタイプミスはありません。ドキュメントでわかるように、ユークリッド距離、二乗ユークリッド距離、およびマンハッタン距離は、ローカル コスト メジャーに関係します。この場合、コスト測定は 2 つの実数値 (1 次元) 間の距離として定義されます。http://en.wikipedia.org/wiki/Dynamic_time_warpingの疑似コードのコストを参照してください。したがって、この場合、マンハッタン距離とユークリッド距離は同じです ( http://en.wikipedia.org/wiki/Euclidean_distance#One_dimension )。とにかく、標準の dtw では、パラメーターsquaredによって、ユークリッド距離 (差の絶対値) または 2 乗ユークリッド距離 (2 乗差) を選択できます。
>>> import mlpy
>>> mlpy.dtw_std([1,2,3], [4,5,6], squared=False) # Euclidean distance
9.0
>>> mlpy.dtw_std([1,2,3], [4,5,6], squared=True) # Squared Euclidean distance
26.0

乾杯、ダビデ

于 2013-09-19T10:08:59.317 に答える
2

ドキュメントのエラーのようです。ユークリッド距離は「差の絶対値」ではなく、マンハッタン計量の正しい説明です。R ではユークリッド メトリックとマンハッタン メトリックの両方が同じであるため、著者はおそらく 1 次元のケースについて考えていました (その場合、ユークリッド メトリックは実際には差の絶対値を表します)。私はライブラリに精通していません.1次元のオブジェクトでのみ動作する場合、エラーはなく、これら2つの距離測定値は同等です.

dist値は、最適なタイム ワープの値です (マッチングの要約コストとして測定されます。ウィキペディアのアルゴリズム定義を参照してください)。したがって、実際には、特定の編集のコストが「一致する」オブジェクト間の非類似度 (距離) で表される、2 つのシーケンス間の最小編集距離です。

于 2013-09-19T10:20:53.393 に答える