← Volver a Aprende con CDIA

Clasificación: de los modelos a su evaluaciónÁrboles de decisión

IntermedioMachine Learning7 min de lectura

Árboles de decisión

Clasificar con una serie de preguntas de sí/no, eligiendo en cada paso el corte que más reduce la impureza. El modelo más interpretable y la base de Random Forest y XGBoost.

Un árbol de decisión clasifica haciendo una serie de preguntas de sí/no, como un cuestionario que se ramifica. Es uno de los modelos más intuitivos que existen —se lee como un diagrama de flujo— y la pieza base de dos de los mejores modelos tabulares: Random Forest y XGBoost.

Cómo funciona: preguntas que dividen

El árbol parte de todos los datos juntos (la raíz) y los va separando con preguntas sobre las variables:

  • ¿La edad es mayor a 30? → sí / no
  • ¿El ingreso supera cierto umbral? → sí / no

Cada pregunta divide los datos en dos ramas. Se sigue preguntando hasta llegar a las hojas, que asignan la clase final. Clasificar un caso nuevo es solo recorrer el árbol desde la raíz respondiendo sus preguntas.

no no ¿edad > 30? ¿ingreso alto? No compra No compra Compra
Un árbol recorre preguntas de sí/no desde la raíz hasta una hoja (coloreada), que asigna la clase final.

¿Qué pregunta elegir? La impureza

En cada nodo, el árbol busca la pregunta que deja las ramas resultantes lo más puras posible (idealmente, cada rama con una sola clase). La pureza se mide con el índice de Gini:

donde es la proporción de la clase en el nodo. Vale cuando el nodo contiene una sola clase (pureza total) y crece cuando las clases se mezclan. El árbol prueba cortes posibles y se queda con el que más reduce la impureza.

Su gran debilidad: el sobreajuste

Si se le deja crecer sin límite, un árbol termina con una hoja por cada ejemplo: memoriza los datos, incluido su ruido, y generaliza pésimo. Es el ejemplo perfecto de un modelo de alta varianza. Para controlarlo se lo poda, limitando su complejidad:

  • max_depth — la profundidad máxima del árbol.
  • min_samples_leaf — el mínimo de ejemplos por hoja.

En código

scikit-learn lo entrena y, de regalo, permite leer sus reglas:

from sklearn.tree import DecisionTreeClassifier, export_text

# max_depth limita el crecimiento para no sobreajustar.
arbol = DecisionTreeClassifier(max_depth=3, random_state=0).fit(X_train, y_train)

arbol.predict(X_test)
print(export_text(arbol, feature_names=list(nombres_variables)))  # las reglas, en texto

Esa transparencia —poder leer exactamente por qué decidió— es la mayor virtud del árbol.

Ventajas y límites

  • A favor: interpretable, no necesita escalar variables, maneja datos mixtos.
  • En contra: por sí solo es inestable y propenso al sobreajuste; un pequeño cambio en los datos puede producir un árbol muy distinto.

Para llevar

Un árbol de decisión separa los datos con preguntas sucesivas, eligiendo en cada paso el corte que más reduce la impureza. Es transparente e intuitivo, pero inestable y fácil de sobreajustar. La solución no es abandonarlo, sino combinar muchos: eso es exactamente lo que hacen Random Forest y XGBoost, las próximas lecciones.