Árboles de decisión en aprendizaje automático

Cortesía de Pixabay.com

Introducción

Este artículo tiene como objetivo la introducción de árboles de decisión; un bloque de construcción popular de modelos altamente elogiados como xgboost . Un árbol de decisión es simplemente un conjunto de preguntas en cascada. Cuando obtiene un punto de datos (es decir, un conjunto de características y valores), utiliza cada atributo (es decir, un valor de una característica determinada del punto de datos) para responder una pregunta. La respuesta a cada pregunta decide la siguiente pregunta. Al final de esta secuencia de preguntas, terminará con una probabilidad de que el punto de datos pertenezca a cada clase.

Nota : Este artículo está detrás del muro de pagos Medio. Sin embargo, el código es de código abierto, y se puede acceder a él desde este enlace .

Nota 2 : Esta es la quinta publicación del blog en la serie de luz sobre el aprendizaje de máquina de matemáticas AZ [19659009]. Puede encontrar las publicaciones de blog anteriores vinculadas a la letra a continuación.

* denota artículos detrás del medio Paywall

¿Por qué este artículo?

¡Retrocedamos aquí! ¿Por qué debería leer este artículo, cuando hay tantos artículos que explican los árboles de decisión? Un punto a destacar es que, a diferencia de los artículos que encontré en Internet, este artículo no se detendrá en una explicación de alto nivel y dejará al lector colgado. En contraste, intentaré,

  • Proporcionar una buena intuición de la funcionalidad del modelo,
  • Hacer justicia al quid del modelo,
  • Explicar cómo puede ocurrir el sobreajuste y cómo prevenirlo
  • Reforzar la explicación completa con ejemplos.

¡También me gustaría aludir a una advertencia importante! El objetivo de asimilar las cuestiones fundamentales es no poder implementar un árbol de decisiones desde cero (al menos no lo que espero), pero

proporciona una buena comprensión de lo que varios parámetros (la mayoría de ellos) significan cuando úselos en la práctica

Sin embargo, el código que proporciono es una estructura de árbol de decisiones desde cero y está pensada como una guía para que pueda ver el proceso de principio a fin. ¡Qué mejor manera de obtener un buen entendimiento, aparte de ver las tuercas y los pernos!

¿Por qué los árboles de decisión?

Los árboles de decisión son excelentes por varias razones. Pero como con cualquier modelo, el verdadero poder se obtiene cuando se usa un modelo en un contexto adecuado. Recuerde,

¡basura dentro, basura fuera!

Los árboles de decisión son geniales en el sentido de que

  • Son fácilmente interpretables y siguen un patrón similar al del pensamiento humano. En otras palabras, puede explicar un árbol de decisiones como un conjunto de preguntas / reglas de negocios.
  • La predicción es rápida . Es un conjunto de operaciones de comparación hasta que alcanza un nodo de hoja
  • Puede adaptarse para tratar con datos faltantes sin imputar datos

Manual sobre árboles de decisión:

Como dije anteriormente, una decisión El árbol es básicamente un conjunto de preguntas en cascada (formadas en forma de árbol). Las preguntas comprueban si una característica de los datos satisface una determinada condición (por ejemplo, ¿Outlook == Sunny?). Vamos a desarrollar esto un poco. Para eso asumamos un conjunto de datos meteorológicos típico (personalmente no me gusta el conjunto de datos meteorológicos, demasiado común, así que más adelante cambiaré a algo un poco más emocionante).

Supongamos que tenemos el conjunto de datos anterior y me gustaría Predecir si jugaríamos al golf o no dado el clima. El árbol de decisión para este problema podría parecerse al siguiente.

Un árbol de decisión de ejemplo. Los nodos redondos denotan nodos de decisión, donde los nodos cuadrados denotan nodos de hoja

Componentes de un árbol de decisión

Permítanme darles una breve lección de anatomía de un árbol de decisión. El árbol tiene nodos de decisión (redondos), decisiones (bordes) y nodos de hoja / predicción (cuadrado). Primero comienza con un nodo de decisión (por ejemplo, Outlook) y, dependiendo de la respuesta, puede tener un nodo de hoja u otro nodo de decisión (por ejemplo, Windy). Un árbol de decisión podría continuar para un número arbitrario de nodos de decisión. Sin embargo, cada rama debe terminar con un nodo de hoja.

Predicción con un árbol de decisión

Ahora diga que tiene un nuevo punto de datos, para el que le gustaría predecir la etiqueta.

Perspectiva = Soleado, Temperatura = Caliente , Humedad = Normal, Windy = Verdadero

Para predecir, comienza desde la parte superior del árbol y recorres cada vez más usando los atributos (es decir, los valores de las características) para tomar decisiones a lo largo del árbol, hasta llegar a un nodo de hoja . Este proceso se describe a continuación.

Supongo que no estás jugando al golf.

Construyendo un árbol

Por supuesto, aún queda una pregunta más importante.

¿Cómo podemos llegar a este árbol? [19659027] Más importante aún,

¿Cómo podemos decidir la mejor función de partición de datos a una profundidad dada?

Hay varios algoritmos diferentes que se utilizan para generar árboles como,

  • CART [19659053] (Árboles de clasificación y regresión) – Usa Coeficiente de Gini para decidir la función de partición
  • ID3 (Usa la ganancia de información – discutida más adelante, para decidir la función de la partición, y no está diseñado para tratar con características continuas )
  • C4.5 (Funciona de manera similar a ID3 usando la ganancia de información para dividir los datos. Sin embargo, C4.5 puede manejar las características continuas así como pueden funcionar con datos faltantes ) [19659025] Pasemos ahora a resolver un problema de ficción más emocionante. Queremos encontrar un Rey malvado que esté aterrorizando las calles de TreeLand.

    Encontrar al Rey disfrazado en las calles

    (Datos y características)

    A partir de esta sección, explicaré los árboles de decisión con una historia. del rey de TreeLand que amaba engañar a los lugareños disfrazándose en las calles. Esto era molesto porque cada vez que alguien trataba mal al rey sin querer, lo castigaban. La gente estaba bastante molesta, ¡y un hombre sabio (llamémoslo John) se adelantó y dijo que puede resolver esto en 10 días!

    John asumió varias características del rey que cortan una figura distintiva cuando está en público. Las características son:

    • Sale del castillo
    • Camina lentamente
    • Come 5 o más veces al día
    • Tiene un diente de oro

    John comenzó a observar personas y a crear un conjunto de datos (un punto de datos por persona) junto con la variable objetivo (es decir, si la persona era realmente el rey o no). Tiene las siguientes observaciones. Desafortunadamente, este conjunto de datos llegó al costo del sufrimiento de cinco personas.

    Con este conjunto de datos, John hizo lo siguiente. Escribió cada característica contra la variable objetivo y resaltó cada entrada de acuerdo con la siguiente lógica:

    • Verde: si el atributo coincide con la etiqueta correspondiente
    • Rojo: si el atributo no coincide con la etiqueta correspondiente
    John’s pizarra blanca

    Ahora, mirando las tablas anteriores, podemos tener una idea de qué características contribuyen más a predecir correctamente al Rey. Por ejemplo, el siguiente diagrama resume las observaciones de las tablas anteriores.

    Resumen de las observaciones de las tablas resaltadas

    Los instintos no son lo suficientemente buenos como para llamarle a un problema resuelto. Necesita métricas cuantificables para demostrar que estas características son potentes. De hecho, la mitad de los ciudadanos en TreeLand son ingenieros de aprendizaje automático. Aquí es donde entra la ganancia de información.

    Ganancia de información: ¿Cuánta más información se obtiene al dividir los datos?

    Ya discutimos que la idea básica detrás de un árbol es hacer una pregunta (es decir, probar los datos contra un atributo) y divida los datos según la respuesta (por ejemplo, Verdadero o Falso). La ganancia de información mide qué tan predecibles se hicieron los datos (o cuánta más información se obtuvo) al dividir los datos de acuerdo con la respuesta proporcionada en el nodo de decisión. Ponte las gafas de ciencia, es hora de formalizarlas. La información obtenida utilizando la característica F en los datos Y se define por:

    IG (Y, F) = H (Y) -H (Y | F)

    donde Y es la variable objetivo y [19659008] F es una característica (por ejemplo, Gold Tooth). Entonces, cuanto más poderosa es una característica, más información se obtiene al dividir los datos en esa característica. H (Y) es la entropía de Y y H (Y | F) es la entropía condicional de Y condicionada a F (que se discutirá pronto). En el código, la ganancia de información computacional tiene el siguiente aspecto.

     

    Veamos ahora qué es la entropía y la entropía condicional.

    Entropía y Entropía condicional

    ] La entropía mide cuántos bits se requieren para transformar datos. Por lo tanto, cuanto más predecibles sean sus datos, menor será el número de bits necesarios. Por el contrario, cuanto menos predecibles sean sus datos, más bits necesitará. Esto se escribe de la siguiente manera:

    donde (y en Y) denota los resultados únicos en Y (por ejemplo, Rey = Verdadero o Falso en nuestro ejemplo). Puede implementar esto en Python con bastante facilidad.

     

    Entropía en términos sencillos

    Deje que la entropía sea más intuitiva. Digamos que el rey decidió nunca engañar a los locales en primer lugar, y John decidió recopilar datos para resolver este problema. Habría tenido una entropía de cero. ¿Por qué? Porque la etiqueta es 100% predecible (es decir, siempre es 0). Pero, en nuestros datos, la entropía está en su nivel más alto (es decir, 1), porque existe la misma posibilidad de que una persona sea rey o no.

    Imagínese a dos personas (John y Lisa) hablando por teléfono. Cada vez que John llama a Lisa, Lisa tiene que decir si fue el rey o no para cada punto de datos (es decir, 10 veces) sin ninguna información adicional. A continuación describo cómo la conversación bajará para diferentes valores de entropía.

    Diferencia de diferentes valores de entropía

    Entropía condicional en términos sencillos

    Esto establece el terreno para explicar qué es la entropía condicional (es decir, H (Y | F). Imagina que ahora, para cada punto de datos, John dice si la persona tenía un diente de oro o no. Luego, dependiendo del valor de la característica (es decir, F), Lisa tiene que predecir si ese era el rey o no. mire la tabla a continuación, los datos ahora son más predecibles que no tener ninguna característica.

    De la pizarra de Jonh

    En resumen, lo que obtiene la información es que

    mide la diferencia en la previsibilidad antes y después de proporcionar información sobre la función F .

    Para recordarnos nuevamente, aquí está la fórmula para la ganancia de información.

    IG (Y, F) = H (Y) -H (Y | F) [19659019] Mientras tanto, en TreeLand …

    (Construyendo el árbol)

    John calcula la información. Gane tanto para Castle como Gold Tooth y descubra que son mucho mejores que Slow y Greedy . Luego, John elige por primera vez la característica “ Castle “.

    Árbol con la característica “Castle”Está feliz con el lado izquierdo. Piensa, “4/6 la clasificación no es mala”. Dado que solo tiene 10 puntos de datos, le daremos un poco de holgura. Pero los resultados del lado derecho son deficientes (es decir, son 50% verdaderos o 50% falsos). Necesita mejorar los resultados, por lo que sigue adelante e intenta dividir el resto de la izquierda con la función que proporciona la mayor ganancia de información, que resulta ser la función “ Diente de oro “, y obtiene lo siguiente.

    Árbol con las características “Castillo” y “Diente de oro”

    ¡Así que ahí va! John ha encontrado la salsa secreta! Esto es, de hecho, cómo funciona el algoritmo ID3 . Más formalmente tendrías el siguiente pseudocódigo.

    Peseudocódigo

    La función más importante en este código sería build_tree que en realidad se vería así (disponible en el código ).

     

    Los ciudadanos de Treeland pueden relajarse de nuevo …

    Entonces, después de que John mostró lo que ocurrió, la gente quedó impresionada. Pero John sabía que más datos no solo mejorarían su modelo, sino que también validarían sus hallazgos. Así que le pidió a otros que lo ayudaran a recopilar más datos. Pero poco sabía, se encontraría con problemas al hacerlo.

    El árbol creció demasiado …

    (Sobrecalentamiento y regularización)

    Así que John logró que varias personas se unieran a su idea para aumentar la idea. conjunto de datos y mejorar el modelo. Lograron obtener el conjunto de datos de hasta 50 puntos de datos. Entonces, después de recopilar datos, soñando con un modelo mejor y más robusto, John creó un nuevo árbol. Aquí está el árbol que obtuvo.

    Nuevo árbol de decisión

    Este árbol levantó instantáneamente banderas rojas en la mente de John. El árbol es demasiado complicado para resolver este problema. Debería ser suficiente tener solo dos o tres características en una estructura de árbol simple. Entonces, ¿qué pasó aquí? Esto se llama overfitting ! John no utilizó ninguna regularización para controlar la complejidad del árbol, lo que dio como resultado un modelo de árbol no generalizable e intransferible que anula el propósito.

    Retrocedamos y corregimos los errores de John

    Hay varias formas de combatir Overfitting en modelos de arboles. Estaré discutiendo tres métodos en esta sección. Ellos son:

    • Asegurándose de que cada nodo de hoja tenga al menos n puntos de datos
    • Asegurándose de que la profundidad del árbol no exceda de d
    • Asegurándose de que la información gane es mayor que un umbral para hacer una división

    Asegurarse de que cada nodo hoja tenga al menos n el número de puntos de datos en un nodo hoja es importante. Porque, puedes construir el árbol perfecto del mundo (muy ajustado) para cualquier conjunto de entrenamiento, al tener un único punto de datos asignado a cada nodo de hoja en el árbol. Por lo tanto, asegurarse de que haya al menos n número de puntos de datos (p. Ej., 5% de los datos) conduce a modelos de árbol más generalizados.

    Asegurarse de que el árbol no crezca exponencialmente, volverá a proteger Nosotros contra el sobreajuste. En este método, básicamente estamos limitando el número de preguntas que podemos hacer para predecir la clase de un modelo, lo que lleva a elegir las mejores preguntas para formular, en lugar de hacer todas las preguntas posibles en el mundo.

    La última Asegurarse de que la ganancia de información esté por encima de un umbral debería tener sentido. Porque, ¿para qué crecer el árbol, si no obtenemos un beneficio de él?

    Entonces, después de revisar estas técnicas y aplicarlas al modelo, John creó el siguiente modelo, que es más explicable.

    Árbol regularizado

    No voy a reiterar sobre la predicción con árboles, ya que el proceso es bastante sencillo. Esto se puede implementar en Python usando las funciones recursivas como se muestra a continuación.

     

    Con esto terminamos la aventura en TreeLand. En conclusión, John recopiló datos, construyó un modelo inicial utilizando la ganancia de información para decidir características valiosas. Se metió en problemas con el sobreajuste y lo resolvió utilizando la regularización. La buena noticia es que, han aprendido a evitar que King trate de manera incorrecta usando este modelo que John desarrolló. ¡Así que vivieron felices para siempre!

    Trabajando con valores continuos

    Hasta ahora, nos limitamos a observar solo variables discretas. Pero hay tanto que puedes hacer solo con variables discretas. Los problemas interesantes suelen tener una mezcla de variables continuas y discretas. Entonces, ¿cómo podemos usar variables continuas en los árboles de decisión? Hay dos formas populares.

    • Discretice la característica continua agrupando el rango de una característica continua para igualar las bandejas
    • Use “ partición de entropía mínima ” [2] para encontrar una división en la característica continua

    Partición de entropía mínima

    La partición de entropía mínima (MEP) funciona de la siguiente manera.

    • Primero debe nominar un conjunto de puntos de corte en función del rango dentro del cual se esparcen los datos (p. Ej., Cortar el rango en T ubicaciones repartidas por igual)
    • Luego, para cada punto de corte, calcule la suma ponderada de entropía de la etiqueta Y
    • Elija el punto de corte, que proporciona la entropía mínima

    Cierre

    En este artículo, discutimos los árboles de decisión con gran detalle. . Los árboles de decisión son un modelo popular de aprendizaje automático, ya que son más interpretables (p. Ej., En comparación con una red neuronal) y, por lo general, ofrecen un buen rendimiento, especialmente cuando se usan con ensambles (embolsado y refuerzo).

    Primero, discutimos brevemente la funcionalidad de árbol de decisiones mientras se usa un conjunto de datos meteorológicos de juguete como ejemplo. Luego saltamos a un problema más vivo, que era identificar si el molesto Rey de TreeLand está aterrorizando las calles. Vimos cómo John utilizó la ganancia de información para identificar características que pueden ayudar a identificar al Rey y posteriormente construyó un árbol con esas características. Posteriormente, vimos cómo surgían problemas como el “sobreajuste” a medida que el conjunto de datos crecía. También discutimos cómo se puede evitar el sobreajuste con varios métodos de regularización (por ejemplo, limitar la profundidad máxima del árbol). Finalmente, concluimos la aventura en TreeLand e hicimos un recorrido lateral rápido para ver cómo se pueden manejar las características continuas en los árboles de decisión.

    El código para este artículo está disponible aquí .

    Referencia

    [1] Notas de la conferencia de CMU

    [2] Discretización multiválido de atributos de valor continuo para el aprendizaje de clasificación

Dejá un comentario