K-means es uno de los mejores algoritmos de Clustering particional.

Dado un conjunto de puntos y un número de clusters a identificar, el algoritmo particiona iterativamente el conjunto de puntos. Sea el conjunto de puntos o instancias donde es un vector en un espacio euclidiano y es el número de atributos de la instancia o dimensiones del espacio, tal que . El centroide de un cluster es la media de todos los puntos del cluster.

Una vez que todos los puntos del dataset han sido asignados a un cluster, se recalcula el centroide de cada cluster utilizando los puntos que corresponden a cada cluster. Esto se repite hasta alcanzar un criterio de parada:

  • Hasta que ya no hay reasignación de datos en los diferentes clusters.
  • Hasta que ya no hay cambios en los centroides.
  • Hasta que se alcanzó un mínimo en la suma de errores cuadráticos:

K-means se puede usar siempre que se pueda calcular una media. Siendo el número de puntos en el cluster , la media en el espacio euclidiano es:

La distancia de cada dato al centroide se calcula como:

Algoritmo

La bibliografía recomienda ejecutar el algoritmo con al menos 500 iteraciones.

Existe una variante k-modes (usa modas en lugar de medias) para casos en los que no se pueda usar la media. La media también es sensible a los outliers.

Elegir las semillas o centroides iniciales de manera aleatoria puede distorsionar negativamente los clusters que el modelo creará (similar a encerrarlo en mínimos locales). Una heurística simple consiste en:

  1. Calcular la media del dataset para que la primera semilla sea el punto más alejado de la media.
  2. La segunda semilla será el punto más alejado de la primera semilla.
  3. Los puntos sucesivos serán elegidos de manera que su distancia a los puntos ya seleccionados sea la máxima. Este método es empeora si existen outliers.