3 votos

"Actualización" de la agrupación jerárquica

Supongamos que existe una matriz de distancia d [n x n] sobre el que podemos hacer un clustering jerárquico (por ejemplo, utilizando distancias medias). El dendrograma/cluster resultante de esta operación es entonces c .

¿Existe algún algoritmo que parta de lo ya calculado c y d y luego tratar las actualizaciones incrementales de d y cómo afectan c en lugar de recalcular todo desde cero? No es necesario que dé exactamente los mismos resultados de la agrupación jerárquica, pero debería mantener más o menos la misma lógica.

Editar:

Para dar más detalles: Imagine matriz D y el árbol jerárquico (no sólo las etiquetas de los grupos) h . Esta matriz D se actualiza ahora a una matriz D' con nuevas distancias (no hay nuevos objetos, sólo distancias actualizadas) que están "relativamente cerca" de las antiguas. También podemos considerar el caso más sencillo en el que sólo se actualiza un punto (es decir, una columna de la matriz) y todas las demás distancias permanecen igual. En principio, se podría actualizar por etapas toda la matriz. (La cuestión es si en este punto se sigue ganando algo).

¿Existe una forma de pasar de h a h' sin recalcular todo desde cero? Es decir, ¿podemos simplificar el procedimiento de clustering conociendo el cluster anterior, y el hecho de que las distancias no han cambiado mucho?

Por supuesto, también sería interesante añadir o eliminar puntos. Básicamente el caso de sustituir una columna podría escribirse como quitar una columna y añadir una columna, o al revés...

3voto

Amadiere Puntos 5606

Los resultados de la agrupación jerárquica no se pueden actualizar muy bien.

Si el vecino más cercano de un punto nuevo (similar para un punto que desaparece) está a la altura h, entonces debería poder mantener cualquier cosa por debajo de este valor.

Esto es inherente al diseño de la agrupación jerárquica; por lo que si se intenta encontrar una aproximación para una actualización más eficiente (creo que he visto un artículo de este tipo) entonces la calidad de los resultados puede caer a "resultado completamente erróneo" prácticamente al instante.

Aquí hay un documento sobre la actualización de MST (= clustering de enlace único) en O(n) cuando llega un nuevo nodo: http://epubs.siam.org/doi/abs/10.1137/0204032 pero no se transferirá a otros enlaces.

He aquí una prueba sencilla:

Teorema: La actualización de la agrupación jerárquica lleva al menos O(n) de tiempo para los enlaces con tiempo de ejecución O(n^2) (por ejemplo, el enlace único) y al menos O(n^2) para los enlaces con tiempo de ejecución O(n^3) (todos los demás populares).

Prueba: En caso contrario, teníamos un algoritmo más eficiente para el clustering jerárquico por inserción repetida de puntos, que utiliza O(n*updatecost).

Así que en el caso general, la actualización será al menos O(n^2) (suponiendo que se demuestre el peor caso O(n^3) para la construcción de dendrogramas).

En muchos casos puede ser mejor etiquetar los datos antiguos con los ids de los clusters, luego entrenar un clasificador, y más bien utilizar su clasificador para los nuevos puntos que tratar de actualizar el árbol de dendrogramas.

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