Consulte mi comentario anterior y esta es mi respuesta de acuerdo con lo que entendí de su pregunta:
Como ha indicado correctamente, no necesita la agrupación sino la segmentación . De hecho, está buscando puntos de cambio en su serie de tiempo. La respuesta realmente depende de la complejidad de sus datos. Si los datos son tan simples como el ejemplo anterior, puede usar la diferencia de vectores que se sobrepasa en los puntos cambiantes y establecer un umbral para detectar esos puntos como se muestra a continuación:
Como puede ver, por ejemplo, un umbral de 20 (es decirrex < - 20 y rex > 20) detectará los puntos. Por supuesto, para datos reales necesita investigar más para encontrar los umbrales.
Preprocesamiento
Tenga en cuenta que existe una compensación entre la ubicación precisa del punto de cambio y el número exacto de segmentos, es decir, si utiliza los datos originales, encontrará los puntos de cambio exactos, pero todo el método es sensible al ruido, pero si suaviza Puede que sus señales primero no encuentren los cambios exactos, pero el efecto de ruido será mucho menor, como se muestra en las siguientes figuras:
Conclusión
Mi sugerencia es suavizar sus señales primero e ir por un método de agrupación simple (por ejemplo, usando GMM s) para encontrar una estimación precisa del número de segmentos en las señales. Dada esta información, puede comenzar a encontrar puntos de cambio restringidos por el número de segmentos que encontró en la parte anterior.
Espero que todo haya ayudado :)
¡Buena suerte!
ACTUALIZAR
Afortunadamente, sus datos son bastante sencillos y limpios. Recomiendo encarecidamente los algoritmos de reducción de dimensionalidad (por ejemplo, PCA simple ). Supongo que revela la estructura interna de sus grupos. Una vez que aplique PCA a los datos, puede usar k-significa mucho más fácil y más preciso.
Una solución seria (!)
De acuerdo con sus datos, veo que la distribución generativa de los diferentes segmentos es diferente, lo que es una gran oportunidad para segmentar sus series de tiempo. Vea esto (original , archivo , otra fuente ), que es probablemente la mejor y más avanzada solución a su problema. La idea principal detrás de este documento es que si diferentes segmentos de una serie de tiempo son generados por diferentes distribuciones subyacentes, puede encontrar esas distribuciones, establecerlas como la verdad fundamental para su enfoque de agrupación y encontrar agrupaciones.
Por ejemplo, suponga un video largo en el que los primeros 10 minutos alguien está andando en bicicleta, en los segundos 10 minutos está corriendo y en el tercero está sentado. Puede agrupar estos tres segmentos (actividades) diferentes utilizando este enfoque.