lección 7
Cuántos grupos, y qué significa cada uno
Cuántos grupos pedir con el método del codo, y por qué un grupo sin nombre de negocio es materia prima inútil.
⏱ 50 min
En la última parada le pediste a k-means tres grupos, y los formó sin rechistar. Pero esa cifra, el tres, salió de la nada: la pusimos a dedo. Y aquí hay una pregunta honesta que no esquivamos: ¿por qué tres y no dos, o cinco? Si le hubieras pedido siete grupos, también te habría dado siete, encantado, sin avisarte de que a lo mejor no tenía ningún sentido partir tus datos en siete. K-means hace lo que le pides, no lo que te conviene. Decidir cuántos grupos pedir, y luego entender qué significan los que salen, es la parte del trabajo que el algoritmo no hace por ti, y es justamente la que decide si todo esto sirve de algo o es un ejercicio bonito y vacío.
Ya sabes agrupar con k-means y sabes que, al no haber etiquetas, "bueno" no significa "acierta" sino "interpretable y útil". Esta lección va de las dos preguntas que convierten un agrupamiento en algo utilizable. La primera, más técnica: cuántos grupos pedir, y una herramienta para orientarte, el método del codo. La segunda, mucho más importante y mucho menos técnica: qué significa cada grupo que ha salido. Porque un grupo que no sabes describir con palabras del negocio es un número inútil, y convertir ese número en un nombre con sentido es donde está casi todo el valor de lo que haces aquí.
## Cuántos grupos: el problema del número que eliges tú
La "k" de k-means es el número de grupos, y lo eliges tú antes de empezar. Esto, que parece un detalle, es en realidad una decisión incómoda: ¿cómo vas a saber cuántos grupos hay en tus datos si justamente los estás buscando porque no los conoces? Es un poco la pescadilla que se muerde la cola. Y no tiene una respuesta automática perfecta, lo cual es importante que lo sepas: no hay un botón que te diga "tus datos tienen exactamente cuatro grupos". Lo que hay son herramientas que te orientan, más algo de criterio y de conocimiento del problema. La elección del número de grupos es, en parte, una decisión tuya informada, no un cálculo que la máquina hace sola.
Para orientarte existe una idea sencilla, y arranca de algo que ya nombramos: k-means intenta que los clientes de cada grupo estén cerca de su centroide, es decir, que los grupos queden apretados. Hay una medida de lo apretados que quedan, que básicamente suma lo lejos que está cada cliente de su centro. Cuanto más pequeña es esa medida, más compactos son los grupos. Y aquí está la clave: esa medida siempre mejora cuando pides más grupos. Con más centroides, cada cliente tiene uno más cerca, así que todo queda más apretado. En el extremo absurdo, si pides tantos grupos como clientes, cada cliente es su propio grupo y la medida llega a cero: compacidad perfecta y agrupamiento completamente inútil.
Por eso esa medida, por sí sola, no sirve para elegir el número de grupos: siempre te diría "más grupos", hasta el disparate. Lo que sí sirve es mirar cómo baja la medida según vas pidiendo más grupos, y buscar el punto donde deja de bajar deprisa y empieza a bajar despacio. Al principio, pasar de uno a dos grupos, de dos a tres, mejora muchísimo la compacidad, porque estás separando racimos que de verdad estaban mezclados. Pero llega un momento en que pedir un grupo más apenas mejora nada, porque ya has separado los racimos reales y lo único que haces es partir en dos un grupo que estaba bien. Ese punto donde el beneficio se desploma es el número de grupos razonable.
## El método del codo
A esa idea se le llama el método del codo, y el nombre es una descripción literal de lo que vas a ver. Si dibujas la medida de compacidad para uno, dos, tres, cuatro grupos, y vas uniendo los puntos, la línea baja mucho al principio y luego se aplana, formando una curva con la forma de un brazo doblado. El punto donde la curva "dobla", donde pasa de caer en picado a ir casi plana, es el codo del brazo, y ese codo señala el número de grupos razonable. Antes del codo, cada grupo nuevo aporta mucho; después del codo, cada grupo nuevo apenas aporta. El codo es el punto de rendimientos decrecientes, el momento en que seguir añadiendo grupos ya no compensa.
Vamos a verlo con los mismos clientes de antes. Calcularemos la medida de compacidad para uno, dos, tres, cuatro y cinco grupos, y la miraremos en forma de tabla para encontrar el codo. Como los datos que usamos tenían tres racimos de verdad, esperamos que la mejora grande se agote justo al llegar a tres: de uno a tres, saltos enormes; de tres en adelante, mejoras pequeñas. Fíjate en los números y busca dónde el salto se vuelve insignificante.
1import numpy as np2import pandas as pd3from sklearn.cluster import KMeans45rng = np.random.default_rng(42)6g1 = np.column_stack([rng.normal(30, 8, 60), rng.normal(2, 0.6, 60)])7g2 = np.column_stack([rng.normal(120, 15, 60), rng.normal(8, 1.2, 60)])8g3 = np.column_stack([rng.normal(60, 10, 60), rng.normal(12, 1.5, 60)])9X = np.vstack([g1, g2, g3])1011# Medir lo apretados que quedan los grupos para cada numero de grupos12print("Grupos | lo apretados que quedan (menos es mejor)")13for k in range(1, 6):14 km = KMeans(n_clusters=k, random_state=42, n_init=10).fit(X)15 aprox = round(km.inertia_ / 1000) * 1000 # redondeo a miles, para leerlo facil16 print(f"{k} grupos: {aprox}")
La compacidad para 1 a 5 grupos: el salto grande se agota en 3
El error que acecha con el método del codo: tomar la medida de compacidad como si "menos siempre fuera mejor" y acabar pidiendo muchísimos grupos. Esa medida siempre baja al añadir grupos, hasta el absurdo de un grupo por cliente con compacidad perfecta y utilidad cero. El codo no te dice "elige el número con la medida más baja", te dice "elige el número a partir del cual bajar más ya no compensa". Si alguien te presenta un agrupamiento con muchísimos grupos justificándolo porque "así quedan más apretados", desconfía: casi seguro ha confundido compacidad con utilidad.
Una advertencia honesta sobre el codo: no siempre es tan claro como en este ejemplo de juguete. A veces la curva baja de forma suave, sin un codo evidente, y entonces no hay un número de grupos obviamente mejor que los de al lado. Eso no es un fallo del método: es que tus datos no tienen una estructura de grupos nítida, y forzarla sería inventársela. En esos casos, el número de grupos se decide más por lo que es útil para el negocio que por la curva: si al negocio le sirven cuatro segmentos de clientes y la curva no se opone con fuerza, cuatro es una elección razonable. El codo orienta; no manda. La decisión final mezcla lo que dicen los datos con lo que necesita quien va a usar los grupos.
Hay una variante del método del codo que a veces oirás, con otro nombre, y conviene que sepas que existe aunque no la usemos aquí: en lugar de mirar solo lo apretados que quedan los grupos, hay medidas que miran a la vez si cada cliente está cerca de su propio grupo y lejos de los demás grupos. Son un poco más sofisticadas y dan una señal algo más fina sobre el número de grupos. Pero todas comparten la misma filosofía del codo: ninguna te da la respuesta definitiva, todas te orientan, y ninguna sustituye al criterio y al conocimiento del negocio. Si entiendes la idea del codo (más grupos siempre aprietan, busca dónde dejar de añadir), entiendes la familia entera de estas herramientas, que no son más que formas distintas de buscar ese mismo punto de rendimientos decrecientes.
## La pregunta que de verdad importa: qué significa cada grupo
Supón que ya has decidido el número de grupos y k-means te los ha dado. Ahora tienes a cada cliente con un número pegado: grupo cero, grupo uno, grupo dos. Y aquí llega el momento que separa un trabajo útil de uno inútil, y que casi nadie cuenta porque no es técnico: esos números no significan absolutamente nada por sí mismos. "Grupo uno" no es más que una etiqueta arbitraria que el algoritmo repartió; podría haber sido "grupo rojo" o "grupo melón". Si entregas tu trabajo así, con los clientes repartidos en grupo cero, uno y dos, no has entregado nada que nadie pueda usar. El valor empieza justo después, cuando conviertes esos números en descripciones.
Y la forma de hacerlo es mirar los centroides, que resultan ser mucho más que un truco interno del baile. Recuerda que un centroide es el centro de su grupo, el cliente promedio de ese grupo. Así que mirar el centroide de un grupo es mirar cómo es, en promedio, la gente de ese grupo: cuánto gasta, con qué frecuencia compra. Y eso ya se puede traducir a palabras. Si el centroide de un grupo dice "gasto medio de treinta euros, tres compras al mes", ese grupo es "clientes que gastan poco y compran poco". Si otro dice "gasto medio de ciento veinte euros, ocho compras al mes", es "clientes de alto valor". Los centroides son el retrato robot de cada grupo, y leerlos es ponerle cara y nombre a cada uno.
Vamos a hacerlo en código: pedir tres grupos, mirar el centroide de cada uno y leer su retrato. Para que la salida sea estable y fácil de leer, ordenaremos los grupos por su gasto medio, de menor a mayor. Fíjate, al ver el resultado, en que cada centroide es una pareja de números (el gasto medio y la frecuencia media del grupo) que ya se puede traducir a una frase sobre qué clase de cliente vive ahí.
1import numpy as np2import pandas as pd3from sklearn.cluster import KMeans45rng = np.random.default_rng(42)6g1 = np.column_stack([rng.normal(30, 8, 60), rng.normal(2, 0.6, 60)])7g2 = np.column_stack([rng.normal(120, 15, 60), rng.normal(8, 1.2, 60)])8g3 = np.column_stack([rng.normal(60, 10, 60), rng.normal(12, 1.5, 60)])9X = np.vstack([g1, g2, g3])1011km = KMeans(n_clusters=3, random_state=42, n_init=10).fit(X)12centroides = km.cluster_centers_1314# Ordenar los grupos por gasto medio, para leerlos de menos a mas15orden = np.argsort(centroides[:, 0])16for i in orden:17 gasto, frecuencia = centroides[i]18 print(f"Gasto medio {gasto:.0f} euros, frecuencia {frecuencia:.0f} compras/mes")
Leer los centroides: el retrato de cada grupo, listo para ponerle nombre
Observa lo que acaba de pasar, porque es la lección entera: hemos convertido tres números sin sentido (grupo cero, uno, dos) en tres retratos de clientes que cualquiera en la empresa entiende y puede usar para tomar decisiones distintas con cada grupo. Al que gasta poco y compra poco quizá le mandes una promoción de bienvenida; al de alto valor, un trato preferente; al comprador muy frecuente de gasto medio, un programa de fidelidad. Esas decisiones nacen de los nombres, no de los números. Y los nombres los has puesto tú, leyendo los centroides. El algoritmo repartió a la gente; tú le diste el significado. Esa división del trabajo es el corazón del oficio no supervisado.
El error más grave de este territorio: pedirle a k-means que te diga una verdad, cuando lo único que te da es una partición. K-means no sabe nada de clientes, de valor ni de negocio: solo ha repartido puntos en grupos compactos. No ha descubierto que existen "clientes de alto valor"; ha hecho tres montones de puntos cercanos, y has sido tú quien, al mirar los centroides, ha reconocido que uno de esos montones son los clientes de alto valor. Si entregas los grupos como si fueran una verdad que el algoritmo ha descubierto, estás atribuyéndole una sabiduría que no tiene. Él parte; tú interpretas. Confundir las dos cosas lleva a tomar decisiones serias apoyándose en un reparto que podría significar otra cosa.
Consejo de senior: después de nombrar los grupos, haz siempre una prueba de realidad con alguien que conozca el negocio de verdad. Enséñale los retratos ("tenemos un grupo que gasta poco y compra poco, otro de alto valor...") y pregúntale si esos grupos le suenan, si tienen sentido para él, si los reconoce en su día a día. Si asiente y hasta les pone él mismo un nombre mejor, vas bien: los grupos capturan algo real. Si frunce el ceño y dice "esto no me cuadra, nosotros no tenemos clientes así", presta atención: puede que el agrupamiento esté dominado por una variable que no debía, o que el número de grupos no sea el bueno. El experto de negocio es tu mejor validador cuando no hay respuesta correcta.
## Lo que te llevas, y el cierre del territorio
Elegir el número de grupos no tiene respuesta automática: el método del codo te orienta mirando dónde la mejora de compacidad deja de compensar, pero la decisión final mezcla esa señal con lo que es útil para el negocio. Y una vez tienes los grupos, lo que de verdad vale no son sus números, sino lo que significan: se descubre leyendo los centroides, el retrato robot de cada grupo, y traduciéndolos a frases que alguien pueda usar. El algoritmo reparte; tú interpretas. Y el error más grave es confundir una partición con una verdad: k-means no descubre tipos de cliente, hace montones de puntos cercanos a los que tú les reconoces un sentido.
Con esto cierras el recorrido por las dos grandes regiones del mapa: el supervisado, donde hay etiquetas y se predice una respuesta, y el no supervisado, donde no las hay y se hace emerger una estructura. Has entrenado clasificadores, un regresor y un agrupamiento, y has visto que cada uno responde a una pregunta distinta y se mide de forma distinta. Solo queda una cosa por hacer, y es la que lo junta todo: coger un mismo problema y atacarlo de las dos maneras, para sentir en los dedos la diferencia. Y al final de ese proyecto aparecerá, otra vez, la pregunta que llevamos aplazando desde el principio y que lo gobierna todo: ¿funcionaría esto con datos que el modelo no ha visto?
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.