sábado, 4 de julio de 2015

Ensamble de RandomForest + SVM + C5

El siguiente script hace una combinación o ensamble de las predicciones de 3 algoritmos: randomForest, SVM, y C5.

NOTA: Los ensambles tienen mejor resultado cuando los modelos no están correlacionados entre sí, es decir que cada modelo explora diferentes hipótesis sobre los datos. Para conceptos sobre ensamble y bagging, ver nota publicada AQUI


Conceptualmente el ensamble seria así:
















El excel con imagen puede descargarse AQUI





# ----------------------------------------------------------------
# Carga libreria y datos
library(randomForest);library(e1071); library(foreach); 
library(C50); data(churn)
Test   <- churnTest
Train  <- churnTrain
 
# ----------------------------------------------------------------
# Arbol C5.0 que viene del C4.5 que viene del ID3 de Quinlan
modelo.C5     <- C5.0(churn~.,Train) 
predict.C5    <- predict(modelo.C5, Test)
 
 
# ----------------------------------------------------------------
# randomForest de Breiman
modelo.rf     <- randomForest(churn ~., Train)
predict.rf    <- predict(modelo.rf,Test)
 
 
# ----------------------------------------------------------------
# Supor Vector Machine de AT&T Labs
modelo.svm    <- svm(churn~.,Train)
predict.svm   <- predict(modelo.svm,Test)
 
# ----------------------------------------------------------------
# ensamble de los 3 modelos anteriores
ensamble          <- data.frame(predict.rf, predict.svm, predict.C5)
ensamble$Cant.yes <- rowSums(ensamble[, 1:3] == "yes")
ensamble$Cant.no  <- rowSums(ensamble[, 1:3] == "no")
ensamble$predict  <- ifelse(ensamble$Cant.yes>ensamble$Cant.no,"yes","no")
 
# ----------------------------------------------------------------
# Matriz de Confusion
table(Test$churn,ensamble$predict)



Referencia:
http://www.r-bloggers.com/an-intro-to-ensemble-learning-in-r/



 

No hay comentarios:

Publicar un comentario