Clase 4: Introducción al aprendizaje supervisado
Eje II: Aprendizaje supervisado
Objetivo
Introducir los conceptos fundamentales del aprendizaje supervisado: qué distingue una pregunta de predicción de una de explicación, cómo se mide si un modelo predice bien, y por qué el acierto sobre los datos con los que se construyó el modelo no sirve para elegirlo.
Contenidos
- Machine learning frente al aprendizaje por reglas: las familias supervisada, no supervisada y por refuerzo.
- Tipos de problema: con etiqueta o sin etiqueta, y respuesta numérica (regresión) o categórica (clasificación).
- Explicar o predecir: dos objetivos distintos sobre la misma tabla, y por qué piden modelos distintos.
- KNN (K vecinos más cercanos) como primer método: distancia euclídea, la importancia de estandarizar, y K como única decisión.
- Partición train/test: por qué se aparta un conjunto antes de entrenar y no se toca hasta el final.
- Sobreajuste: acertar mucho en entrenamiento y poco en testeo, y la curva de acierto en testeo con máximo en un K intermedio.
- Validación cruzada (k-fold) y el conjunto de validación: elegir K sin gastar el testeo.
La clase sigue con Nimbus, la empresa de las clases anteriores, pero con una tabla nueva: Recursos Humanos registró quién renunció en el último año, junto con tres señales de comportamiento (faltas, weeklys perdidas, minutos con la cámara prendida).
Eso convierte a Nimbus en un problema supervisado, porque ahora hay una columna de respuestas. La pregunta pasa de “¿qué se ve acá?” a “¿qué le va a pasar a alguien que todavía no vimos?”.
La clase arranca haciendo el merge de las tablas, que es exactamente lo que enseñó la Clase 2.
Notebooks
La notebook se recorre en clase de principio a fin. Hace el merge de las tablas de Nimbus, parte los datos en entrenamiento y testeo, corre KNN con distintos valores de K y compara el acierto en cada conjunto.
| Lenguaje | Leer en el sitio | Ejecutar en Colab | Descargar |
|---|---|---|---|
| Python | Notebook renderizada | .ipynb |
A diferencia de las clases anteriores, esta clase no tiene par en R: el recorrido está sólo en Python. Quien quiera reproducirlo en R puede hacerlo con class::knn() o con el paquete caret, pero la versión de referencia de la materia es la de Python.
Los datos
Los tres archivos se leen por URL desde la notebook, sin bajar nada.
| Archivo | Contenido | URL |
|---|---|---|
nimbus_empleados.csv |
600 empleados: sede, área, género, educación, antigüedad, grupo | /data/toy-nimbus/nimbus_empleados.csv |
nimbus_salario.csv |
salario mensual y edad, 2023-2025 | /data/toy-nimbus/nimbus_salario.csv |
nimbus_rrhh.csv |
tabla nueva de esta clase: renuncia (Sí/No) y tres señales de comportamiento | /data/toy-nimbus/nimbus_rrhh.csv |
Slides
La práctica de hoy
La segunda parte de la clase vuelve al dataset que cada grupo eligió en la Clase 3. Hoy no hay que escribir código: el trabajo es plantear preguntas de machine learning y reconocer sus partes.
- Clase 2: el dataset elegido.
- Clase 3: la exploración y las visualizaciones: qué variables hay, cómo se distribuyen, qué se relaciona con qué.
1. Vuelvan a lo que encontraron explorando y elijan dos o tres cosas que les hayan llamado la atención.
2. Conviertan cada una en una pregunta de aprendizaje supervisado. Tiene que ser sobre casos nuevos: no «qué pasó», sino «qué va a pasar con alguien que todavía no vimos».
3. Para cada pregunta, escriban las tres respuestas:
- ¿cuál es la variable respuesta (el target)?
- ¿cuáles son las variables predictoras (las features)?
- ¿esa respuesta es un número o una categoría?
- el insight: los que más faltan son los que menos prenden la cámara
- la pregunta: ¿podemos anticipar quién va a renunciar?
- el target:
renuncia, que es una categoría, así que es clasificación - las features: faltas, weeklys perdidas, minutos de cámara
Tienen que estar disponibles antes de que ocurra lo que quieren predecir. Si para predecir la renuncia usan una variable que se registra el día que la persona renuncia, el modelo va a andar bárbaro y no va a servir para nada.
No hay que entregar nada. El resultado del trabajo de hoy son las preguntas escritas, con sus partes identificadas. Van a ser el punto de partida de las próximas clases.
Lecturas
Obligatoria:
- James, G., Witten, D., Hastie, T., Tibshirani, R. & Taylor, J. (2023). An Introduction to Statistical Learning with Applications in Python (capítulos 2 y 5). Springer. Disponible completo en https://www.statlearning.com/. El capítulo 2 da el marco de la clase: aprendizaje supervisado y no supervisado, regresión y clasificación, KNN, y la curva de error de entrenamiento contra error de testeo. El capítulo 5 es partición y validación cruzada.
Complementaria:
- James, G., Witten, D., Hastie, T. & Tibshirani, R. (2021). An Introduction to Statistical Learning with Applications in R (2.ª ed., capítulos 2 y 5). Springer. El mismo libro en R, para quien prefiera ese camino.
Recursos de consulta:
- Documentación de
KNeighborsClassifiery la guía de scikit-learn sobre vecinos más cercanos. - MLU-Explain: Train, Test and Validation Sets: una explicación visual e interactiva de la partición y del conjunto de validación, que es exactamente la segunda mitad de la clase.