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