python - mlpy-¿La deformación dinámica del tiempo depende de x?
algorithm machine-learning (2)
Obviamente, las curvas no son idénticas, y por lo tanto la función de distancia no debe ser 0 (de lo contrario, no es una distancia por definición).
¿Qué ES "relativamente grande"? La distancia probablemente no es infinita, ¿verdad?
140 puntos en el tiempo, cada uno con un pequeño delta, esto todavía suma un número distinto de cero.
La distancia "Nueva York" a "Beijing" es de aproximadamente 11018 km. O 1101800000 mm.
La distancia a Alpha Centauri es pequeña, solo 4.34 lj. Ese es el otro sistema estelar más cercano a nosotros ...
Comparar con la distancia a una serie no similar; esa distancia debería ser mucho más grande.
Estoy tratando de obtener la distancia entre estas dos matrices mostradas a continuación por DTW.
Estoy usando el paquete Python mlpy
que ofrece
dist, cost, path = mlpy.dtw_std(y1, y2, dist_only=False)
Entiendo que DTW se ocupa del "cambio". Además, como se puede ver desde arriba, mlpy.dtw_std()
solo toma en 2 matrices de 1-D. Así que espero que no importa cómo cambié mis curvas de izquierda a derecha, el dist
devuelto por la función nunca debería cambiar.
Sin embargo, después de cambiar mi curva verde un poco hacia la derecha, ¡el dist
devuelto por mlpy.dtw_std()
cambia!
Antes de cambiar: Python mlpy.dwt_std
informes dist = 14.014
Después del cambio: Python mlpy.dwt_std
informa dist = 38.078
Obviamente, dado que las curvas siguen siendo esas dos curvas, ¡no espero que las distancias sean diferentes!
¿Por que es esto entonces? Donde salió mal?
Permítanme reiterar lo que he entendido, corríjanme si me equivoco en cualquier parte. Observo que en ambas parcelas, su serie 1D en azul permanece idéntica, mientras que la de color verde se está estirando. Cómo lo está haciendo, que lo ha explicado en la publicación del 19 de septiembre a las 9:36. Su premisa es que debido a que (1) DTW "se ocupa del cambio horario" y (2) todo lo que está haciendo es estirar una serie de tiempo en sentido longitudinal, sin afectar los valores y, (Inferencia :) está esperando una distancia de permanece igual.
Hay un pequeño eslabón perdido entre [(1), (2)] y [(Inferencia)]. Es decir, los valores de distancia individuales correspondientes a las asignaciones CAMBIARÁN a medida que cambie el conjunto de señales. Y esto dará como resultado una diferencia en el cálculo de la distancia global. Trace las rutas de deformación, cuadrícula de costos para verlo usted mismo.
Tomemos un caso simplificado ...
Deje a=range(0,101,5)
= [0,5,10,15 ... 95, 100]
b=range(0,101,5)
= [0,5,10,15 ... 95, 100].
Ahora, intuitivamente hablando, usted / yo esperaríamos una correspondencia de uno a uno entre 2 señales (para el mapeo de DTW), y la distancia para todas las asignaciones sería 0, las señales son idénticamente buscadas.
Ahora, si hacemos, b=range(0,101,4)
= [0,4,8,12 ... 96,100], el mapeo de DTW entre a y b aún comenzaría con a 0 asignando a b''s 0, y finalizaría en a 100 consignado a b''s 100 (restricciones de límites). Además, dado que DTW ''se ocupa'' del cambio de horario, también esperaría que los 20, 40, 60 y 80 de las dos señales se mapeen entre sí. (No he intentado DTWing estos dos, lo digo por intuición, así que por favor verifique. Hay poca posibilidad de que se produzcan deformaciones no intuitivas, dependiendo de los patrones de paso permitidos / restricciones globales, pero vamos con las deformaciones intuitivas para el momento de la facilidad de comprensión / sake de la simplicidad).
Para los puntos de datos restantes, claramente, las distancias correspondientes al mapeo ahora no son cero, por lo tanto, la distancia total también es distinta de cero. Nuestro valor de distancia / costo total ha cambiado de cero a algo que no es cero.
Ahora, este era el caso cuando nuestras señales eran demasiado simplistas, aumentaban linealmente. Imagina las variabilidades que aparecerán en la imagen cuando tengas señales no monótonas en la vida real, y necesites encontrar una diferencia de tiempo entre ellas. :)
(PD: Por favor, no te olvides de votar la respuesta: D). Gracias.