Práctica guiada — Semana 10: Clustering con Spotify

Introducción al Business Analytics · 06278-ECO

Autor/a

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

1 Aplicación guiada: segmentando canciones en Spotify

Contexto de negocio: Una plataforma de streaming quiere crear listas de reproducción automáticas con personalidad definida: “para entrenar”, “ambiente tranquilo”, “energía máxima”. Para eso necesita agrupar canciones según sus características de audio — no el género declarado (subjetivo), sino variables cuantificables. Nuestro trabajo es aplicar k-means, interpretar los segmentos y proponer nombres accionables para cada grupo.


1.1 Paso 1 — Preparar el entorno


1.2 Paso 2 — Cargar los datos

¿Qué buscamos en el skim()?

Fíjate en los rangos de las variables que usaremos: tempo va de ~40 a ~220 BPM, danceability de 0 a 1. Esa diferencia de escala es exactamente la razón por la que escalar es obligatorio antes de k-means.


1.3 Paso 3 — Seleccionar variables de clustering

No todas las columnas son útiles para agrupar. Usamos solo las características de audio cuantitativas.

¿Por qué estas cuatro variables?

  • danceability — qué tan bailable (0–1)
  • energy — intensidad percibida (0–1)
  • acousticness — probabilidad de ser acústica (0–1)
  • tempo — velocidad en BPM

Capturan dimensiones distintas del sonido. streams queda fuera: mide popularidad, no estilo musical.


1.4 Paso 4 — Escalar las variables

scale() lleva cada variable a media 0 y desviación estándar 1, eliminando el efecto de las unidades.


1.5 Paso 5 — Método del codo para elegir k

Probamos k = 1 a 8 y graficamos cómo cae el WCSS. Buscamos el “codo”: donde agregar un cluster más ya no mejora mucho.

¿Cómo leer el codo?

El “codo” es donde la curva deja de caer abruptamente. Antes de ese punto: cada cluster adicional aporta mucho. Después: mejora marginal. ¿En qué k identificas el quiebre?


1.6 Paso 6 — Ajustar k-means

Qué leer en el output de kmeans():

  • Cluster sizes — tamaño de cada grupo. Un cluster con 3 observaciones de 5,000 no es accionable.
  • Cluster means — los centroides: valor promedio de cada variable por cluster. Aquí está la clave para perfilar.
  • Within cluster sum of squares — compactación de cada grupo.

##==: Paso 7 — Agregar clusters al dataset original


1.7 Paso 8 — Visualizar los clusters

Advertencia

Este gráfico muestra solo dos de las cuatro variables usadas en el clustering. Puede haber superposición aparente entre clusters que en realidad están separados en las otras dimensiones.


1.8 Paso 9 — Perfilar los clusters

El perfilamiento es el paso más importante: ¿qué caracteriza a cada grupo y en qué se diferencia de los demás?

¿Cómo leer la tabla de perfilamiento?

Compara las columnas fila por fila. Busca los contrastes más nítidos: ¿qué cluster tiene la energy_prom más alta?, ¿cuál tiene acousticness_prom cerca de 1?, ¿cuál combina alto danceability con alto tempo? Los nombres de negocio emergen de esos contrastes.


1.9 Paso 10 — De números a nombres de negocio

Actividad en clase

Con los datos del Paso 9, completa esta tabla para cada cluster:

Cluster Característica principal Nombre de lista sugerido Momento de uso
1
2
3
4

Criterio de calidad: un buen nombre es específico y accionable (“Tarde acústica de trabajo”, “Cardio intenso”). Un mal nombre es genérico (“Grupo A”, “Música tranquila”).


1.10 Checklist

Al finalizar esta práctica, debes poder:

1.11 Preguntas de comprensión

1. Al ejecutar el codo obtienes: k=1→8500, k=2→5200, k=3→3800, k=4→3100, k=5→2900, k=6→2800. ¿Qué k recomendarías y por qué?

Ver respuesta k=3 o k=4. La caída más fuerte ocurre de k=1 a k=3 (−4700). De k=4 en adelante la mejora es marginal (~200 por paso). El codo está en k=3 o k=4; la decisión final depende de si los clusters tienen sentido de negocio.

2. El Cluster 2 tiene energy_prom = 0.87, danceability_prom = 0.82, acousticness_prom = 0.04, tempo_prom = 148. ¿Qué nombre propondrías y para qué momento?

Ver respuesta Alta energía, muy bailable, casi no acústico (electrónico), ritmo rápido (148 BPM). Nombre: “Cardio máximo”, “Pre-partido” o similar. Momento: ejercicio intenso, fiesta. Debe justificarse cada dimensión del perfil.

3. Un compañero dice que no hay que escalar porque “así los datos reflejan la realidad”. ¿Cómo le responderías?

Ver respuesta Sin escalar, tempo (rango 40–220) domina completamente a danceability (rango 0–1). El algoritmo agrupará por tempo e ignorará las demás variables. Escalar no distorsiona los datos: los pone en escala comparable para que todas las variables tengan igual peso en el cálculo de distancias.