Módulo 5 · Sesiones 12–13 · 7 h

No supervisado y deep learning

5 lecciones 6 notebooks3 ejerciciosAutoevaluaciónQuiz
Ruta del módulo 0%
  1. 01 Clustering: K-Means, jerárquico y DBSCAN ◈S12
  2. 02 Validar un clustering: cuántos grupos, y si existen S12
  3. 03 Reducción de dimensionalidad: PCA, t-SNE y UMAP ◈S12
  4. 04 Redes neuronales: perceptrón, MLP y retropropagación ◈S13
  5. 05 Entrenar una red, y cuándo no hace falta S13
NotebooksÁbrelos en Colab sin instalar nada —ejecuta la primera celda, que carga los datos del curso— o descárgalos para el entorno local.
  • 01

    Clustering desde cero: K-Means, jerárquico y DBSCAN

    S12

    intuición | K-Means (Lloyd) a mano y validado; inicialización y K-Means++ medidos; los supuestos de K-Means en datos que los violan; jerárquico y DBSCAN a mano validados contra SciPy y scikit-learn; codo y silueta a mano, y su trampa sobre datos sin grupos

  • 02

    Segmentar Wine Quality sin etiquetas

    S12

    aplicado | Wine Quality sin etiquetas: estandarizar, tres criterios y referencia nula, perfil e interpretación, validación contra tipo y quality, segundo nivel (dulces/secos), Ward y los otros *linkages*, DBSCAN e 🔵 Isolation Forest como detectores de anomalías, estabilidad

  • 03

    PCA desde cero: varianza, autovectores y lo que se pierde

    S12

    intuición | PCA por autovectores y por SVD, validado; estandarizar; scree, cargas y biplot sobre Wine; compresión de dígitos; cuando no aporta (estudiantes) y cuando daña (la clase en la dirección de poca varianza; la calidad del vino)

  • 04

    t-SNE y UMAP: ver en dos dimensiones sin engañarse

    S12

    aplicado | PCA, t-SNE y 🔵 UMAP sobre los dígitos con *trustworthiness*, KNN y silueta; perplejidad e inicialización; lo que t-SNE no conserva, medido; grupos inventados; transform de UMAP; Wine en el mapa

  • 05

    Redes neuronales desde cero: perceptrón, MLP y retropropagación

    S13

    intuición | Perceptrón y su límite; MLP en NumPy con retropropagación verificada por diferencias finitas y contra autograd; fronteras según la anchura; activaciones y desvanecimiento del gradiente medido en 10 capas; aproximación universal y sobreajuste

  • 06

    MLP en PyTorch sobre datos tabulares, frente a los ensambles del módulo 4

    S13

    aplicado | Anatomía del entrenamiento en PyTorch; optimizadores y regularización medidos; comparación pareada MLP vs. logística / Extra-Trees / LightGBM sobre Wine y sobre Adult; 🔵 CNN sobre dígitos y robustez al desplazamiento; conjunto de prueba

Visualizadores Interactivos del módulo; cada uno vive dentro de su lección.

Estado: completo (Fase 5 de ../PLAN.md).

Objetivos

Al finalizar el módulo, el estudiante será capaz de descubrir estructura en datos sin etiquetas mediante clustering y reducción de dimensionalidad, comprobar que esa estructura existe antes de interpretarla, y comprender los fundamentos de una red neuronal —arquitectura, retropropagación y entrenamiento— con un criterio medido para decidir cuándo un problema tabular no necesita deep learning.

Contenidos

✅ Núcleo

  • S12 — Clustering particional: K-Means y K-Means++; sus supuestos (grupos convexos, esféricos, de tamaño parecido) y sus modos de fallo. Clustering jerárquico aglomerativo, linkages y dendrograma. Clustering por densidad: DBSCAN.
  • S12 — Validación de clusters: método del codo, coeficiente de silueta, índice de Davies-Bouldin; referencia nula y estabilidad para saber si hay grupos; ARI y NMI para validar contra etiquetas externas; interpretación en unidades originales.
  • S12 — Reducción de dimensionalidad: PCA desde la covarianza y la SVD (varianza explicada, cargas, scree plot, reconstrucción), cuándo no aporta y cuándo daña; t-SNE: qué conserva (vecindarios) y qué no (tamaños, distancias, existencia de grupos).
  • S13 — Perceptrón y perceptrón multicapa (MLP). Funciones de activación y desvanecimiento del gradiente.
  • S13 — Retropropagación: la regla de la cadena de S3 aplicada a una red, verificada contra diferencias finitas y contra el autograd de PyTorch.
  • S13 — Entrenamiento en PyTorch: optimizadores (SGD, momento, Adam), mini-batches, early stopping, weight decay, dropout.
  • S13 — Cuándo no usar deep learning: comparación pareada contra los ensambles de S10–S11 sobre Wine Quality y Adult Census.

🔵 Opcional

  • UMAP como alternativa a t-SNE con transform (notebook 04).
  • Detección de anomalías: DBSCAN como filtro de ruido e Isolation Forest (notebook 02).
  • Vistazo a redes convolucionales sobre los dígitos y por qué ganan en imágenes (notebook 06); transfer learning (teoría 05).

Materiales

Teoría

#DocumentoSesiónTema
01teoria/01-clustering.mdS12Aprender sin yy; K-Means (Lloyd, K-Means++, supuestos, preprocesamiento); jerárquico y linkages; DBSCAN; cuál usar
02teoria/02-validacion-clusters.mdS12Codo, silueta, Davies-Bouldin; referencia nula y estabilidad; ARI/NMI; interpretación; protocolo
03teoria/03-reduccion-dimensionalidad.mdS12PCA (derivación, SVD, reconstrucción, estandarizar, cuántos componentes, cargas, cuándo daña); t-SNE; 🔵 UMAP
04teoria/04-redes-neuronales.mdS13Perceptrón, MLP, activaciones e inicialización, retropropagación, aproximación universal y lo que no dice
05teoria/05-entrenamiento-y-limites.mdS13Bucle en PyTorch, optimizadores, tasa de aprendizaje, regularización, la fuga del early stopping, cuándo no usar DL, dónde sí

Notebooks

#NotebookSesiónTipoContenido
01notebooks/01-clustering-intuicion.ipynbS12intuiciónK-Means (Lloyd) a mano y validado; inicialización y K-Means++ medidos; los supuestos de K-Means en datos que los violan; jerárquico y DBSCAN a mano validados contra SciPy y scikit-learn; codo y silueta a mano, y su trampa sobre datos sin grupos
02notebooks/02-clustering-aplicado.ipynbS12aplicadoWine Quality sin etiquetas: estandarizar, tres criterios y referencia nula, perfil e interpretación, validación contra tipo y quality, segundo nivel (dulces/secos), Ward y los otros linkages, DBSCAN e 🔵 Isolation Forest como detectores de anomalías, estabilidad
03notebooks/03-pca-intuicion.ipynbS12intuiciónPCA por autovectores y por SVD, validado; estandarizar; scree, cargas y biplot sobre Wine; compresión de dígitos; cuando no aporta (estudiantes) y cuando daña (la clase en la dirección de poca varianza; la calidad del vino)
04notebooks/04-reduccion-dimensionalidad-aplicado.ipynbS12aplicadoPCA, t-SNE y 🔵 UMAP sobre los dígitos con trustworthiness, KNN y silueta; perplejidad e inicialización; lo que t-SNE no conserva, medido; grupos inventados; transform de UMAP; Wine en el mapa
05notebooks/05-mlp-intuicion.ipynbS13intuiciónPerceptrón y su límite; MLP en NumPy con retropropagación verificada por diferencias finitas y contra autograd; fronteras según la anchura; activaciones y desvanecimiento del gradiente medido en 10 capas; aproximación universal y sobreajuste
06notebooks/06-mlp-pytorch-aplicado.ipynbS13aplicadoAnatomía del entrenamiento en PyTorch; optimizadores y regularización medidos; comparación pareada MLP vs. logística / Extra-Trees / LightGBM sobre Wine y sobre Adult; 🔵 CNN sobre dígitos y robustez al desplazamiento; conjunto de prueba

Hallazgo del notebook 01. Codo y silueta proponen un kk igual de convencidos cuando hay cuatro grupos (silueta 0.77) que cuando no hay ninguno: sobre puntos uniformes, la silueta de K-Means tiene su máximo en k=4k = 4 con valor 0.41. Los criterios internos comparan particiones; no comprueban que exista algo que particionar.

Hallazgo del notebook 02. K-Means con k=2k = 2 recupera tinto/blanco con ARI 0.93 sin haber visto tipo, y con ningún kk los grupos dicen nada de la calidad (NMI ≤0.07\leq 0.07): el clustering encuentra la estructura dominante, no la que interesa. La referencia nula (columnas permutadas: silueta 0.10 frente a 0.27) confirma que la estructura es real y la escala de Kaufman y Rousseeuw, que es débil. Average, complete y single cortan un solo vino atípico; y DBSCAN en 11 dimensiones no separa grupos completos (distancias concentradas), pero señala 191 vinos con alguna variable extrema — y coincide solo en un tercio con Isolation Forest: “anomalía” no tiene una definición única.

Hallazgo del notebook 03. PCA no ve yy: en un ejemplo construido, PC1 (91 % de la varianza) da accuracy 0.47 y PC2 (9 %) da 0.93. En Wine Quality, con los 11 componentes la AP de la logística es idéntica a la del modelo sin PCA (una rotación), y quitar componentes la baja de 0.52 a 0.40. Y sobre rendimiento-estudiantes.csv, cuyos predictores son independientes por construcción, el scree es plano: no hay nada que comprimir.

Hallazgo del notebook 04. t-SNE conserva los vecindarios (trustworthiness 0.99; un KNN sobre dos coordenadas clasifica dígitos con 0.97) y nada más: un grupo 5× más disperso aparece del mismo tamaño, uno 3× más lejano a la misma distancia, y una sola gaussiana en 10D produce un mapa con grumos cuya silueta (0.35–0.38) cuadruplica la de los datos (0.08). Clusterizar el mapa funciona cuando los grupos existen (dígitos: ARI 0.89 frente a 0.67 en 64D) y engaña cuando no.

Hallazgo del notebook 05. El gradiente a mano coincide con diferencias finitas y con el autograd de PyTorch a 10−1010^{-10}. En 10 capas con sigmoide, la primera recibe un gradiente 10610^6 veces menor que la última; con tanh y ReLU bien inicializadas, del mismo orden. Y un resultado que contradice la intuición de la S8: sobre 60 puntos del seno, la red de 100 neuronas ajusta la función verdadera mejor que la de 10 (ECM 0.011 frente a 0.079); el sobreajuste aparece con pocos datos y muchas épocas (lunas: la validación sube de 0.22 a 0.29), no automáticamente con el ancho.

Hallazgo del notebook 06. Sobre Wine Quality, el MLP gana a la logística (+0.023 de AP), empata con LightGBM por defecto y pierde con Extra-Trees (−0.046 ± 0.004, cociente 10) costando 6× más; sobre Adult Census, con 10× más datos, LightGBM 0.83 frente a MLP 0.78 (−0.047 ± 0.001) a una décima del tiempo. Hacer el early stopping sobre el fold evaluado infla la AP 0.017 en Wine y 0.004 en Adult. Sobre los dígitos, la CNN es la mejor y la única que resiste un desplazamiento de un píxel (0.62 frente a 0.42–0.51): gana el modelo cuyo sesgo inductivo encaja con la estructura de los datos.

Datos

Dataset conductor del módulo: wine-quality.csv (S12 y S13) · Secundarios: digits de scikit-learn (S12, 🔵 S13), adult-census.csv (S13), rendimiento-estudiantes.csv (S12)

ArchivoDescripciónPor qué este
datos/wine-quality.csvLos mismos 6497 vinos del módulo 4 (5320 sin duplicados), 11 medidas fisicoquímicas, tipo y quality. Cortez et al. (2009), UCI, CC BY 4.0Sus 11 variables sí están correlacionadas (PCA tiene sentido); tipo es una etiqueta natural para validar clusters a posteriori; y la comparación MLP vs. ensambles se hace sobre números ya establecidos en el módulo 4 (AP 0.52 / 0.57 / 0.59)
datos/preparar-wine-quality.pyDescarga y une los dos CSV de UCI (copiado del módulo 4)Idempotente; documenta la procedencia
digits (sklearn.datasets.load_digits, sin archivo)1797 imágenes de 8 × 8 de dígitos manuscritos (64 píxeles, 0–16), 10 clasesUn caso con estructura de variedad (t-SNE luce), correlación entre variables (PCA comprime) e imágenes (la CNN tiene sentido), sin descarga
datos/adult-census.csv (no versionado, ~5 MB)48 842 personas, 14 variables, ingreso_alto; el dataset de los ejercicios del módulo 4La comparación MLP vs. LightGBM con 10× más datos y categóricas de alta cardinalidad, sobre la AP 0.83 ya conocida
datos/descargar-adult-census.pyDescarga y prepara Adult (copiado del módulo 4)Se ejecuta una vez: uv run datos/descargar-adult-census.py
datos/rendimiento-estudiantes.csvDataset sintético de los módulos 1, 3 y 4 (400 estudiantes)Predictores independientes por construcción: el caso en que PCA no aporta (notebook 03) y en que un MLP no puede ganar a un modelo lineal (ejercicio 03)
datos/generar-rendimiento-estudiantes.pyGenerador con semilla fijaReproducible byte a byte

Ejercicios

#EnunciadoSoluciónSesiónDuración
01ejercicios/ej01-clustering.mdej01-clustering-sol.mdS1275 min
02ejercicios/ej02-pca-tsne.mdej02-pca-tsne-sol.mdS1260 min
03ejercicios/ej03-mlp.mdej03-mlp-sol.mdS1375 min

Los tres ejercicios usan datos que los notebooks no analizaron: el 01 repite el flujo completo de clustering sobre los 1359 tintos y encuentra una estructura real pero muy débil (silueta 0.205 frente a 0.09 de la referencia nula, solo k=2k = 2 estable, Ward no coincide con K-Means) que correlaciona con la calidad sin predecirla; el 02 valida PCA con la métrica de un KNN sobre los dígitos (20 componentes de 64 bastan), mide qué recupera K-Means sin etiquetas (el 8 no tiene grupo propio; el 1 tiene tres) y comprueba que los subgrupos que t-SNE dibuja entre los “1” existen en los 64 píxeles (tres formas de escribirlo); el 03 extiende la retropropagación a dos capas ocultas, mide que un MLP pierde contra la regresión lineal sobre un proceso generador lineal (+0.015 ± 0.005 de RMSE), y que en Adult una red más grande no acorta la distancia con LightGBM (−0.049 ± 0.001).

Quiz

ArchivoClavePreguntasDuración
quiz/quiz-modulo-5.mdquiz-modulo-5-sol.md1030 min

Entrega del proyecto integrador

E5 — Exploración no supervisada. Segmentación del caso con validación honesta —tres criterios, referencia nula, estabilidad, perfil en unidades originales— y qué aporta (o no) al problema original; o, como variante, un MLP comparado de forma pareada contra el mejor ensamble de E4, con el early stopping sobre datos apartados del entrenamiento. Ver ../proyecto-integrador/.


Nota sobre el alcance de S13. Esta sesión es un puente hacia el curso especializado de Deep Learning del programa. Da el fundamento (arquitectura, retropropagación, entrenamiento) y el criterio para decidir cuándo usarlo, no una cobertura completa del área.

Los notebooks se ejecutan de principio a fin con el entorno de ../pyproject.toml. Reglas de estilo en ../docs/convenciones.md.