Primeros pasos con DTW

Primeros pasos con DTW

¿Te has preguntado cómo calcular la similitud para comparar que dos notas de voz digan lo mismo si lo hacen a distintas velocidades, o cómo detecta tu smartwatch si caminas o corres?

Aquí te daré una herramienta para analizar la similitud de las series de tiempo. En el mundo real, muchas series de tiempo no están perfectamente alineadas unas con las otras. Por lo tanto, en este artículo explicaré qué es Dynamic Time Warping (DTW) con un ejemplo que emplea datos de finanzas.

DTW es, en pocas palabras, una técnica para comparar dinámicamente series de tiempo donde los índices de tiempo no necesitan estar perfectamente sincronizados. Cuando calculamos el DTW, recibimos un puntaje que nos indica cuán distintas son las series de tiempo. Mientras el DTW sea más cercano a cero, mayor será la similitud entre las series de tiempo.

Imagen 1.0 Distancia euclidiana vs DTW

En la imagen 1.0 podemos ver cómo las dos secuencias siguen un mismo patrón. La secuencia azul no está completamente alineada con la roja. En el caso de medir la distancia euclidiana, se compararía el primer punto de la secuencia roja contra el primer punto de la secuencia azul y así sucesivamente, dejando sin comparar la última parte de la secuencia azul. Para solucionar este problema, podemos usar Dynamic Time Warping (DTW) para comparar un punto de la secuencia roja contra múltiples puntos de la secuencia azul y detectar patrones que sigan la misma tendencia, sin dejar atrás puntos sin comparar.

Para darte una idea de la importancia de DTW, éste es usado para detectar patrones en notas de voz. Como ya sabrás, la gente habla de manera distinta y unas más rápido que otras. Imagina a alguien diciendo “Qué onda” comparado con “Quuééé ooooonda”. DTW ayuda a sincronizar estas secuencias para encontrar patrones en las reproducciones de voz.

Otro ejemplo con el que también te identificarás es tu smartwatch. Todos los datos recaudados para identificar si caminas, corres o andas en bici son secuencias que se comparan con datos históricos de otras personas, para así encontrar similitudes y patrones que identifiquen el ejercicio que haces.

Manos a la obra

Usaremos el top 3 de stocks de la industria alimentaria (SPTN, TWNK, GO) con mayor momentum según el artículo 'Top Food Stocks for Q4 2022' en Investopedia. También usaremos stocks de la industria tecnológica (NVDA, TSLA) y compararemos el cierre de precio de estos stocks en 2022 para ver a través de DTW si hay similitud en su comportamiento.

En este tutorial usaremos Yahoo para extraer los datos necesarios (2022). Así obtenemos lo siguiente:

En los datos obtenidos vemos que las escalas de valores de precio son diferentes, así que para obtener mejor idea del comportamiento de estos stocks, calcularemos el porcentaje de retornos de un día a otro.

Imagen 2.0 Evolución del % de retorno durante 2022

En la gráfica vemos que, desde el comienzo de 2022, NVDA y TSLA han sufrido pérdidas y parece que, en ciertos meses, el patrón de comportamientos de estos dos stocks ha sido similar. Para quitar la subjetividad de solo comparar por ojo humano las similitudes de un stock con otro, calculamos DTW de la manera siguiente:

Imagen 3.0 Mapa de calor de DTW entre los stocks

Como podemos ver en el mapa de calor, entre más fuerte el color y el puntaje, menor es la similitud y viceversa. Vemos que los stocks con menor similitud son TWNK y TSLA, mientras que los stocks que mayor similitud son NVDA y TSLA.

Los stocks con el mayor puntaje, y por ende menos similitud, son TWNK vs TSLA:

Imagen 4.0 Comparación % de Retorno TWNK vs TSLA

Así como los stocks con mayor similitud (DTW más cercano a 0) son TSLA vs NVDA:

Imagen 5.0 Comparación % de Retorno TSLA vs NVDA

Hemos usado este código para graficar los stocks y analizar la similitud a ojo humano.

Conclusión

Espero que DTW te ayude a remover la subjetividad en tus procesos de comparación de series de tiempo. Te invito a comparar stocks de la industria alimentaria con otras industrias en 2022. ¿Hay alguna a la que también le haya ido bien como la industria alimentaria?

Te recomiendo checar la librería completa de tslearn si trabajas con series de tiempo.

El código completo de este blog lo puedes encontrar en mi GitHub.

Fuentes

⚠️
Las opiniones y comentarios emitidos en este artículo son propiedad única de su autor y no necesariamente representan el punto de vista de Revelo.

Revelo Content Network da la bienvenida a todas las razas, etnias, nacionalidades, credos, géneros, orientaciones, puntos de vista e ideologías, siempre y cuando promuevan la diversidad, la equidad, la inclusión y el crecimiento profesional de los profesionales en tecnología.