¿Inicializar centros de K-medias por medio de submuestras aleatorias del conjunto de datos?


13

Si tengo un determinado conjunto de datos, ¿qué tan inteligente sería inicializar los centros de clúster utilizando muestras aleatorias de ese conjunto de datos?

Por ejemplo, supongamos que quiero 5 clusters. Supongo que 5 random samplesdel size=20%conjunto de datos original. ¿Podría entonces tomar la media de cada una de estas 5 muestras aleatorias y usar esas medias como mis 5 centros de agrupación iniciales? No sé dónde leí esto, pero quería saber qué piensan ustedes acerca de la idea.


ACTUALIZACIÓN: consulte este hilo Inicialización de agrupación de K-means: ¿cuáles son los métodos existentes? para la discusión general sobre los diversos métodos de inicialización.


11
Si divide aleatoriamente la muestra en 5 submuestras, sus 5 medias casi coincidirán. ¿Cuál es el sentido de hacer que tales puntos cercanos sean los centros de agrupación iniciales? En la mayoría de las implementaciones de K-means, la selección predeterminada de los centros de clúster iniciales se basa en la idea opuesta: encontrar los 5 puntos que están más alejados y convertirlos en los centros iniciales.
ttnphns

2
@ttnphns Esta sería una buena respuesta.

2
Creo que sería mucho mejor elegir la media general como un punto y elegir otros que estén lejos de ese centro en varias direcciones.
Michael R. Chernick

1
Tiene sentido. ¿Cómo podría dar vueltas para encontrar estos 5 puntos que están muy separados? ¡Gracias!
JEquihua

@JEquihua, publiqué mi comentario como respuesta y agregué detalles que está solicitando.
ttnphns

Respuestas:


16

Si divide aleatoriamente la muestra en 5 submuestras, sus 5 medias casi coincidirán. ¿Cuál es el sentido de hacer que tales puntos cercanos sean los centros de agrupación iniciales?

En muchas implementaciones de K-means, la selección predeterminada de los centros de clúster iniciales se basa en la idea opuesta: encontrar los 5 puntos que están más alejados y convertirlos en los centros iniciales. Puede preguntar cuál puede ser la forma de encontrar esos puntos distantes. Esto es lo que está haciendo K-SPSS para eso:

Tome los k casos (puntos) del conjunto de datos como los centros iniciales. Se está comprobando la capacidad de todos los casos de descanso para sustituirlos como centros iniciales, por las siguientes condiciones:

  • a) Si el caso está más alejado del centro más cercano a él que la distancia entre dos centros más cercanos entre sí, el caso sustituye al centro de los últimos dos al cual está más cerca.
  • b) Si el caso está más alejado del segundo centro más cercano a él que la distancia entre el centro más cercano y el centro más cercano a este último, el caso sustituye al centro más cercano.

Si no se cumple la condición (a), se verifica la condición (b); si no está satisfecho, el caso no se convierte en un centro. Como resultado de estos casos, obtenemos k casos extremos en la nube que se convierten en los centros iniciales. El resultado de este algo, aunque suficientemente robusto, no es completamente insensible a la elección inicial de "cualquier k casos" y al orden de clasificación de los casos en el conjunto de datos; por lo tanto, varios intentos de inicio aleatorio son bienvenidos, como siempre es el caso con K-means.

Vea mi respuesta con una lista de métodos de inicialización populares para k-means. El método de división en submuestras aleatorias (criticado aquí por mí y otros), así como el método descrito utilizado por SPSS, también están en la lista.


1
Una vez que haya hecho lo que usted describe, ¿qué estadística podría usar para determinar qué punto de inicialización conduce a una mejor partición? Gracias por todo.
JEquihua

Usar los puntos máximos como centros iniciales una vez no garantiza obtener la mejor partición al final, pensó que (en comparación con los centros iniciales aleatorios) disminuyen la posibilidad de quedar atrapados en un "óptimo local", y aceleran el proceso de convergencia . Variando el orden de los casos, realice la partición completa de k-means 2-5 veces, guarde los centros finales obtenidos, promedie e ingrese como los iniciales para una agrupación final. Esta partición es seguramente la mejor. En realidad, no necesita ninguna estadística especial para verificarlo, a menos que vaya a comparar particiones de diferentes k.
ttnphns

1
Quiero comparar particiones de diferentes k. ¿Qué podría usar? ¿Qué es una buena idea? gracias por ayudarme tanto @ttnphns.
JEquihua

Existe una gran cantidad de criterios de agrupamiento "internos" . Uno de los más apropiados para k-means es Calinski-Harabasz (F de Fisher multivariante). Google para ello o para otros.
ttnphns

7

Los medios serán demasiado similares. También podría encontrar la media del conjunto de datos y luego colocar los centroides iniciales en un pequeño círculo / esfera alrededor de esta media.

Si desea ver más esquemas de inicialización de sonido para k-means, eche un vistazo a k-means ++. Han ideado un método bastante inteligente para sembrar k-means.

  • Arthur, D. y Vassilvitskii, S. (2007).
    k-means ++: las ventajas de una siembra cuidadosa ".
    Actas del decimoctavo simposio anual ACM-SIAM sobre algoritmos discretos

Diapositivas del autor: http://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf


Leí esto, parece intuitivamente ventajoso, pero creo que aún no se ha demostrado que funcione mejor que simplemente tomar muchos puntos de inicialización aleatorios. Encontré este código simple en caso de que quiera probarlo: kmpp <- function (X, k) {n <- nrow (X) C <- numeric (k) C [1] <- sample (1: n, 1) para (i en 2: k) {dm <- distmat (X, X [C,]) pr <- aplicar (dm, 1, min); pr [C] <- 0 C [i] <- muestra (1: n, 1, prob = pr)} kmeans (X, X [C,])}
JEquihua

Se sabe que reduce significativamente el número de iteraciones hasta la convergencia y produce, en promedio, mejores resultados. Puedo confirmar que en mis propios experimentos, kmeans ++ es el camino a seguir. Estoy usando la implementación ELKI.
HA SALIDO - Anony-Mousse

¿Cuál es la implementación de ELKI? ¿Dónde puedo buscarlo? ¡saludos!
JEquihua


4

Usar los medios de muestras aleatorias le dará lo contrario de lo que necesita, como señaló ttnphns en su comentario. Lo que necesitaríamos es una forma de encontrar puntos de datos que estén bastante lejos unos de otros.

Idealmente, podría iterar sobre todos los puntos, encontrar las distancias entre ellos, determinar dónde son las distancias más grandes ...

No para eludir la intención del OP, pero creo que la "solución" está integrada en el algoritmo k-means. Realizamos múltiples iteraciones y recalculamos los centroides del clúster en función de las iteraciones anteriores. También usualmente ejecutamos el algoritmo kmeans varias veces (con valores iniciales aleatorios) y comparamos los resultados.

Si uno tiene conocimiento a priori , conocimiento de dominio, eso podría conducir a un método superior para identificar dónde deberían estar los centros de agrupación iniciales. De lo contrario, probablemente se trate de seleccionar puntos de datos aleatorios como valores iniciales y luego utilizar múltiples ejecuciones y múltiples iteraciones por ejecución.


Una vez que haya hecho lo que usted describe, ¿qué estadística podría usar para determinar qué punto de inicialización conduce a una mejor partición? Gracias por todo.
JEquihua

2

Las respuestas propuestas son todas efectivas, pero son mucho más difíciles de poner en práctica que su propuesta original. Una forma muy simple de inicializar es tomarkobservaciones aleatorias como los puntos originales. La probabilidad de cerrar dos puntos iniciales es bastante baja, y el algoritmo se ejecuta rápidamente para todos los casos, excepto los más extremos.


Tiene mucho sentido. ¿Puedo preguntarte lo mismo que le pregunté a Aman? Supongamos que tomo un billón de puntos iniciales aleatorios. ¿Qué podría usar para determinar cuál de las particiones resultantes es la mejor? ¡Saludos! @gmacfarlane
JEquihua

Típicamente, k-los algoritmos medios iteran hasta que el error cuadrático medio (o error absoluto medio) se minimiza y es estable entre iteraciones. En cualquier conjunto de datos dado, habrá un número finito de combinaciones que realmente minimicen este MSE. Entonces, un billón de ejecuciones probablemente producirá entre uno y diez esquemas de partición (dependiendo de la rareza de sus datos), y elegiría el que tuviera el MSE más bajo entre todos los grupos.
gregmacfarlane

Debo señalar que si sus particiones son muy sensibles a la selección de puntos iniciales, significa que sus datos no tienen grupos naturales y k-significa que el algoritmo de agrupamiento puede no ser lo mejor que se puede usar. O bien, está intentando ajustar más clústeres que los datos presentes de forma natural.
gregmacfarlane
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.