Durante 5 días de este “Calendario de Adviento” de aprendizaje automático, exploramos 5 modelos (o algoritmos) que se basan todos en distancias (distancia euclidiana local o distancia global de Mahalanobis).
Entonces es hora de cambiar el enfoque, ¿verdad? Volveremos más adelante sobre la noción de distancia.
Por hoy veremos algo totalmente diferente: ¡Árboles de Decisión!
Introducción con un conjunto de datos simple
Utilicemos un conjunto de datos simple con una sola característica continua.
Como siempre, la idea es que tú mismo puedas visualizar los resultados. Luego hay que pensar cómo hacer que la computadora lo haga.
Podemos adivinar visualmente que para la primera división, hay dos valores posibles, uno alrededor de 5,5 y el otro alrededor de 12.
Ahora la pregunta es ¿cuál elegimos?
Esto es exactamente lo que vamos a descubrir: ¿cómo determinamos el valor del primer split con una implementación en Excel?
Una vez que determinemos el valor para la primera división, podemos aplicar el mismo proceso para las siguientes divisiones.
Es por eso que solo implementaremos la primera división en Excel.
El principio algorítmico de los regresores del árbol de decisión
Escribí un artículo para distinguir siempre tres pasos del aprendizaje automático para aprenderlo de manera efectiva y apliquemos el principio a los regresores del árbol de decisión.
Entonces, por primera vez, tenemos un modelo de aprendizaje automático “verdadero”, con pasos no triviales para los tres.
¿Cuál es el modelo?
El modelo aquí es un conjunto de reglas para particionar el conjunto de datos y, para cada partición, asignaremos un valor. ¿Cuál? El valor promedio y de todas las observaciones en el mismo grupo.
Entonces, mientras que k-NN predice con el valor promedio de los vecinos más cercanos (observaciones similares en términos de variables características), el regresor del Árbol de Decisión predice con el valor promedio de un grupo de observaciones (similares en términos de la variable característica).
Proceso de ajuste o entrenamiento del modelo.
Para un árbol de decisión, también llamamos a este proceso un árbol que hace crecer completamente. En el caso de un regresor de árbol de decisión, las hojas contendrán sólo una observación, por lo que el MSE será cero.
Hacer crecer un árbol consiste en dividir recursivamente los datos de entrada en fragmentos o regiones cada vez más pequeños. Para cada región, se puede calcular una predicción.
En el caso de la regresión, la predicción es el promedio de la variable objetivo para la región.
En cada paso del proceso de construcción, el algoritmo selecciona la característica y el valor dividido que maximiza un criterio y, en el caso de un regresor, suele ser el error cuadrático medio (MSE) entre el valor real y la predicción.
Ajuste o poda del modelo
Para un árbol de decisión, el término general de ajuste del modelo también se llama poda, ya que puede verse como eliminar nodos y hojas de un árbol completamente desarrollado.
También equivale a decir que el proceso de construcción se detiene cuando se cumple un criterio, como una profundidad máxima o un número mínimo de muestras en cada nodo de hoja. Y estos son los hiperparámetros que se pueden optimizar con el proceso de ajuste.
Proceso de inferencia
Una vez que se construye el regresor del árbol de decisión, se puede usar para predecir la variable objetivo para nuevas instancias de entrada aplicando las reglas y atravesando el árbol desde el nodo raíz hasta un nodo hoja que corresponde a los valores de las características de la entrada.
El valor objetivo previsto para la instancia de entrada es entonces la media de los valores objetivo de las muestras de entrenamiento que caen en el mismo nodo hoja.
Dividir con una característica continua
Estos son los pasos que seguiremos:
Enumere todas las divisiones posibles. Para cada división, calcularemos el MSE (error cuadrático medio). Seleccionaremos la división que minimice el MSE como la siguiente división óptima.
Todas las divisiones posibles
Primero, tenemos que enumerar todas las divisiones posibles que son los valores promedio de dos valores consecutivos. No es necesario probar más valores.
Cálculo de MSE para cada posible división
Como punto de partida, podemos calcular el MSE antes de cualquier división. Esto también significa que la predicción es solo el valor promedio de y. Y el MSE es equivalente a la desviación estándar de y.
Ahora, la idea es encontrar una división para que el MSE con una división sea menor que antes. Es posible que la división no mejore significativamente el rendimiento (o reduzca el MSE), entonces el árbol final sería trivial, es decir, el valor promedio de y.
Para cada división posible, podemos calcular el MSE (error cuadrático medio). La siguiente imagen muestra el cálculo de la primera división posible, que es x = 2.
Podemos ver el detalle del cálculo:
Cortar el conjunto de datos en dos regiones: con el valor x=2, determinamos dos posibilidades x<2 o x>2, por lo que el eje x se corta en dos partes. Calcula la predicción: para cada parte, calculamos el promedio de y. Ésa es la predicción potencial para y. Calcule el error: luego comparamos la predicción con el valor real de y Calcule el error al cuadrado: para cada observación, podemos calcular el error al cuadrado.
División óptima
Para cada división posible, hacemos lo mismo para obtener el MSE. En Excel, podemos copiar y pegar la fórmula y el único valor que cambia es el posible valor de división para x.
Luego podemos trazar el MSE en el eje y y la posible división en el eje x, y ahora podemos ver que hay un mínimo de MSE para x=5.5, este es exactamente el resultado obtenido con código Python.
Ahora, un pequeño ejercicio que puedes hacer es cambiar el MSE a MAE (Error absoluto medio).
Y puedes intentar responder a esta pregunta: ¿cuál es el impacto de este cambio?
Condensar todos los cálculos divididos en una tabla de resumen
En las secciones anteriores, calculamos cada división paso a paso, para poder visualizar mejor los detalles de los cálculos.
Ahora reunimos todo en una sola mesa, por lo que todo el proceso se vuelve compacto y fácil de automatizar.
Para hacer esto, primero simplificamos los cálculos.
En un nodo, la predicción es el promedio, por lo que el MSE es exactamente la varianza. Y para la varianza también podemos utilizar la fórmula simplificada:
Entonces, en la siguiente tabla, usamos una fila para cada división posible.
Para cada división, calculamos el MSE del nodo izquierdo y el MSE del nodo derecho.
La varianza de cada grupo se puede simplificar utilizando los resultados intermedios de yey al cuadrado.
Luego calculamos el promedio ponderado de los dos valores de MSE. Y al final obtenemos exactamente el mismo resultado que en el método paso a paso.
Dividir con múltiples funciones continuas
Ahora usaremos dos funciones.
Aquí es donde se vuelve interesante.
Tendremos divisiones de candidatos provenientes de ambas características.
¿Cómo elegimos?
Simplemente los consideraremos todos y luego seleccionaremos la división con el MSE más pequeño.
La idea en Excel es:
Primero, coloque todas las divisiones posibles de las dos características en una sola columna, luego, para cada una de estas divisiones, calcule el MSE como antes y, finalmente, elija la mejor.
Concatenación de divisiones
Primero, enumeramos todas las divisiones posibles para la Característica 1 (por ejemplo, todos los umbrales entre dos valores ordenados).
Luego, enumeramos todas las divisiones posibles para la Característica 2 de la misma manera.
En Excel, concatenamos estas dos listas en una columna de divisiones de candidatos.
Entonces cada fila de esta columna representa:
“Si corto aquí usando esta función, ¿qué le sucede al MSE?”
Esto nos brinda una lista unificada de todas las divisiones de ambas funciones.
Cálculos de MSE
Una vez que tenemos la lista de todas las divisiones, el resto es la misma lógica que antes.
Para cada fila (es decir, para cada división):
dividimos los puntos en el nodo izquierdo y el nodo derecho, calculamos el MSE del nodo izquierdo, calculamos el MSE del nodo derecho, tomamos el promedio ponderado de los dos valores de MSE.
Al final, miramos esta columna de “MSE total” y elegimos la división (y por lo tanto la característica y el umbral) que da el valor mínimo.
Dividir con una característica continua y una categórica
Ahora combinemos dos tipos de características muy diferentes:
una característica continua una característica categórica (por ejemplo, A, B, C).
Un árbol de decisión puede dividirse en ambos, pero la forma en que generamos divisiones de candidatos no es la misma.
Con una función continua, probamos umbrales.
Con una característica categórica, probamos grupos de categorías.
Entonces la idea es exactamente la misma que antes:
Consideramos todas las divisiones posibles de ambas características, luego seleccionamos la que tiene el MSE más pequeño.
Divisiones de características categóricas
Para una característica categórica, la lógica es diferente:
Cada categoría ya es un “grupo”, por lo que la división más simple es: una categoría frente a todas las demás.
Por ejemplo, si las categorías son A, B y C:
división 1: A vs (B, C) división 2: B vs (A, C) división 3: C vs (A, B)
Esto ya proporciona divisiones de candidatos significativas y mantiene manejables las fórmulas de Excel.
Cada una de estas divisiones basadas en categorías se agrega a la misma lista que contiene los umbrales continuos.
Cálculo de MSE
Una vez que se enumeran todas las divisiones (umbrales continuos + particiones categóricas), los cálculos siguen los mismos pasos:
asigne cada punto al nodo izquierdo o derecho, calcule el MSE del nodo izquierdo, calcule el MSE del nodo derecho, calcule el promedio ponderado.
La división con el MSE total más bajo se convierte en la primera división óptima.
Ejercicio que puedes probar
Ahora puedes jugar con Google Sheet:
Puede intentar encontrar la siguiente división. Puede cambiar el criterio, en lugar de MSE, puede usar error absoluto, Poisson o Friedman_mse como se indica en la documentación de DecisionTreeRegressor. Puede cambiar la variable objetivo a una variable binaria; normalmente, esto se convierte en una tarea de clasificación, pero 0 o 1 también son números, por lo que aún se puede aplicar el criterio MSE. Pero si desea crear un clasificador adecuado, debe aplicar el criterio habitual Entroy o Gini. Es para el próximo artículo.
Conclusión
Con Excel, es posible implementar una división para obtener más información sobre cómo funcionan los regresores del árbol de decisión. Aunque no creamos un árbol completo, sigue siendo interesante, ya que la parte más importante es encontrar la división óptima entre todas las divisiones posibles.
Una cosa más sobre los valores perdidos
¿Ha notado algo interesante acerca de cómo se manejan las características entre los modelos basados en distancia y los árboles de decisión?
Para los modelos basados en distancias, todo debe ser numérico. Las características continuas permanecen continuas y las características categóricas deben transformarse en números. El modelo compara puntos en el espacio, por lo que todo tiene que vivir en un eje numérico.
Los árboles de decisión hacen lo contrario: dividen las características en grupos. Una característica continua se convierte en intervalos. Una característica categórica sigue siendo categórica.
¿Y un valor faltante? Simplemente se convierte en otra categoría. No es necesario imputar primero. El árbol puede manejarlo naturalmente enviando todos los valores “faltantes” a una rama, como cualquier otro grupo.