Clase 8: Árboles de decisión y Random Forest
Eje II: Aprendizaje supervisado
Objetivo
Presentar los árboles de decisión y el Random Forest: la primera familia de modelos del curso que no traza una raya sino que hace preguntas, y por eso resuelve problemas que una recta no puede. La clase está armada desde la intuición, no desde el algoritmo: la idea es entender qué hace cada pieza lo suficiente como para leer un árbol, elegir sus dos perillas y saber qué número se puede reportar.
Antes de eso, la clase cierra un tema que quedó abierto: cómo se mide un modelo cuando el resultado depende de qué partición nos tocó. Ahí entra la validación cruzada, que se usa de acá en adelante en todo el curso.
Ésta es la última clase de aprendizaje supervisado. Desde la Clase 9 no hay más columna de respuesta, así que nada de lo que se mide hoy se puede medir de la misma forma.
Contenidos
- Repaso del recorrido supervisado: la línea de base, las métricas de la Clase 6 y el sobreajuste como el problema que ordena todo lo demás.
- Validación cruzada desde cero: por qué un acierto de una sola partición es una tirada y no un resultado, cómo rotan los k grupos, en cuántos conviene partir, y cuándo los grupos tienen que armarse por persona y no al azar.
- Un problema donde una recta no alcanza, y tres cortes sí.
- Árboles de clasificación: cómo se elige cada corte, la impureza de Gini, el corte raíz buscado variable por variable, y cómo se lee el diagrama resultante.
- Poda:
max_depthymin_samples_leaf, las dos perillas, y qué le pasa al árbol con cada una. - Importancia de variables, y la advertencia que la acompaña: es señal, no causa.
- Los mismos árboles para predecir un número: árboles de regresión.
- Random Forest: bootstrap, bagging, la votación, por qué hay que sortear variables en cada corte, y en qué problemas le gana de verdad a un árbol solo (en Nimbus, un punto; con la señal repartida en muchas variables, quince).
- Ajuste de hiperparámetros sin hacer trampa: grid search, búsqueda aleatoria y validación cruzada anidada. Y la misma maquinaria como testeo entre modelos: cuál de los que vimos en la materia gana en estos datos.
La clase vuelve a la pregunta de quién renuncia, ahora con cinco predictores: tres de comportamiento (minutos_camara_weekly, weeklys_perdidas, faltas_mes) y dos de condiciones (salario_mensual, antiguedad_anios), que salen de unir tres tablas.
Notebooks
La notebook es la parte de la clase que se hace con las manos, sobre los mismos datos y con los mismos números que las diapositivas. Se entrena un árbol sin ponerle ningún freno y acierta el 100%, que es la señal de alarma; se mira su diagrama, que no se puede leer; se lo mide con validación cruzada y el número cae; se poda, mejora, y el árbol podado se puede leer; y se corre un random forest y se mira qué variables usó. Al final hay dos bonus: la búsqueda de hiperparámetros (grid search, random search y validación cruzada anidada) y los árboles de regresión.
| Lenguaje | Leer en el sitio | Ejecutar en Colab | Descargar |
|---|---|---|---|
| Python | Notebook renderizada | .ipynb |
La versión en R de esta clase todavía no está publicada.
Los datos
Los tres archivos se leen por URL desde la notebook, sin bajar nada. La notebook los une en una sola tabla de 600 filas.
| Archivo | Contenido | URL |
|---|---|---|
nimbus_rrhh.csv |
la columna a predecir (renuncia) y las tres variables de comportamiento |
/data/toy-nimbus/nimbus_rrhh.csv |
nimbus_empleados.csv |
antigüedad y datos de legajo | /data/toy-nimbus/nimbus_empleados.csv |
nimbus_salario.csv |
salario mensual y edad, 2023-2025 | /data/toy-nimbus/nimbus_salario.csv |
Slides
Pre-entrega del TP grupal
La pre-entrega vale el 20% de la nota. Es un documento que reúne y formaliza lo construido en los hitos anteriores; como llega apenas terminaron de definir el algoritmo y las variables, tanto el modelo como la pregunta pueden ser todavía tentativos.
Las secciones que tiene que tener son: título e integrantes, introducción / background, objetivos, métodos (formalización de la base, muestra y población, y técnicas empleadas: procesamiento, algoritmo, esquema de validación y métricas), resultados (EDA breve más un primer corrido tentativo del algoritmo) y conclusiones / discusión.
Dos cosas de esta clase entran directo ahí: el esquema de validación de la sección de métodos (cuántos grupos, y si hace falta agruparlos por persona) y la regla de que el número que se reporta tiene que salir de datos que no se usaron para decidir nada.
Lo que viene
Desde la Clase 9 empieza el aprendizaje no supervisado: ya no hay una columna de respuesta contra la cual medir, así que la pregunta deja de ser “cuánto acierto” y pasa a ser “qué estructura hay acá adentro”.
Lecturas
Obligatoria:
- James, G., Witten, D., Hastie, T., Tibshirani, R. & Taylor, J. (2023). An Introduction to Statistical Learning with Applications in Python (ISLP), capítulo 8, secciones 8.1 y 8.2. PDF gratuito oficial en https://www.statlearning.com/. Los ejercicios 8 y 9 de la sección 8.4 recorren lo mismo que la notebook, sobre otros datasets.
Recursos de consulta:
- Documentación de
DecisionTreeClassifiery deRandomForestClassifieren scikit-learn, que es lo que usa la notebook. - Hastie, T., Tibshirani, R. & Friedman, J. (2009). The Elements of Statistical Learning, capítulo 15 (Random Forests), para quien quiera el tratamiento formal. PDF gratuito en https://hastie.su.domains/ElemStatLearn/.