2 votos

¿Por qué el k-means podría ser inapropiado para datos de series temporales contextuales?

¿Por qué k-means no se considera una buena opción para usar con datos de series temporales? He leído respuestas que dicen que no es una buena opción, pero ninguna que explique por qué.

Supongamos que tenemos datos de series temporales de una tienda solo por un día. En el eje x, tenemos un rango de 24 horas. En el eje y, el número de camisetas vendidas. También hagamos los datos contextualizados. Digamos que el número de ventas a las 10:00 y a las 15:00 es realmente alto. ¿Por qué sería una mala idea usar k-means aquí?

0 votos

Totalmente no se puede usar K-means. Es mejor usar otra herramienta estadística.

1 votos

¿Puedes enlazar a algunas de las respuestas a las que te refieres? Además: ¿cómo quieres aplicar k-means (u otro algoritmo de agrupamiento) a una única serie temporal? ¿Qué deseas agrupar?

0 votos

¿Es este tu ejemplo real? Claramente, los ejemplos pueden ser hipotéticos, pero no ayuda si parecen totalmente improbables. Me resulta difícil imaginar cualquier motivo posible para agrupar una serie temporal de esta manera. Por otro lado, decir por qué es de interés o utilidad puede ayudar a orientar respuestas.

2voto

Logic Labs Puntos 349

* Actualización *

Como menciona un comentario, Keogh y Lin tienen un excelente artículo sobre este tema. En mi opinión, muestran de manera concluyente que aunque la técnica en sí misma se aplica comúnmente como se detalla en mi respuesta a continuación, la utilidad de esta técnica es cuestionada. Lee el artículo por ti mismo, vale mucho la pena: http://www.cs.ucr.edu/~eamonn/meaningless.pdf

* Actualización *

He visto k-means utilizado con éxito en datos de series temporales.

La preocupación general con k-means se debe al número de dimensiones. Más específicamente, cuando estructuras un problema de series temporales para el algoritmo k-means, generalmente tienes ventanas/pasos de datos dentro de los cuales residen porciones contiguas de la serie temporal. Por lo general, producirás muchas muestras de ventana/paso que pueden ser no superpuestas, o superpuestas, dependiendo de tu caso de uso.

En esta situación, cada paso de tiempo dentro del paso se considera una dimensión por el algoritmo k-means. En tal situación, si el número de pasos de tiempo dentro de tu ventana es grande, estás introduciendo mucha dimensionalidad: cada paso de tiempo se convierte en una dimensión. En este caso es cuando k-means suele tener problemas.

Ejemplo

Si tienes una serie temporal cruda compuesta por n pasos de tiempo, tu objetivo puede ser establecer si algún período arbitrario de tiempo dentro de esta serie temporal es similar a un período anterior.

La preparación puede incluir la creación de una ventana móvil de longitud/paso m pasos de tiempo:

ts = [1,2,3,4,1,2,9,8,3,7,9,8,1,7,9,8,1,7,2,9,3,8,7,1,9,8,2,7,3]
ventana1 = [1,2,3]
ventana2 = [2,3,4]
ventana3 = [3,4,1]
ventana4 = [4,1,2]
...

Donde m es 3 en este ejemplo. Ahora tienes un número de muestras creadas a partir de tus datos originales, donde cada muestra tiene una dimensión de 3. La longitud del paso/ventana m y la dimensionalidad son lo mismo. Imagina que cada paso de tiempo dentro de la ventana es una variable independiente diferente de tu experimento. Usando el algoritmo k-means como de costumbre, ahora podrías producir grupos que son prototípicos de tu serie temporal subyacente.

Puedes leer más sobre este tema aquí: Cómo entender las desventajas de K-means

Además, es un problema conocido que entender cuando dos series temporales están 'cerca' en el espacio euclidiano puede ser engañoso. Un buen artículo sobre este tema con código está disponible aquí: http://alexminnaar.com/time-series-classification-and-clustering-with-python.html. En resumen, encontrar una medida de similitud puede ser desafiante, y el Alineamiento Temporal Dinámico es una opción para ayudar a abordar esto.

0 votos

Gracias por tu respuesta. Pero ¿cómo exactamente se considera cada paso de tiempo como una dimensión? No estoy seguro de entender esa parte. ¿Podrías explicar, por favor? Muchas gracias.

0 votos

He añadido un ejemplo en la respuesta

0 votos

Agrupar subsecuencias en una ventana de desplazamiento como sugiere ha demostrado producir resultados que aparentemente estructurados pero son esencialmente aleatorios. Ver Keogh y Lin (2005) Agrupamiento de subsecuencias de series temporales es sin sentido: implicaciones para investigaciones anteriores y futuras.

2voto

Amadiere Puntos 5606

KMeans nunca compara valores vecinos.

Por lo tanto, dos series temporales que son cero y alcanzan su pico a las 15:00 respectivamente a las 14:59 son máximamente diferentes. Por eso quieres usar el tiempo de distorsión para agregar cierta tolerancia en el tiempo.

Además, kmeans no puede utilizar series temporales de diferente duración o resolución. Si tus datos son de 24 dimensiones para exactamente 24 horas, no lo notas. Pero muchas series temporales no están agregadas de esta manera. KMeans tampoco puede manejar datos faltantes.

1voto

Shift Puntos 310

Es posible usar Kmeans para varias (muchas) series de tiempo. Lo hice y mejoró ligeramente el rendimiento. De hecho, algunos otros métodos fueron mucho mejores

En un contexto de muchas series de tiempo, usar KMeans dividiría naturalmente las series en grupos y haría un entrenamiento diferente de $y_{t+1}=f(y_1,y_2,...y_t)$ (como la regresión lineal, por ejemplo) en cada grupo.

Lo esencial es la distancia que elijas. Si solo usas una distancia básica áspera $L_2$, no funcionará. La distancia debe reflejar la idea de que las curvas son "similares". Es mucho trabajo: escalar, transformación afín, traslación en el tiempo, tal vez incluso distorsión en el tiempo... Idealmente, la pequeña distancia entre dos curvas reflejaría la idea de que "algo probablemente tenga las mismas consecuencias en el futuro ya ha sucedido en el pasado".

Y aún así, el resultado puede ser muy decepcionante. Si tienes una distancia inteligente entre curvas, entonces los vecinos más cercanos o el suavizado de núcleo podrían ser mucho mejores. Para mí funcionó mucho mejor.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X