Clasificadores: Desicion Tree y Random Forest
(Árboles de decisión y Bosques aleatorios)
Universidad Tecnológica de Bolivar
7/19/23
Los árboles de decisión son una técnica de aprendizaje automático supervisado muy utilizada en muchos negocios. Como su nombre indica, esta técnica de machine learning toma una serie de decisiones en forma de árbol.
Proporciona una forma práctica y sencilla para que las personas comprendan las posibles opciones de toma de decisiones y la gama de posibles resultados basados en una serie de problemas.
Los árboles de decisión generalmente comienzan con un solo nodo y luego se descomponen en nodos adicionales para mostrar más posibilidades (como elegir las dos caras de una moneda).
Los nodos intermedios (las ramas) representan soluciones. Los nodos finales (las hojas) nos dan la predicción que vamos buscando.
La rama más lejana del árbol representa el resultado final.
Los tomadores de decisiones eventualmente sopesan cada plan de acción con los riesgos para tomar la decisión final. Además, se puede crear un árbol más largo o corto según sea necesario.
Para explicar cómo funcionan los árboles de decisión con problemas de clasificación vamos a usar el conjunto de datos Iris. El problema consiste en clasificar correctamente la variedad de la flor iris a partir del ancho y largo de los pétalos y sépalos. Hay tres variedades de flor iris: setosa, versicolor y virginica.
Este conjunto de datos tiene 150 muestras:
Si le damos las 150 flores del conjunto de datos Iris a un árbol de decisión para que lo clasifique, nos quedaría un árbol como el que se muestra a continuación. Vamos a aprender a leerlo:
La interpretación del árbol de este árbol de decisión sería:
Si bien hay varias formas de seleccionar el mejor atributo en cada nodo, dos métodos:
Para calcular la impureza gini, usamos la siguiente fórmula:
\[Gini = 1- \sum_{k \in S} p_k^2\]
Donde
Por ejemplo, para el caso del nodo donde la clasificación es versicolor, el cálculo sería el siguiente:
\[Gini_{versicolor} = 1- \sum_{k \in S} p_k^2 = 1- \left( \frac{0}{54} \right)^2 + \left( \frac{49}{54} \right)^2 + \left( \frac{5}{54} \right)^2 = 0.168 \]
Es difícil explicar la ganancia de información sin discutir primero la entropía. La entropía es un concepto que se deriva de la teoría de la información, que mide la impureza de los valores de la muestra. Se define con la siguiente fórmula, donde:
\[Entropia(S) = \sum_{k \in S} p_k log_2(p_k)\]
Donde
La ganancia de información generalmente se representa con la siguiente fórmula
\[Entropía(S,\alpha)= Entropía (S) - \sum_{k \in Niveles(\alpha)} \frac{|S_k|}{|S|} Entropía (S_k)\]
Fácil de interpretar: la lógica booleana y las representaciones visuales de los árboles de decisión los hacen más fáciles de entender y consumir. La naturaleza jerárquica de un árbol de decisión también facilita ver qué atributos son los más importantes, lo que no siempre queda claro con otros algoritmos, como las redes neuronales.
Requiere poca o ninguna preparación de datos: los árboles de decisión tienen una serie de características que los hacen más flexibles que otros clasificadores. Puede manejar varios tipos de datos, es decir. valores discretos o continuos, y los valores continuos se pueden convertir en valores categóricos mediante el uso de umbrales. Además, también puede manejar valores con valores faltantes, lo que puede ser problemático para otros clasificadores, como Naïve Bayes.
Más flexible: los árboles de decisión se pueden aprovechar para tareas de clasificación y regresión, lo que los hace más flexibles que otros algoritmos. También es insensible a las relaciones subyacentes entre los atributos; esto significa que si dos variables están altamente correlacionadas, el algoritmo solo elegirá una de las características para dividir.
Propenso a sobreajustarse: los árboles de decisión complejos tienden a sobreajustarse y no se generalizan bien a nuevos datos. Este escenario se puede evitar mediante los procesos de prepoda o postpoda. La poda previa detiene el crecimiento del árbol cuando no hay datos suficientes, mientras que la poda posterior elimina los subárboles con datos inadecuados después de la construcción del árbol.
Estimadores de alta varianza: Pequeñas variaciones dentro de los datos pueden producir un árbol de decisión muy diferente. El embolsado, o el promedio de estimaciones, puede ser un método para reducir la varianza de los árboles de decisión. Sin embargo, este enfoque es limitado ya que puede conducir a predictores altamente correlacionados.
Más costoso: dado que los árboles de decisión adoptan un enfoque de búsqueda codicioso durante la construcción, pueden ser más costosos de entrenar en comparación con otros algoritmos.
Random Forest es un conjunto de árboles de decisión. Construye y combina múltiples árboles de decisión para obtener predicciones más precisas.
Se llaman aleatorios porque eligen predictores aleatoriamente en un momento de entrenamiento y la palabra “bosque” porque toman la salida de múltiples árboles para tomar una decisión.
Random forest toma muestras aleatorias de las observaciones, variables iniciales aleatorias (columnas) e intenta construir un modelo. El algoritmo de bosque aleatorio es el siguiente:
Considere una caja de frutas que consta de tres frutas: manzanas, naranjas y cerezas en datos de entrenamiento, es decir, n = 3. Estamos prediciendo la fruta que tiene el máximo número en una caja de frutas. Un modelo de bosque aleatorio usando los datos de entrenamiento con un número de árboles, \(k = 3\).
El modelo se juzga utilizando varias características de los datos, es decir, diámetro, color, forma y grupos. Entre naranja, color cereza y naranja, el naranja se selecciona para ser el máximo en la caja de frutas por Random forest.
A continuación presentaremos un ejemplo para árboles de decisión y random forest.
Usaremos un conjunto de datos que contiene información sobre los empleados que trabajaron en una empresa. Estos datos provienen de Kaggle,
https://www.kaggle.com/datasets/mfaisalqureshi/hr-analytics-and-job-prediction
Este conjunto de datos contiene información sobre los empleados que trabajaron en una empresa.
Este conjunto de datos contiene columnas:
Veamos las columnas
Veamos si hay NA’s
Veamos la cantidad de empleados con salario alto, medio y bajo
Gráfico número de empleados que trabajan o no en la empresa
## Matriz de confusion
Y_pred_cat <- as.factor(ifelse(Y_pred < 0.6, "Insatisfecho" , "Satisfecho"))
Y_test_cat <- as.factor(ifelse(Y_test$satisfaction_level < 0.6, "Insatisfecho" , "Satisfecho"))
library(caret)
table(Y_pred_cat, Y_test_cat)
m.c <- confusionMatrix(data = Y_pred_cat, reference = Y_test_cat)
m.cVeamos la curva ROC
Realizar todo el análisis del árbol 2
Crearemos un modelo de bosque aleatorio usando las variables del primer modelo ya que tuvo mejor rendimiento.
Veamos la predicción del modelo
Veamos el RMSE Notamos un RMSE más bajo al comparar los dos modelos de árboles de decisión y comprobemos las características importantes.
https://raw.githubusercontent.com/deepanshu88/Datasets/master/UploadedFiles/german_credit.csv