🧮 Computational Mathematics

Inicio · Parte 14 — Matemática de Machine Learning

294 — k-means como optimización

ml-avanzado clase 14 de 20 4 horas demostración kmeans

k-means minimiza la inercia alternando asignación y recálculo, y nunca empeora.

Fórmulas

objetivo: min Σ‖xᵢ − μ_{c(i)}‖²
paso 1: asignar cada punto a su centroide más cercano
paso 2: recalcular cada centroide como la media de los suyos

Desarrollo

k-means agrupa datos minimizando la inercia: la suma de distancias al cuadrado de cada punto a su centroide. El algoritmo de Lloyd alterna dos pasos, y cada uno reduce esa cantidad, lo que garantiza convergencia monótona a un óptimo local.

La garantía es solo local. El resultado depende de la inicialización, y con centroides iniciales malos puede converger a una solución claramente peor. La inicialización k-means++ elige puntos iniciales dispersos con una regla probabilística y reduce mucho ese riesgo; ejecutar varias veces y quedarse con la de menor inercia es la práctica complementaria.

El método impone supuestos que conviene tener presentes porque no siempre se dicen: usar distancia euclídea equivale a suponer agrupamientos esféricos y de tamaño similar. Con grupos alargados, con densidades muy distintas o con formas no convexas, k-means falla de forma sistemática, y ahí corresponden DBSCAN o agrupamiento espectral.

Elegir k es el problema abierto. La inercia siempre baja al aumentar k —con k = n vale cero— así que no sirve como criterio directo. Las heurísticas habituales son el método del codo, el coeficiente de silueta o el gap statistic, y ninguna es definitiva: k suele decidirse por conocimiento del dominio.

Ejemplo trabajado

Dos grupos, convergencia en tres iteraciones.

k = 2

iteración    inercia
    1       92,527761
    3       89,596534

centroides finales:
  ( 2,1592 ;  1,8087)
  (−1,1503 ; −1,0020)

La inercia nunca sube: cada paso la reduce o la deja igual. ✓
Convergió en 3 iteraciones.

Los centroides coinciden con las medias reales de las
clases, aunque el algoritmo no vio ninguna etiqueta.

Qué calcula el laboratorio

k-means como minimización de la inercia (Lloyd).

python classes/part-14-matematica-de-machine-learning/294-k-means-como-optimizacion/lab.py
compmath run 294

Salidas del laboratorio (9)

Muestra de la ejecución real

{
  "k": 2,
  "iteraciones_hasta_converger": 3,
  "centroides": [
    [
      2.1592,
      1.8087
    ],
    [
      -1.1503,
      -1.002
    ]
  ],
  "historial_de_inercia": [
    {
      "iter": 1,
      "inercia": 92.527761
    },
    {
      "iter": 3,
      "inercia": 89.596534
    }
  ],
  "la_inercia_nunca_sube": true,
  "objetivo": "min Σ‖xᵢ - μ_{c(i)}‖²"
}

Errores comunes

Dónde se usa

Segmentación de clientes, cuantización de color, compresión vectorial, inicialización de GMM y agrupamiento de embeddings.

Idea rectora de la parte

El error de generalización se descompone en sesgo, varianza y ruido irreducible.

Error a evitar

Elegir hiperparámetros con el conjunto de test.

Conexión con IA

Estos algoritmos siguen siendo la línea base honesta contra la que se debe comparar cualquier modelo profundo.

Bibliografía de la clase

Archivos de la clase