¿Técnicas de agrupamiento apropiadas para datos temporales?

13

Tengo datos temporales de frecuencias de actividad. Quiero identificar grupos en los datos que indican distintos períodos de tiempo con niveles de actividad similares. Idealmente, quiero identificar los grupos sin especificar el número de grupos a priori.

¿Cuáles son las técnicas de agrupamiento apropiadas? Si mi pregunta no contiene suficiente información para responder, ¿cuáles son los datos que necesito proporcionar para determinar las técnicas de agrupamiento adecuadas?

A continuación se muestra una ilustración del tipo de datos / agrupación que estoy imaginando: agrupamiento a través del tiempo

Histelheim
fuente
La trama se ve suavizada (interpolada) para mí. Eso es probablemente engañoso. Y "longitudinal" lo asocie con los datos geográficos, pero ¿al parecer estás viendo una serie temporal?
HA SALIDO - Anony-Mousse
1
No prestes demasiada atención a la trama, es solo un ejemplo. Lo que quiero lograr es la identificación de episodios distintos de tiempo basados ​​en variables que varían a lo largo del tiempo. Longitudinal, en mi opinión, es lo mismo que datos temporales, ver por ejemplo en.wikipedia.org/wiki/Longitudinal_study
histelheim
Debido a que en la agrupación, verá este término principalmente como en es.wikipedia.org/wiki/Longitude : de su pregunta no está claro qué desea agrupar. Puede agrupar, por ejemplo, intervalos de tiempo que se comportan de manera similar en "sujetos" o sujetos que muestran el mismo progreso a lo largo del tiempo.
HA SALIDO - Anony-Mousse
1
He cambiado 'longitudinal' a 'temporal' para evitar confusiones. Usando tus palabras, creo que quiero agrupar intervalos de tiempo . Sin embargo, es importante para mí que los grupos sean episodios distintos y continuos en el tiempo.
histelheim
Las búsquedas con palabras clave de "segmentación de series temporales" o "modelos de cambio de régimen" pueden ayudarlo.
Yves

Respuestas:

6

Según mi propia investigación, parece que los modelos Gaussian Hidden Markov podrían ser una buena opción: http://scikit-learn.org/stable/auto_examples/plot_hmm_stock_analysis.html#example-plot-hmm-stock-analysis-py

Definitivamente parece encontrar episodios distintos de actividad.

Modelo gaussiano de Markov oculto

Histelheim
fuente
¿No tienes que saber cuántos estados ocultos hay antes de tiempo? ¿Hay alguna forma de evitar eso?
JCWong
@JCWong Creo que puedes usar una variante bayesiana no paramétrica (el modelo de Markov oculto infinito) para evitar eso.
jtobin
Sin embargo, después de mucho tiempo: HMM no parece agrupar / agrupar eventos temporalmente (lo que parece de la figura). Pero, ¿qué se ha preguntado es cómo obtener clústeres temporales? Tengo curiosidad, ya que estoy trabajando en cosas de agrupamiento temporal.
RussellB
3

Su problema suena similar al que estoy viendo y esta pregunta, que es similar, pero menos explicada.

Su respuesta enlaza con un buen resumen sobre la detección de cambios. Para posibles soluciones, una búsqueda rápida en Google encontró un paquete de Análisis de Punto de Cambio en el código de Google. R también tiene algunas herramientas para hacer esto. El bcppaquete es bastante potente y realmente fácil de usar. Si desea hacerlo sobre la marcha a medida que ingresan los datos, el documento "Detección de punto de cambio en línea y estimación de parámetros con aplicación a datos genómicos" describe un enfoque realmente sofisticado, aunque tenga en cuenta que es un poco difícil. También está el strucchangepaquete, pero esto me ha funcionado menos bien.

fozziethebeat
fuente
1

¿Has visto esta página: Página de clasificación / agrupación de series temporales de UCR ?

Allí puede encontrar ambos: los conjuntos de datos para practicar y los resultados publicados, para comparar el rendimiento de su propia implementación (también hay un enlace sobre el rendimiento conocido de técnicas de aprendizaje automático bien conocidas). Además, esta página cita una masa crítica de documentos desde los cuales podría continuar con la investigación para encontrar el mejor enfoque que se adapte a su problema, datos o necesidades.

Además, hay otra forma de hacerlo (potencialmente) mediante la aplicación de sequitur http: // sequitur.info. Si podrá normalizar / aproximar bien sus datos, le dará su gramática de esos "períodos de tiempo distintos con niveles de actividad similares". Consulte este documento y busque otro, porque no puedo agregar más enlaces ...

seninp
fuente
3
¿Podría proporcionar un breve resumen de los recursos disponibles en esta página?
chl
Seguro que puedo. a partir de ahí codifiqué mi propio clasificador
seninp
1

Creo que puede usar Dynamic Time Wrapping para buscar similitudes entre diferentes series de tiempo. Para hacer eso, es posible que deba discretizar su wavelet en colecciones, como una matriz. Pero la granularidad sería un problema y si tiene una gran cantidad de series de tiempo, el costo de cálculo será bastante grande para calcular la distancia DTM para cada par de ellas. Por lo tanto, es posible que necesite alguna preselección para trabajar como etiquetas.

Cheque esto . También estoy trabajando en alguna tarea como la tuya y esta página me ayudó un poco.

Yifan Guo
fuente