Programa de Prácticas en Ingeniería de ML

Bloque 5: Aprendizaje No Supervisado y Reducción de Dimensionalidad

Los métodos no supervisados identifican estructura en los datos sin utilizar la variable objetivo. En un proyecto de ingeniería tienen dos usos:

Tres restricciones condicionan su uso:

  1. PCA y K-Means aprenden parámetros de los datos (componentes y centroides). Están sujetos a las mismas reglas de prevención de fugas que el preprocesado y deben ajustarse dentro del Pipeline.
  2. Ambos métodos son sensibles a la escala de las variables. La estandarización previa es obligatoria.
  3. Su aportación al rendimiento predictivo no está garantizada. Debe demostrarse empíricamente con el protocolo de validación cruzada del Bloque 4. Un resultado negativo, correctamente medido, es un resultado válido.

Prerrequisitos

Material de Referencia

  1. Reducción de dimensionalidad y clustering: Consulte los capítulos dedicados a PCA y a K-Means del Python Data Science Handbook. El material desarrolla la proyección sobre los vectores propios de la matriz de covarianza y el algoritmo de minimización de la varianza intra-clúster.

Actividad Práctica

  1. Cree la rama feat/b05-no-supervisado desde main actualizada.
  2. Realice el análisis exploratorio en el cuaderno B05_Aprendizaje_No_Supervisado/exploracion.ipynb, utilizando exclusivamente X_train (misma partición del Bloque 2) y sus variables numéricas continuas, imputadas y estandarizadas con los transformadores del Bloque 4 ajustados sobre X_train.
  3. PCA:
    • Genere la curva de varianza explicada acumulada y determine el número mínimo de componentes que explica al menos el 90 % de la varianza.
    • Interprete las cargas de las dos primeras componentes: qué variables originales las dominan.
    • Genere la proyección de las observaciones sobre las dos primeras componentes, coloreada según la variable objetivo.
  4. K-Means:
    • Evalúe valores de k entre 2 y 10 mediante la inercia (método del codo) y el coeficiente de silueta, con random_state=42 y un valor explícito de n_init.
    • Seleccione k y justifique la elección.
    • Caracterice cada clúster mediante los valores medios de las variables originales.
  5. Implemente el script B05_Aprendizaje_No_Supervisado/pipeline_latente.py, ejecutable con uv run python -m B05_Aprendizaje_No_Supervisado.pipeline_latente, que construya tres configuraciones:
    • A (referencia): el Pipeline final del Bloque 4.
    • B (ampliada): en la rama numérica del ColumnTransformer, tras la imputación y el escalado, un FeatureUnion que concatene las variables originales (FunctionTransformer()), PCA(n_components=0.90) y KMeans(n_clusters=k). El método transform de KMeans devuelve la distancia de cada observación a cada centroide, que se utiliza como variable.
    • C (reducida): en la rama numérica, las variables originales se sustituyen por PCA(n_components=0.90).
  6. Evalúe las tres configuraciones con la misma estrategia de validación cruzada, los mismos pliegues y la misma métrica del Bloque 4.
  7. Seleccione la configuración final: una configuración B o C solo sustituye a la A si su mejora supera la desviación típica entre pliegues. En caso contrario, se mantiene la configuración A.
  8. Evalúe la configuración seleccionada una única vez sobre X_test.
  9. Publique la rama y abra un Pull Request hacia main.

Contenido Obligatorio del Pull Request

Criterios de Aceptación

Transición al Bloque 6

Este bloque cierra la formación metodológica común: entorno reproducible, datos procesados de forma vectorizada, evaluación orientada al negocio y Pipelines libres de fugas. El Bloque 6 aplica esta metodología a un dominio técnico concreto.