Sobreajuste y poda

Con el algoritmo descrito anteriormente, podemos entrenar un árbol de decisión que clasificará perfectamente los ejemplos de entrenamiento, siempre que los ejemplos sean separables. Sin embargo, si el conjunto de datos contiene ruido, este árbol se ajustará demasiado a los datos y mostrará una precisión de prueba deficiente.

En la siguiente figura, se muestra un conjunto de datos con ruido con una relación lineal entre una característica x y la etiqueta y. La figura también muestra un árbol de decisión entrenado en este conjunto de datos sin ningún tipo de regularización. Este modelo predice correctamente todos los ejemplos de entrenamiento (la predicción del modelo coincide con los ejemplos de entrenamiento). Sin embargo, en un conjunto de datos nuevo que contenga el mismo patrón lineal y una instancia de ruido diferente, el modelo tendría un rendimiento bajo.

La pendiente general es de +1, pero debido a que el conjunto de datos tiene mucho ruido, los puntos de datos individuales a veces están muy lejos de la línea de ajuste óptimo.

Figura 12: Un conjunto de datos contaminado.

 

Para limitar el sobreajuste de un árbol de decisión, aplica uno o ambos de los siguientes criterios de regularización mientras entrenas el árbol de decisión:

  • Establece una profundidad máxima: Evita que los árboles de decisión crezcan más allá de una profundidad máxima, como 10.
  • Establece una cantidad mínima de ejemplos en la hoja: No se considerará una hoja con menos de una cantidad determinada de ejemplos para dividirla.

En la siguiente figura, se ilustra el efecto de la diferencia en la cantidad mínima de ejemplos por hoja. El modelo captura menos ruido.

Tres gráficos, cada uno de los cuales muestra los efectos de un valor diferente para la cantidad mínima de ejemplos por hoja. Los diferentes valores son 2, 5 y 10.

Figura 13. Cantidad mínima de ejemplos por hoja distinta.

También puedes realizar la regularización después del entrenamiento quitando (podando) de forma selectiva ciertas ramas, es decir, convirtiendo ciertos nodos no hoja en hojas. Una solución común para seleccionar las ramas que se quitarán es usar un conjunto de datos de validación. Es decir, si quitar una rama mejora la calidad del modelo en el conjunto de datos de validación, se quita la rama.

En el siguiente dibujo, se ilustra esta idea. Aquí, probamos si la precisión de validación del árbol de decisión mejoraría si el nodo verde que no es hoja se convirtiera en una hoja, es decir, si se podan los nodos naranja.

Dos árboles de decisión. Un árbol de decisión contiene 9 nodos, y el otro se redujo a solo 6 nodos convirtiendo una de las condiciones en una hoja.

Figura 14. Poda una condición y sus elementos secundarios en un nodo hoja.

 

En la siguiente figura, se ilustra el efecto de usar el 20% del conjunto de datos como validación para podar el árbol de decisión:

Gráfico que muestra un modelo ajustado en exceso irregular en comparación con un modelo ideal de línea recta

Figura 15. Usar el 20% del conjunto de datos para podar el árbol de decisión.

 

Ten en cuenta que usar un conjunto de datos de validación reduce la cantidad de ejemplos disponibles para el entrenamiento inicial del árbol de decisión.

Muchos creadores de modelos aplican varios criterios. Por ejemplo, puedes hacer lo siguiente:

  • Aplica una cantidad mínima de ejemplos por hoja.
  • Aplica una profundidad máxima para limitar el crecimiento del árbol de decisión.
  • Poda el árbol de decisión.
Código YDF
En YDF, los algoritmos de aprendizaje están preconfigurados con valores predeterminados para todos los hiperparámetros de poda. Por ejemplo, estos son los valores predeterminados de dos hiperparámetros de poda:
  • La cantidad mínima de ejemplos es 5 (min_examples = 5).
  • Se retiene el 10% del conjunto de datos de entrenamiento para la validación (validation_ratio = 0.1).
Puedes inhabilitar la poda con el conjunto de datos de validación configurando validation_ratio=0.0.

Esos criterios introducen nuevos hiperparámetros que deben ajustarse (p.ej., la profundidad máxima del árbol), a menudo con el ajuste de hiperparámetros automatizado. Los árboles de decisión suelen ser lo suficientemente rápidos como para entrenarse para usar el ajuste de hiperparámetros con validación cruzada. Por ejemplo, en un conjunto de datos con "n" ejemplos:

  • Divide los ejemplos de entrenamiento en p grupos no superpuestos. Por ejemplo: p=10
  • Para todos los valores de hiperparámetros posibles; por ejemplo, profundidad máxima en {3,5,6,7,8,9}, ejemplos mínimos en {5,8,10,20}.
    • Evalúa, en cada grupo, la calidad de un árbol de decisión entrenado en los otros grupos p-1.
    • Haz un promedio de la evaluación en todos los grupos.
  • Selecciona el valor del hiperparámetro con la mejor evaluación promedio.
  • Entrena un árbol de decisión final con todos los ejemplos de “n” con los hiperparámetros seleccionados.

En esta sección, analizamos las formas en que los árboles de decisión limitan el sobreajuste. A pesar de estos métodos, el subajuste y el sobreajuste son las principales debilidades de los árboles de decisión. Los bosques de decisión presentan nuevos métodos para limitar el sobreajuste, que veremos más adelante.

Interpretación directa del árbol de decisión

Los árboles de decisión son fáciles de interpretar. Dicho esto, cambiar incluso algunos ejemplos puede cambiar por completo la estructura y, por lo tanto, la interpretación del árbol de decisión.

Debido a la forma en que se construyen los árboles de decisión, que particionan los ejemplos de entrenamiento, se puede usar un árbol de decisión para interpretar el conjunto de datos en sí (en lugar del modelo). Cada hoja representa una esquina en particular del conjunto de datos.

Código YDF
En YDF, puedes ver árboles con la función model.describe(). También puedes acceder a un árbol individual y trazarlo con model.get_tree(). Consulta el instructivo de inspección de modelos de YDF para obtener más detalles.

Sin embargo, la interpretación indirecta también es informativa.