Inicio · Parte 14 — Matemática de Machine Learning
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
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.
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.
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
kiteraciones_hasta_convergercentroideshistorial_de_inerciala_inercia_nunca_subeobjetivoconverge_a_un_optimo_localsensible_a_la_inicializacionsemilla{
"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)}‖²"
}
Segmentación de clientes, cuantización de color, compresión vectorial, inicialización de GMM y agrupamiento de embeddings.
Estos algoritmos siguen siendo la línea base honesta contra la que se debe comparar cualquier modelo profundo.
10.1109/tit.1982.1056489 verificado en Crossref (2026-08-19).10.5555/1283383.1283494, pendiente de resolver.