Big Data Analytics: árboles de decisión
Un árbol de decisiones es un algoritmo que se utiliza para problemas de aprendizaje supervisado, como clasificación o regresión. Un árbol de decisión o un árbol de clasificación es un árbol en el que cada nodo interno (no hoja) está etiquetado con una característica de entrada. Los arcos que provienen de un nodo etiquetado con una característica están etiquetados con cada uno de los posibles valores de la característica. Cada hoja del árbol está etiquetada con una clase o una distribución de probabilidad entre las clases.
Un árbol se puede "aprender" dividiendo el conjunto de fuentes en subconjuntos según una prueba de valor de atributo. Este proceso se repite en cada subconjunto derivado de una manera recursiva llamadarecursive partitioning. La recursividad se completa cuando el subconjunto en un nodo tiene el mismo valor de la variable objetivo, o cuando la división ya no agrega valor a las predicciones. Este proceso de inducción de arriba hacia abajo de árboles de decisión es un ejemplo de un algoritmo codicioso, y es la estrategia más común para aprender árboles de decisión.
Los árboles de decisión utilizados en la minería de datos son de dos tipos principales:
Classification tree - cuando la respuesta es una variable nominal, por ejemplo, si un correo electrónico es spam o no.
Regression tree - cuando el resultado previsto puede considerarse un número real (por ejemplo, el salario de un trabajador).
Los árboles de decisión son un método simple y, como tal, tienen algunos problemas. Uno de estos problemas es la gran variación en los modelos resultantes que producen los árboles de decisión. Para aliviar este problema, se desarrollaron métodos conjuntos de árboles de decisión. Hay dos grupos de métodos de conjunto que se utilizan ampliamente en la actualidad:
Bagging decision trees- Estos árboles se utilizan para construir múltiples árboles de decisión volviendo a muestrear repetidamente los datos de entrenamiento con reemplazo y votando los árboles para obtener una predicción de consenso. Este algoritmo se ha denominado bosque aleatorio.
Boosting decision trees- La mejora de gradientes combina estudiantes débiles; en este caso, árboles de decisión en un solo alumno fuerte, de forma iterativa. Ajusta un árbol débil a los datos y de forma iterativa sigue ajustando a los alumnos débiles para corregir el error del modelo anterior.
# Install the party package
# install.packages('party')
library(party)
library(ggplot2)
head(diamonds)
# We will predict the cut of diamonds using the features available in the
diamonds dataset.
ct = ctree(cut ~ ., data = diamonds)
# plot(ct, main="Conditional Inference Tree")
# Example output
# Response: cut
# Inputs: carat, color, clarity, depth, table, price, x, y, z
# Number of observations: 53940
#
# 1) table <= 57; criterion = 1, statistic = 10131.878
# 2) depth <= 63; criterion = 1, statistic = 8377.279
# 3) table <= 56.4; criterion = 1, statistic = 226.423
# 4) z <= 2.64; criterion = 1, statistic = 70.393
# 5) clarity <= VS1; criterion = 0.989, statistic = 10.48
# 6) color <= E; criterion = 0.997, statistic = 12.829
# 7)* weights = 82
# 6) color > E
#Table of prediction errors
table(predict(ct), diamonds$cut)
# Fair Good Very Good Premium Ideal
# Fair 1388 171 17 0 14
# Good 102 2912 499 26 27
# Very Good 54 998 3334 249 355
# Premium 44 711 5054 11915 1167
# Ideal 22 114 3178 1601 19988
# Estimated class probabilities
probs = predict(ct, newdata = diamonds, type = "prob")
probs = do.call(rbind, probs)
head(probs)