#python #dtw
#питон #dtw
Вопрос:
Я прочитал функцию вычисления DTW здесь: https://tslearn.readthedocs.io/en/stable/user_guide/dtw.html
На мой взгляд, в одной из этих 2 следующих строк что-то не так :
C[0, 0] = 0.
dist = d(x_i, y_j) ** 2
Или для простого dtw на [0] и [1] у вас не будет 1 в качестве ответа. Итак, оба возможных исправления :
C[0,0] = d(x_0, y_0) ** 2
или
dist = d(x_{i-1}, y_{j-1}) ** 2
Я думаю, что это второе решение, если мы хотим его обобщить.
Ответ №1:
В тексте указано, что псевдокод предполагает временные индексы, начинающиеся с 1, и фактически основной цикл начинается с 1. Следовательно, эта C[0,0] = 0
инициализация верна. Первые ячейки матрицы затрат будут выглядеть так:
0 | inf | ...
inf | inf | ...
...
и когда следующая строка вычисляется для i = 1
и j = 1
C[i, j] = dist min(C[i-1, j], C[i, j-1], C[i-1, j-1])
min
функция просто вернет ноль
и C[1,1]
будет просто иметь значение первого вычисления,
т.е. dist
.
Это распространенный способ реализации DTW, он также описан в Википедии.