1 votos

Algoritmo de clustering eficiente en memoria para conjuntos de datos de series temporales grandes

Tengo una tarea de simulación en curso con ~1e6 series temporales que deben agruparse en función de medidas estadísticas cada pocos días en la simulación. La mayoría de los métodos de agrupamiento que conozco requieren la construcción de una matriz de afinidad. Dado que tengo memoria limitada, me gustaría trabajar con una solución que sea preferiblemente lineal en requisitos de memoria, incluso si lleva más tiempo calcularlo.

No he tenido mucho éxito encontrando un buen conjunto de algoritmos en los que pueda empezar a investigar. k-means es un algoritmo en el que estoy trabajando, pero requiere que el número de particiones se especifique a priori, lo cual no está disponible en mi problema. Por lo tanto, no es el mejor algoritmo para mis propósitos.

Si tienes algún consejo sobre este tema que pueda ayudarme a empezar, te lo agradecería mucho.

1voto

ScottyDont Puntos 433

Puedes echar un vistazo a una lista de algoritmos de clustering disponibles en sklearn aquí, pero creo que todos ellos tienen una complejidad de $O(n^2$). Además, echa un vistazo al algoritmo de clustering TSNE, que se supone que es $O(log(n)*n)$, pero esto puede no ser cierto dependiendo de una implementación particular. Un caso concreto es de nuevo la implementación de TSNE en Python en sklearn, los problemas de memoria de los cuales se discuten aquí.

0 votos

Ya revisé sklearn y algunas otras bibliotecas para ver si tenían algo que pudiera hacer el trabajo. Pero, casi todos los algoritmos son al menos O(2) en memoria. Dicho esto, tSNE parece tener mejores requisitos de memoria y lo estoy probando en mi conjunto de datos en este momento. ¡Gracias por las sugerencias Sergey!

0 votos

Prácticamente hablando, hice clustering de K-Means con más de 1 millón de series temporales en una laptop de 4Gb de RAM, pero t-SNE me tiró un error, lo que me dice que K-means es de alguna manera más eficiente en el uso de memoria que t-SNE, al menos en Python. En cuanto a tu mención de "# de clusters no está disponible para ti", puedes intentar identificarlo tú mismo con un gráfico de scree. Mira este (R) o este (Python) posts.

Finanhelp.com

FinanHelp es una comunidad para personas con conocimientos de economía y finanzas, o quiere aprender. Puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X