Random Forest es un algoritmo predictivo que usa la técnica de Bagging para combinar diferentes arboles, donde cada árbol es construido con observaciones y variables aleatorias.
En forma resumida sigue este proceso:
En forma resumida sigue este proceso:
- Selecciona individuos al azar (usando muestreo con reemplazo) para crear diferentes set de datos.
- Crea un árbol de decisión con cada set de datos, obteniendo diferentes arboles, ya que cada set contiene diferentes individuos y diferentes variables en cada nodo.
- Al crear los arboles se eligen variables al azar en cada nodo del arbol, dejando crecer el arbol en profundidad (es decir, sin podar).
- Predice los nuevos datos usando el "voto mayoritario", donde clasificará como "positivo" si la mayoría de los arboles predicen la observación como positiva.
Conceptualmente sería así:
Para medir eficiencia del randomForest, ver nota publicada AQUI
Para optimizar la cantidad de variables, ver nota publicada AQUI
En script en R seria el siguiente:
# Ejemplo Random Forest
#----------------------------------------------------------- # Carga package y datos library(randomForest);library(C50); data(churn); Entrenamiento <-churnTrain Test <-churnTest #----------------------------------------------------------- # Crea modelo predictivo Modelo<-randomForest(churn ~ ., data=Entrenamiento, # datos para entrenar ntree=30, # cantidad de arboles mtry=6, # cantidad de variables replace=T) # muestras con reemplazo #----------------------------------------------------------- # Crea prediccion y Matriz de confusion Prediccion <- predict (Modelo , Test[,-20]); # Matriz de Confusion MC<-table(Test[, "churn"],Prediccion) MC
Referencia:
http://oz.berkeley.edu/~breiman/randomforest2001.pdf
http://www.stat.berkeley.edu/~breiman/Using_random_forests_V3.1.pdf
https://www.youtube.com/watch?v=3kYujfDgmNk
http://www.rinfinance.com/agenda/2015/talk/MarkSeligman.pdf
Hola Emmanuel Santana,
ResponderEliminarMuchas gracias po compartir este post, muy explicativo.
Felicidades,
Fabioo C
Buenas, no puedo ver bien el árbol a la derecha (las etiquetas). Podrias resubirlo por favor?
ResponderEliminarAlgunas implementaciones no hacen el voto por mayoría sino el voto suave (soft voting en inglés). Esta forma de votar hace que las predicciones de los árboles con más confianza cuentan más que las predicciones con menos. Por lo menos, en la implementación de python de scikit-learn es así.
ResponderEliminar