medias means example algoritmo machine-learning cluster-analysis data-mining k-means

machine learning - means - Algoritmo de K-medias



k means python example (5)

Posibles duplicados:
Cómo optimizar K en K - Algoritmo de medias
¿Cómo determino k cuando uso k-means clustering?

Dependiendo de las medidas estadísticas, podemos decidir sobre K. Como desviación estándar, media, varianza, etc., o

¿Hay algún método simple para elegir el K en K-means Algorithm?

Gracias de antemano Navin


Bueno, hay dos soluciones prácticas para el problema de la selección inteligente del número de centroides (k) de uso común.

El primero es para PCA sus datos, y los resultados de PCA, que son los componentes principales (vectores propios) y su contribución acumulada a la variación observada en los datos, obviamente sugieren un número óptimo de centroides. (Por ejemplo, si el 95% de la variabilidad en sus datos se explica por los primeros tres componentes principales, entonces k = 3 es una buena elección para k-means).

La segunda solución práctica comúnmente utilizada para estimar inteligentemente k es una implementación revisada del algoritmo k-means, llamado k-means ++ . En esencia, k-means ++ simplemente difiere de los k-means originales por el adicional de un paso de pre-procesamiento. Durante este paso, el número y la posición inicial de los centroides y estimados.

El algoritmo en el que k-means ++ se basa para hacer esto es fácil de entender e implementar en el código. Una buena fuente para ambos es un post de 2007 en el blog LingPipe , que ofrece una excelente explicación de k-means ++, e incluye una cita del artículo original que introdujo por primera vez esta técnica.

Además de proporcionar una elección óptima para k, k-means ++ es aparentemente superior a los k-means originales tanto en rendimiento (aproximadamente 1/2 tiempo de procesamiento en comparación con k-means en una comparación publicada) como precisión (mejora de tres órdenes de magnitud en error en el mismo estudio de comparación).


Lamentablemente no. No existe un método estadístico basado en principios, simple o complejo que pueda establecer la "K correcta". Hay heurísticas, reglas generales que a veces funcionan, otras veces no.

La situación es más general ya que muchos métodos de agrupamiento tienen este tipo de parámetros.


La mejor solución para el problema desconocido (mediante el modelo de parámetros estadísticos, etc.) es tomar muestras de datos y encontrar los parámetros lo mejor posible para el problema secundario, y luego usarlos en un problema completo. En ese caso, seleccione la mejor K para el 5% de los datos.


Bayesian k-means puede ser una solución cuando no se conoce la cantidad de clusters. Hay un documento relacionado en el sitio web y también se proporciona el código MATLAB correspondiente.


Si desea utilizar k-means explícitamente, podría estudiar el artículo que describe x-means . Cuando se utiliza una implementación de x significa que la única diferencia en comparación con k-means es que, en lugar de especificar una sola k, se especifica un rango para k. La "mejor" elección, wrt. alguna medida, en el rango será parte de la salida de x-means. También puede ver el algoritmo de agrupamiento Mean Shift .

Si es computacionalmente factible con los datos que usted proporcionó (posiblemente utilizando el muestreo como lo sugiere yura), podría agrupar con varias k y evaluar la calidad de los grupos resultantes utilizando algunas de las medidas de validez de clúster estándar. Algunas de las medidas clásicas se describen aquí: medidas .

@doug No es correcto que k-means ++ determine una k óptima para la cantidad de clusters antes de que comiencen las asignaciones de clúster. k-means ++ difiere de k-means solo en lugar de elegir aleatoriamente los k centroids iniciales, elige un centroide inicial al azar y elige centros de forma sucesiva hasta que k se ha elegido. Después de la elección inicial completamente aleatoria, los puntos de datos se eligen como un nuevo centroide con una probabilidad que está determinada por una función potencial que depende de la distancia del punto de datos a los centros ya elegidos. La referencia estándar para k-means ++ es k-means ++: Las ventajas de Careful Seeding por Arthur y Vassilvitskii.

Además, no creo que, en general, la elección de k sea la cantidad de componentes principales mejore su agrupamiento. Imagine puntos de datos en el espacio tridimensional, todos ellos situados en un plano que pasa por el origo. A continuación, obtendrá 2 componentes principales, pero la agrupación "natural" de los puntos podría tener cualquier cantidad de clústeres.