Unidad 6 - Clustering: fundamentos y métricas

Introducción al Business Analytics · Semana 13 · 06278-ECO

Autor/a

PhD. Eduard F. Martínez-González

1 Cómo estudiar esta semana

Este documento es la versión escrita del video de la semana

  1. 🎬 Mira el video de la clase — el enlace está en Intu. En clustering el componente visual es clave: verás los centroides moverse en vivo.
  2. 📖 Lee este documento — el mismo recorrido, con un playground de k-means para correr el algoritmo paso a paso y una perilla de k para entrenar el ojo con el codo y la silueta.
  3. Presenta el quiz en Intu antes de la clase.
Advertencia

Antes de venir a clase: esta semana NO hay paquetes nuevos 🎉

Todo lo que usarás ya está en tu máquina: dplyr y ggplot2 te acompañan desde la semana 4, kmeans() viene con R, y el paquete cluster (para la silueta) se instala junto con R. Verifícalo en 10 segundos: library(cluster) no debe arrojar error. Si arroja, install.packages("cluster") y listo.

El plan: llevas tres semanas entrenando modelos con hoja de respuestas — el target decía quién pagó, qué nota sacó, y las métricas medían qué tanto le atinabas. Esta semana te quitamos la hoja de respuestas. La empresa entrega una base de clientes y pregunta: “¿qué tipos de clientes tengo?” Nadie sabe la respuesta — ni la empresa, ni el modelo, ni tú. Vas a descubrir grupos con k-means, a decidir cuántos grupos hay con el codo y la silueta, y a hacer el paso que paga el sueldo del analista: perfilar cada grupo hasta que tenga nombre propio y una acción de negocio.

2 Glosario de la semana

Aprendizaje no supervisado 🧭 Modelar sin target: no hay columna con “la respuesta correcta”. El algoritmo busca estructura (grupos, patrones) y el humano juzga si esa estructura sirve.

Segmentación 🗺️ El uso estrella del clustering en negocios: partir clientes/productos/zonas en grupos internamente parecidos y externamente distintos, para tratarlos diferente.

Distancia 📐 El “qué tan diferentes son” entre dos observaciones: cada cliente es un punto en el espacio de las variables, y estar cerca = comportarse parecido.

Escalamiento ⚖️ scale(): llevar cada variable a media 0 y desviación 1. Obligatorio antes de k-means: sin esto, la variable de rango grande (pesos) aplasta a las demás en el cálculo de distancias.

Centroide 🎯 El punto promedio de un cluster — la “bodega” del grupo. k-means vive moviendo centroides y reasignando puntos hasta que nada cambia.

WCSS 🧲 Within-cluster sum of squares: la suma de distancias² de cada punto a su centroide. Mide compactación — qué tan apretados quedaron los grupos. Es lo que k-means minimiza.

Método del codo 💪 Graficar la WCSS para k = 1, 2, 3… y buscar el punto donde agregar un cluster más deja de comprar compactación. Orienta, no decide.

Silueta 👤 De −1 a +1 por observación: ¿estás más cerca de tu cluster que del vecino? La silueta promedio compara valores de k — y a diferencia del codo, sí tiene un máximo.

nstart 🎲 k-means arranca con centroides aleatorios y puede terminar distinto cada vez. nstart = 25 corre 25 arranques y se queda con el mejor — tu seguro contra la mala suerte.

Perfilamiento 🏷️ Traducir cada cluster a negocio: tabla de promedios, tamaños, gráficos y un nombre accionable. Un cluster sin perfil es un número; con perfil es una estrategia.

3 Se acabaron las respuestas

Mira el arco de las últimas tres semanas: en la 10 aprendiste a medir modelos, en la 11 predijiste categorías (¿paga o no paga?), en la 12 predijiste números (¿en cuánto se vende?). En todas hubo un lujo que ya ni notabas: la columna con la respuesta. Podías partir en train/test y preguntar “¿le atiné?” porque había un dato real contra el cual chocar cada predicción.

Hoy ese lujo desaparece. El gerente no pregunta “predícEme quién se fuga” — pregunta “¿qué tipos de socios tengo?”. En la base no existe ninguna columna tipo_de_socio. No la tiene él, no la tienes tú, no la tiene nadie: hay que descubrirla.

Supervisado (semanas 10-12) No supervisado (esta semana)
¿Hay target? 🟢 Sí — la hoja de respuestas 🔴 No — nadie sabe “la verdad”
La pregunta ¿Puedo predecir Y? ¿Qué estructura esconde X?
¿“Acertar” se puede medir? Sí: matriz de confusión, MAE… No hay contra qué: no existe la respuesta correcta
¿Entonces cómo se evalúa? Contra el test (una vez) Compactación (WCSS), silueta… y criterio de negocio
El veredicto final “Le atina X%” “¿Los grupos se pueden nombrar y accionar?”

Dónde estás parado en el pipeline

Los pasos de la semana 10 siguen ahí — pregunta de negocio, preparar datos, entrenar, evaluar, comunicar — pero la evaluación cambia de naturaleza: ya no hay test que dé un veredicto objetivo. Las métricas de esta semana (WCSS, silueta) orientan la búsqueda, y la decisión final es de criterio: un clustering es bueno si produce segmentos útiles. Esto no es una debilidad — es la razón por la que este trabajo no se automatiza fácil.

4 ¿Por qué segmentar?

Antes del algoritmo, el problema de negocio. Tienes 10.000 clientes y un presupuesto de marketing que no alcanza para consentirlos a todos. Tratarlos igual es ineficiente: no todos quieren lo mismo, no compran igual, no responden al mismo mensaje. La segmentación busca grupos internamente homogéneos (los miembros se parecen entre sí) y externamente diferentes (los grupos se distinguen), para diseñar una estrategia por grupo en lugar de una talla única.

Un buen agrupamiento logra las dos cosas a la vez — y los extremos no sirven: si todos los clientes caen en un solo grupo, no segmentaste nada; si cada cliente es su propio grupo, tampoco. El reto es el punto intermedio útil para decidir.

Preguntas de segmentación típicas:

  • ¿Qué perfiles de clientes tenemos según frecuencia, monto y recencia de compra?
  • ¿Qué zonas de la ciudad se comportan parecido en ventas, para asignar vendedores?
  • ¿Qué productos comparten patrón de demanda, para planear inventario juntos?
  • ¿Qué canciones “suenan” parecido, para armar listas automáticas? (la de la práctica)

En todos los casos, nadie dice de antemano cuántos grupos hay ni cuáles son. Eso lo descubre el algoritmo — y lo valida el analista.

5 k-means: la máquina de las bodegas

5.1 Similitud = cercanía

La idea central del clustering cabe en una frase: observaciones que están “cerca” pertenecen al mismo grupo. Cada cliente es un punto en un espacio donde cada eje es una variable (monto, frecuencia, recencia…), y la distancia entre dos puntos mide qué tan distinto es su comportamiento.

Advertencia

La regla de oro: escalar ANTES de agrupar

Si una variable está en pesos (rango 0–5.000.000) y otra en visitas al mes (rango 0–20), la distancia la domina la de pesos: para el algoritmo, la diferencia entre gastar $80.000 y $95.000 es quince mil veces más grande que la diferencia entre ir 1 vez y ir 20. El clustering resultante refleja unidades, no comportamiento.

scale() lleva todas las variables a media 0 y desviación 1 — la misma cancha para todas. Siempre escala las variables numéricas antes de k-means. En la práctica y el taller de esta semana vas a ver (con números) qué pasa cuando alguien lo olvida.

Si quieres una pasada visual alternativa de 5 minutos, este video del canal AprendeInnovando (material complementario, en español) resume el algoritmo:

5.2 El algoritmo en 4 pasos

k-means, versión gerente de logística

Necesitas ubicar k bodegas para atender a tus clientes repartidos en el mapa, cada bodega lo más cerca posible de los suyos:

  1. Inicio: coloca k bodegas en posiciones aleatorias.
  2. Asignación: cada cliente se asigna a la bodega más cercana.
  3. Actualización: mueve cada bodega al centro geográfico de sus clientes.
  4. Repetición: repite 2 y 3 hasta que las bodegas dejen de moverse (convergencia).

Las “bodegas” son los centroides; los clientes de cada bodega, los clusters.

Lo que k-means optimiza: la suma de distancias² de cada punto a su centroide — la WCSS (within-cluster sum of squares). Grupos compactos = WCSS baja. Ese número te lo vas a encontrar en el playground de abajo, en el gráfico del codo y en el output de R (tot.withinss).

5.3 Explóralo tú mismo: k-means playground

Corre el algoritmo paso a paso — el video de la clase lo muestra; aquí lo manejas tú:

  1. Selecciona “Blobs separados” y ve paso a paso: Inicializar → Asignar → Mover centroides → repetir. Observa cómo la WCSS baja en cada iteración hasta converger.
  2. Con el mismo dataset, Reinicia e Inicializa varias veces con el mismo k: los centroides arrancan en lugares distintos… ¿el resultado final es siempre igual? (Esta es la razón de nstart = 25 en R.)
  3. Cambia a “Anillos” con k = 2. ¿Por qué k-means fracasa aquí? ¿Qué supuesto del algoritmo se rompe?
  4. Prueba “Grupos desiguales” con k = 3 y mira la silueta: ¿sube o baja frente a “Blobs separados”?
Dataset
Número de clusters (k)
3
Pasos del algoritmo
iteración: —
WCSS
compactación intra-cluster
Silhouette promedio
Clusters
Elige un dataset e inicializa los centroides

5.4 Limitaciones de k-means

Advertencia

Limitaciones que debes tener presentes al leer resultados

  1. Hay que elegir k de antemano — el algoritmo no decide cuántos grupos hay; tú le dices cuántos buscar (la siguiente sección es justo sobre eso).
  2. Sensible a la inicialización — dos corridas pueden dar grupos distintos. Solución estándar: nstart = 25 (R corre 25 arranques y entrega el mejor) + set.seed() para que sea reproducible.
  3. Asume grupos “redondos” y de tamaño similar — formas alargadas o anillos (lo viste en el playground) lo confunden.
  4. Sensible a outliers — un punto extremo jala el centroide hacia sí y deforma el cluster.
  5. Solo variables numéricas — k-means calcula distancias; las categóricas no entran sin transformación previa. Y los ID numéricos tampoco: que id_socio sea un número no significa que la “distancia” entre el socio 1001 y el 1280 mida algo.

Nada de esto invalida a k-means — es el algoritmo de segmentación más usado del mundo precisamente por simple, rápido e interpretable. Pero el analista que conoce las limitaciones lee los resultados con los ojos abiertos.

6 ¿Cuántos clusters? El codo, la silueta y el negocio

La pregunta más importante de la semana — y donde más se equivocan los principiantes. No existe un k “correcto” automático: hay dos métricas que orientan y un criterio de negocio que decide.

6.1 El método del codo

Corres k-means para k = 1, 2, 3, …, 8 y graficas la WCSS de cada uno. La WCSS siempre baja al agregar clusters (más bodegas = todo el mundo más cerca de alguna) — la pregunta no es dónde baja, sino dónde deja de bajar con ganas.

Piénsalo con las bodegas: con 1 bodega para toda Colombia, todo queda lejos. Con 2, mejora muchísimo. Con 3, bastante. Con 20… cada bodega nueva ya casi no acerca a nadie y sí cuesta. El codo es el punto donde la mejora marginal deja de justificar la complejidad.

6.2 La silueta

La silueta mira cada punto y pregunta: ¿estás más cerca de los de tu cluster que de los del cluster vecino? El coeficiente va de −1 a +1:

Valor Significado
Cerca de +1 Bien asignado: pegado a los suyos, lejos de los demás
Cerca de 0 En la frontera entre dos clusters
Negativo Probablemente en el cluster equivocado

Para elegir k se calcula la silueta promedio de cada candidato — y a diferencia del codo (que se lee “a ojo”), aquí sí hay un máximo que señalar con el dedo.

6.3 Entrena el ojo: la perilla de k

Un caso ilustrativo de segmentación de clientes, ya resuelto para k = 1…8. Mueve la perilla y aprende a leer las dos señales juntas:

💪 El codo y la silueta — ¿cuántos grupos pido?
Número de clusters (k): 1
WCSS
Lo que compró este k
Silueta promedio
Advertencia

Ojo: el codo no siempre es nítido. A veces la curva baja suave, sin quiebre obvio — el codo “duda” entre dos valores. Ahí es cuando la silueta rompe el empate… y cuando ni ella es clara, decide el criterio de la siguiente sección. Los tres hablan; tú firmas.

6.4 El criterio final: ¿los grupos sirven?

El codo y la silueta te dejan en un rango razonable de k. La decisión final es de negocio — hazle estas cuatro preguntas a cada agrupamiento candidato:

  1. ¿Puedo nombrar cada cluster? Si no puedes ponerle nombre descriptivo (“frecuentes de bajo monto”, “esporádicos de alto ticket”), probablemente no es un buen agrupamiento.
  2. ¿Puedo accionar sobre cada cluster? ¿Cada segmento recibiría una estrategia distinta? Si dos recibirían la misma acción, quizá deberían ser uno.
  3. ¿Los tamaños son razonables? Un cluster de 3 clientes entre 10.000 suele ser ruido… aunque a veces un grupo pequeño es un nicho valioso — el perfil decide, no el tamaño solo.
  4. ¿Es estable? Si otra corrida (u otro mes de datos) cambia los grupos drásticamente, no confíes en la segmentación.

Regla práctica: si el codo sugiere 4 y la silueta 3, perfila ambos y quédate con el que produzca segmentos más claros y accionables.

7 Perfilamiento: de números a decisiones

k-means devuelve etiquetas (1, 2, 3…) y aquí es donde muchos análisis mueren: “encontré 4 clusters” — ¿y qué? El trabajo valioso apenas empieza: hay que perfilar cada segmento hasta poder describirlo, nombrarlo y accionarlo.

El perfilamiento estándar tiene tres piezas:

  1. Tabla de promedios por cluster — para cada variable, el valor típico de cada segmento (+ el tamaño de cada grupo).
  2. Visualizaciones comparativas — un scatter coloreado por cluster y boxplots por variable: muestran separación y dispersión.
  3. Nombres de negocio — la traducción final.

Ejemplo: tabla de perfilamiento (clientes, 3 variables RFM)

Cluster Nombre sugerido Monto prom. Frecuencia Recencia (días) Tamaño
1 Frecuentes de bajo monto $45.000 8.2 5 4.200
2 Esporádicos de alto ticket $320.000 1.1 45 1.800
3 Inactivos $28.000 0.3 120 4.000

Lectura: el cluster 1 compra seguido pero poquito → programa de lealtad con upgrades. El 2 compra poco pero gasta mucho → relación personalizada. El 3 lleva 4 meses sin aparecer → campaña de reactivación… o aceptarlos como perdidos y no gastar en ellos.

Nombrar es parte del análisis. Buenos nombres son cortos, descriptivos y orientados a la acción: “VIP dormidos”, “cazadores de ofertas”, “nuevos exploradores”. Malos nombres no dicen nada: “Grupo A”, “cluster grande”, “los del medio”. Si después de mirar la tabla no le encuentras nombre a un grupo, sospecha del agrupamiento (o del k).

Advertencia

El centroide es un promedio, no un cliente

Ningún miembro del cluster es idéntico al centroide — y los promedios engañan. Revisa siempre la dispersión dentro de cada cluster (boxplots) para saber qué tan homogéneo es de verdad el segmento. Y recuerda: las asignaciones no son certezas — un cliente puede estar en la frontera entre dos grupos (silueta ≈ 0).

8 Las alternativas (alto nivel)

k-means es el punto de partida, no la única opción. Dos alternativas que debes conocer de vista:

Clustering jerárquico 🌿

  • No pide k de antemano: construye la jerarquía completa de fusiones y la “cortas” al nivel que quieras.
  • Produce un dendrograma — el árbol que muestra cómo se van uniendo los grupos.
  • Útil para explorar granularidad: ¿2 macro-segmentos o 6 micro-segmentos? El mismo dendrograma responde ambas.
  • Desventaja: lento en bases grandes.

DBSCAN 🕵️ (opcional)

  • Encuentra clusters de forma irregular (no solo “redondos”).
  • Detecta outliers automáticamente: puntos que no pertenecen a ningún grupo.
  • No pide k, pero pide otros dos parámetros (radio de vecindad y mínimo de puntos).
  • Útil con grupos de formas raras o mucho ruido.
Método ¿Elegir k antes? Forma de clusters Outliers Escalabilidad
k-means Esféricos Los absorbe (sensible) 🟢 Muy buena
Jerárquico No (cortas después) Flexible Moderado 🟠 Limitada
DBSCAN No Arbitraria 🟢 Los separa solos Buena

Para este curso, k-means es el algoritmo central; estas alternativas son contexto para que puedas mencionarlas cuando el problema lo amerite.

9 El pipeline completo de un proyecto de segmentación

Este es el guion — el mismo de la práctica, el taller y (si tu pregunta es de segmentación) tu proyecto final:

1
Define la pregunta de negocio. ¿Qué segmentas y para qué? (clientes para campañas, zonas para vendedores, productos para inventario). La pregunta decide las variables.
2
Selecciona y prepara variables. Solo numéricas y relevantes para la pregunta — fuera IDs, fuera categóricas sin transformar. Y escala con scale().
3
Corre k-means para varios k (típicamente 1 a 8), con set.seed() y nstart = 25.
4
Evalúa con codo y silueta. El codo acota el rango; la silueta señala su máximo. Quédate con 1-2 candidatos.
5
Elige el k final con criterio de negocio. Perfila los candidatos: gana el que produzca grupos nombrables y accionables.
6
Perfila en serio. Tabla de promedios + tamaños + gráficos comparativos. Nombra cada segmento.
7
Comunica y recomienda. Una acción concreta por segmento — eso es lo que el gerente compra.

Conexión con el proyecto final

Si la pregunta de negocio de tu grupo es de segmentación, esta semana es literalmente tu proyecto: este pipeline de 7 pasos es la estructura de tu entrega final. Y la calidad se medirá donde siempre: en la interpretabilidad y accionabilidad de los segmentos, no en la sofisticación del algoritmo.

10 Errores frecuentes

Advertencia

Los seis pecados del clustering

  1. No escalar — el error #1. El clustering termina reflejando unidades, no comportamiento.
  2. Meter variables irrelevantes — IDs numéricos, códigos postales “numéricos”… distorsionan la distancia. Selecciona con la pregunta de negocio en la mano.
  3. Elegir k solo con el codo — el codo orienta; valida con silueta y, sobre todo, con interpretabilidad.
  4. Reportar clusters sin perfilar — “hay 4 grupos” no le sirve a nadie; los nombres y las acciones son el entregable.
  5. Tratar las asignaciones como certezas — hay puntos en la frontera; la segmentación es una simplificación útil, no una verdad.
  6. Leer el centroide como “el cliente típico” — es un promedio; mira la dispersión antes de describir el segmento.

11 ¿Y en tu semestre?

  • En la práctica de esta semana serás el analista de una plataforma de streaming: segmentarás canciones por su sonido (no por el género declarado — spoiler: no coinciden del todo) para armar listas de reproducción con nombre y personalidad. Todo el pipeline: escalar, codo, silueta, perfilar, nombrar.
  • En el taller te toca el rol completo de consultor: un gimnasio te entrega su base de socios y una segmentación mal hecha que tendrás que auditar antes de construir la buena. No digo más.
  • Y ojo al calendario: la próxima semana es el parcial 2 — esta teoría (más las semanas 10-12) es el material. El pipeline, las métricas y el porqué de cada paso; no la memoria de ningún número.

12 Para pensar 🧠

  1. Tu banco te tiene, con certeza, dentro de un cluster. ¿Qué variables crees que usaron? ¿Qué nombre le pondrías al segmento donde caes… y qué campaña te están mandando por estar ahí?
  2. Spotify Wrapped te dice cada diciembre “tu año en música”. ¿Dónde ves las huellas de un clustering ahí? ¿Qué decisión de negocio toma Spotify con esos grupos?
  3. Si corres k-means dos veces y obtienes grupos distintos, ¿cuál de los dos es “el verdadero”? (Pista: la pregunta está mal planteada — ¿por qué?)

13 Checklist de la semana

Antes de la clase, deberías poder marcar todas:

14 Preguntas de comprensión

1. ¿Supervisado o no supervisado? Un banco tiene 50.000 clientes con saldo promedio, número de productos, antigüedad y frecuencia de transacciones digitales. Quiere identificar perfiles de clientes para ofertas personalizadas, pero no existe ninguna variable que diga a qué perfil pertenece cada uno. ¿Qué tipo de problema es y por qué?

Ver respuesta No supervisado: no hay target que indique los grupos — el algoritmo debe descubrirlos a partir de los patrones. Señal adicional: la entrega no se evalúa con “accuracy contra la respuesta”, sino con la utilidad de los perfiles descubiertos.

2. El clustering que solo veía plata. Un analista corre k-means con ingreso anual (rango $10M–$200M) y compras mensuales (rango 1–30). Los clusters separan casi perfectamente por ingreso e ignoran la frecuencia. ¿Qué pasó y cómo se corrige?

Ver respuesta No escaló. El ingreso tiene un rango miles de veces mayor, así que domina el cálculo de distancias y la frecuencia se vuelve invisible. Se corrige con scale() antes de kmeans(): ambas variables quedan en media 0 y desviación 1, y pesan igual.

3. Codo vs. silueta. Corres k-means para k = 1…6 y obtienes WCSS = 8500, 5200, 3800, 3100, 2900, 2800, y silueta promedio (k = 2…6) = 0.41, 0.52, 0.49, 0.38, 0.33. El gerente pregunta: “¿cuántos segmentos hago?” ¿Qué respondes y con qué argumento?

Ver respuesta El codo es ambiguo entre 3 y 4 (las caídas: −3300, −1400, −700, −200, −100 — el quiebre fuerte termina entre 3 y 4). La silueta rompe el empate: máximo en k = 3 (0.52). Respuesta profesional: “los indicadores apuntan a 3; déjame perfilar 3 y 4, y confirmo con cuál los segmentos se pueden nombrar y accionar mejor”.

4. Ponles nombre. Tras k-means con k = 3 sobre clientes obtienes: C1: monto $380.000, frecuencia 1.2/mes, recencia 60 días (n = 2.100); C2: $52.000, 7.5/mes, 4 días (n = 5.400); C3: $15.000, 0.4/mes, 180 días (n = 2.500). Nombra cada cluster y propón una acción por segmento.

Ver respuesta C1 “Alto ticket esporádico / premium dormido” → relación personalizada, acceso anticipado a lanzamientos. C2 “Leales cotidianos de bajo monto” → programa de lealtad con upgrades y venta cruzada. C3 “Inactivos / en riesgo” → campaña de reactivación con incentivo; si no responden, dejar de invertir en ellos. (Cualquier nombre específico y accionable vale; “Grupo A” no.)

15 Material adicional (opcional)

  • ISLR — An Introduction to Statistical Learning, capítulo 12 (Unsupervised Learning): k-means y jerárquico con ejemplos visuales — gratis online
  • StatQuest: K-means clustering (inglés, 8 min) — la mecánica del algoritmo dibujada paso a paso → youtube.com/watch?v=4b5d3muPQmA
  • from-data-to-viz.com — para elegir los gráficos cuando perfiles tus clusters → data-to-viz.com

Con el video de la clase, este documento y el quiz es suficiente para llegar a la práctica. Nos vemos en clase. 🎧