lección 4
Árboles de decisión: el modelo que se puede dibujar
El único modelo que puedes dibujar y leer como una cadena de preguntas de sí o no, y ver con tus ojos cómo se aprende los datos de memoria.
⏱ 50 min
Hay una pregunta que acaba apareciendo en casi todos los proyectos, y suele llegar de alguien que no programa: "vale, el modelo dice que a este cliente le negamos el crédito, pero ¿por qué?". Con la mayoría de los modelos esa pregunta no tiene buena respuesta, porque por dentro son una maraña de números que ni quien los entrenó sabe traducir a palabras. Con un modelo, en cambio, la respuesta es trivial: le enseñas el dibujo. Porque ese modelo no es una maraña, es una cadena de preguntas de sí o no, como un cuestionario, y se puede leer de arriba abajo con el dedo. Ese modelo es el árbol de decisión, y por esa transparencia merece una lección propia justo al principio del camino.
Acabas de entrenar tu primer modelo, y resulta que ya era un árbol de decisión, aunque no lo abriéramos. Ahora toca abrirlo. Vas a entender cómo parte el espacio de los casos a base de cortes, por qué puedes dibujarlo y leerlo como nadie puede leer otros modelos, y qué significa el mando que controla cuánto crece. Y con ese mando en la mano vas a ver, con tus propios ojos y en una tabla de números, algo que de momento solo te he pedido que sospeches: cómo un modelo, si le dejas crecer sin freno, deja de aprender la regla y empieza a aprenderse los casos uno a uno, de memoria.
## Un cuestionario que separa los casos
La idea de un árbol de decisión es la de un cuestionario que vas respondiendo hasta llegar a una conclusión, como esos tests de revistas que te preguntan cosas y al final te dicen a qué grupo perteneces. El árbol empieza con una pregunta sobre una de las entradas: por ejemplo, "¿este cliente usa el servicio menos de cinco horas a la semana?". Según la respuesta, sí o no, bajas por una rama o por la otra. En cada rama puede haber otra pregunta ("¿tiene más de cuarenta y cinco años?"), y así vas descendiendo hasta llegar al final de una rama, donde ya no hay más preguntas: ahí está la respuesta, la etiqueta que el árbol predice para quien haya llegado hasta ese punto.
A cada punto donde el árbol hace una pregunta se le llama nodo, y a cada final de rama, donde está la respuesta, se le llama hoja, siguiendo la metáfora del árbol (aunque, curiosamente, estos árboles se dibujan casi siempre con la raíz arriba y las hojas abajo, al revés que los de verdad). Predecir con el árbol es, literalmente, empezar en el nodo de arriba, ir respondiendo cada pregunta con los datos del caso, bajar por las ramas correspondientes, y leer la etiqueta de la hoja a la que llegas. No hay ninguna cuenta rara, ningún número oculto: es seguir un camino de preguntas. Por eso un árbol se le puede enseñar a alguien de negocio y lo entiende sin saber nada de modelos: es un diagrama de "si esto, entonces lo otro".
## Cómo decide el árbol dónde cortar
Si predecir es seguir el cuestionario, aprender es construir el cuestionario: decidir qué preguntas hacer, en qué orden y con qué valores de corte. Y aquí es donde el árbol hace algo elegante. Para cada pregunta posible, el árbol busca el corte que mejor separa los casos de una etiqueta de los de la otra. Imagina los clientes repartidos según sus horas de uso: el árbol prueba cortar en tres horas, en cinco, en diez, y se queda con el corte que deja a un lado sobre todo gente que se queda y al otro sobre todo gente que se va. Un corte que deja los dos lados mezclados por igual no sirve de nada; un corte que separa limpiamente es oro. El árbol elige, en cada paso, el corte más limpio que encuentra.
Después repite el proceso dentro de cada rama, por separado. En la rama de "menos de cinco horas", vuelve a buscar el mejor corte entre los clientes que han caído ahí, que puede ser por una variable distinta (la edad, por ejemplo). Y así va partiendo el espacio de los casos en trozos cada vez más pequeños, cada uno más puro que el anterior, es decir, con casos cada vez más parecidos entre sí en su etiqueta. Visto geométricamente, el árbol trocea el espacio de los datos en rectángulos, y a cada rectángulo le asigna la etiqueta que domina dentro de él. Esa es toda la mecánica: cortes que separan, repetidos dentro de cada trozo.
Una consecuencia bonita de esta forma de aprender es que el árbol elige solo qué variables importan y en qué orden, sin que nadie se lo diga. Si una de tus entradas no ayuda nada a separar los casos, el árbol simplemente no la usa: nunca encuentra un buen corte con ella, así que no aparece en ninguna pregunta. Y la variable que mejor separa acaba arriba del todo, como primera pregunta, porque es la que da el corte más limpio desde el principio. Eso significa que la propia forma del árbol te está contando qué variables mandan en tu problema: la de la raíz es la más decisiva, y las que ni aparecen son las que no aportaban. Leer un árbol es, de propina, leer qué importa y qué no en tus datos.
Que los cortes sean siempre rectos (horizontales o verticales, nunca en diagonal) es una limitación real del árbol que conviene conocer. Un árbol no puede trazar una frontera inclinada entre dos grupos; tiene que aproximarla con una escalera de cortes rectos. Para muchas relaciones eso basta y sobra, pero es la razón por la que, a veces, un árbol necesita muchas preguntas para separar algo que una recta inclinada separaría de un trazo. No es un defecto grave, pero explica por qué los árboles tienen esa forma de "escalera" cuando dibujas sus fronteras, y por qué otros modelos, que sí pueden trazar diagonales, a veces separan ciertos datos con menos esfuerzo.
## Ver el árbol en texto
La transparencia del árbol no es una promesa teórica: la herramienta te deja imprimir el cuestionario que ha aprendido, en texto, para que lo leas. Vamos a entrenar un árbol pequeño sobre clientes de un servicio de streaming (su edad y sus horas semanales de uso, para predecir si se dan de baja) y a pedirle que nos escriba sus preguntas. Fíjate, al leer la salida, en que cada sangría es un nivel más de profundidad, y en que al final de cada rama aparece la clase: la etiqueta que el árbol predice para quien llegue ahí (0 es "se queda", 1 es "se va").
1import numpy as np2import pandas as pd3from sklearn.tree import DecisionTreeClassifier, export_text45# Clientes de un servicio de streaming6rng = np.random.default_rng(7)7n = 3008edad = rng.uniform(18, 70, n)9horas = rng.uniform(0, 30, n) # horas de uso a la semana10score = (12 - horas) / 6 + (edad - 45) / 35 + rng.normal(0, 0.9, n)11se_fue = (score > 0.5).astype(int) # 1 = se dio de baja, 0 = se quedo12df = pd.DataFrame({"edad": edad, "horas": horas, "se_fue": se_fue})1314X = df[["edad", "horas"]].values15y = df["se_fue"].values1617# Un arbol poco profundo, para poder leerlo entero18arbol = DecisionTreeClassifier(max_depth=2, random_state=42)19arbol.fit(X, y)2021# Imprimir el cuestionario que ha aprendido22print(export_text(arbol, feature_names=["edad", "horas"]))
El árbol, impreso como el cuestionario de preguntas que es
Esa capacidad de imprimir el modelo y leerlo es lo que, en el oficio, se llama interpretabilidad: la posibilidad de entender por qué un modelo decide lo que decide. Y no es un lujo académico. Hay sitios donde la ley exige que puedas explicar una decisión automática: un banco que niega un crédito tiene que poder decir por qué, y "lo dijo el modelo" no es una explicación aceptable ante un regulador. En esos sitios, un modelo que acierta mucho pero no se puede explicar sirve de poco, y un árbol que acierta algo menos pero se puede enseñar y defender vale su peso en oro. La interpretabilidad del árbol es una de las razones por las que, décadas después de inventarse, sigue muy vivo en banca, en medicina y en cualquier terreno donde haya que rendir cuentas.
Los árboles de decisión no nacieron con la informática moderna: la idea de clasificar casos con una cadena de preguntas es muy anterior, y en estadística se formalizó ya en los años setenta y ochenta. Lo que explica su longevidad no es la potencia (hay modelos que aciertan bastante más) sino justo lo contrario: su humildad. Un árbol imita la forma en que una persona experta toma una decisión, preguntándose cosas en orden ("¿cuánto usa el servicio?, y si usa poco, ¿qué edad tiene?"), y por eso resulta tan natural de entender y de confiar. Durante décadas, cada vez que alguien ha intentado jubilar al árbol por anticuado, el árbol ha vuelto, porque sigue siendo imbatible en el terreno donde lo que importa no es solo acertar, sino poder explicar y defender la decisión ante una persona que no se fía.
## El mando de la complejidad: la profundidad
Hay un número que controla cuánto puede crecer un árbol, y es el que más vas a tocar: la profundidad máxima, cuántas preguntas encadenadas puede hacer como mucho antes de llegar a una hoja. Una profundidad de dos significa, a lo sumo, dos preguntas antes de responder; una profundidad de diez, hasta diez preguntas encadenadas. Es, literalmente, el mando que decide cómo de complejo puede ser el cuestionario. Y como todo mando de complejidad, tiene dos extremos malos y una zona buena en medio, y entenderlos es entender uno de los temas centrales de todo el aprendizaje automático.
Un árbol demasiado corto, con poca profundidad, es demasiado simple: hace tan pocas preguntas que no logra separar bien los casos, y se equivoca mucho porque mete en la misma hoja a gente muy distinta. Pero el extremo contrario es más interesante y más peligroso. Un árbol sin límite de profundidad seguirá haciendo preguntas hasta que cada hoja contenga un solo caso, o casos todos de la misma etiqueta. Y cuando llega a ese punto, acierta el cien por cien... sobre los datos de entrenamiento. Porque ha dejado de aprender una regla general y ha empezado a aprenderse los casos uno a uno, de memoria. Ha construido una pregunta tan específica para cada cliente del pasado que, en efecto, se los sabe todos. Pero no ha entendido nada que sirva para un cliente nuevo.
Esto que acabo de describir tiene nombre, lo vas a oír mil veces y es el gran enemigo del oficio: se llama sobreajuste, que en inglés es "overfitting". Es cuando un modelo se aprende de memoria los datos de entrenamiento, incluido su ruido y sus casualidades, en lugar de aprender la regla general que hay detrás. La analogía exacta es la del estudiante que se memoriza los exámenes de años anteriores pregunta por pregunta, en vez de entender la materia: borda el examen que ya ha visto y se estrella con el examen nuevo, porque las preguntas no son idénticas. Un árbol sin freno es ese estudiante. No voy a desarrollar aquí todo lo que hay que saber sobre el sobreajuste, porque es un tema enorme que tendrá su espacio; pero sí vas a verlo ocurrir, ahora mismo, en una tabla de números.
La trampa que vas a ver con tus ojos: cuando dejas crecer un árbol sin límite y mides su acierto sobre los datos de entrenamiento, sube hasta el cien por cien. Y es facilísimo tomar ese cien por cien como la prueba de que tienes un modelo perfecto, cuando es exactamente lo contrario: es la prueba de que el árbol se ha aprendido los datos de memoria y casi seguro fallará con casos nuevos. Un acierto del cien por cien en entrenamiento no es un trofeo, es una alarma. Que un modelo no se equivoque nunca con lo que ya vio significa, casi siempre, que ha dejado de generalizar.
Por eso la profundidad es un mando que se ajusta con cuidado, buscando esa zona intermedia donde el árbol es lo bastante complejo para separar los casos pero no tanto como para memorizarlos. Cómo se encuentra esa zona de forma rigurosa es, de nuevo, un tema que merece su propio espacio y lo tendrá. Lo que sí puedes hacer ya, y vas a hacer en los ejercicios, es mover el mando y ver el efecto: cómo el acierto en entrenamiento sube y sube según das más profundidad, hasta clavar el cien por cien cuando le quitas el freno del todo. Ver ese cien por cien aparecer, y entender por qué es una mala noticia y no una buena, es el objetivo de esta lección.
Consejo de senior: cuando empieces a usar árboles de verdad, ponle siempre un límite de profundidad desde el primer momento, aunque todavía no sepas cuál es el ideal. Un árbol con la profundidad limitada a tres o cuatro es casi siempre más útil que uno sin límite, por dos razones: generaliza mejor y, además, se puede leer entero. Un árbol de profundidad tres cabe en una pantalla y se lo puedes enseñar a quien tome la decisión; uno sin límite tiene miles de nodos y pierde justo lo que hacía especial al árbol, que era poder entenderlo. La transparencia también se pierde cuando dejas crecer el árbol sin freno.
## Lo que te llevas, y por qué era un buen primer modelo
El árbol de decisión es el modelo que se puede dibujar: una cadena de preguntas de sí o no que separa los casos a base de cortes rectos y asigna a cada trozo la etiqueta que domina. Su gran virtud es la interpretabilidad: puedes imprimirlo, leerlo y enseñárselo a cualquiera, lo que lo hace insustituible donde hay que explicar las decisiones. Tiene un mando, la profundidad, que controla su complejidad, y ese mando te ha servido para ver con tus propios ojos cómo un modelo sin freno se aprende los datos de memoria y clava el cien por cien en entrenamiento, que es la cara más clara del sobreajuste.
Era un buen primer modelo precisamente porque se deja ver por dentro: lo que en otros modelos es una maraña opaca, en el árbol es un cuestionario legible. Eso te ha dejado entender, de forma concreta y no abstracta, qué significa que un modelo aprenda y qué significa que memorice. Hasta ahora todos nuestros ejemplos tenían una etiqueta de categoría: se va o se queda, devuelve o no devuelve. Pero muchas veces lo que quieres predecir no es una categoría, sino un número: cuántos euros, cuántos días. Eso cambia el tipo de modelo y, sobre todo, cambia cómo se mide el acierto. A esa bifurcación entre predecir una categoría y predecir un número vamos ahora.
## comentarios
Reporta erratas, ayuda a otros o comparte tu opinión. Sé constructivo.
Inicia sesión para comentar y responder.
cargando comentarios...
Regístrate para guardar tu progreso.