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:
machine-learning
clustering
Histelheim
fuente
fuente
Respuestas:
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.
fuente
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
bcp
paquete 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á elstrucchange
paquete, pero esto me ha funcionado menos bien.fuente
Wavelets podría ayudarlo a identificar períodos con diferentes propiedades. Sin embargo, no estoy seguro de si existen métodos que dividirían sus series de tiempo en períodos discretos para usted. Y parece que hay mucha teoría por recorrer, de la cual solo estoy al principio. Espero leer otras sugerencias ...
Un capítulo introductorio gratuito sobre wavelets.
Un paquete R para pruebas de significación con wavelets.
fuente
¿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 ...
fuente
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.
fuente