Una forma de mejorar un modelo predictivo es usando la técnica creada por Leo Breiman que denominó Bagging (o Agregacion de clasificadores). Esta técnica consiste en crear diferentes modelos usando muestras aleatorias con reemplazo y luego combinar o ensamblar los resultado
Bagging fue propuesto por Breiman en 1996 y se basa en los métodos de remuestreo y de agregación, ya que presentan propiedades beneficiosas. Bootstrapping consiste en obtener muestras aleatorias con reemplazamiento de igual tamaño que el conjunto original. Partiendo del conjunto de entrenamiento \(X= (X1, X2, ....,Xn)\), mediante la extracción aleatoria con reemplazamiento con el mismo número de elementos que el conjunto original de n elementos, se obtienen \(B\) muestras bootstrap \(X^b= (X1^b, X2^b, ...., Xn^b)\) donde \(b=1, 2,.., B\). En algunas de estas muestras se habrá eliminado o al menos reducido la presencia de observaciones ruidosas, por lo que el clasificador construido en ese conjunto presentará un mejor comportamiento que el clasificador construido en el conjunto original. Así pues Bagging puede ser útil para construir un mejor clasificador cuando el conjunto de entrenamiento presente observaciones ruidosas.
1.- Divide el conjunto de Entrenamiento en distintos conjuntos de datos, obteniendo como resultado diferentes muestras aleatorias con las siguientes características:
Muestra uniforme (misma cantidad de individuos en cada set).
Muestras con reemplazo (los individuos pueden repetirse en el mismo conjunto de datos).
El tamaño de la muestra es igual al tamaño del connunto de entrenamiento, pero no contiene a todos los individuos ya que algunos se repiten.
Si se usan muestras sin reemplazo, suele elegirse el 50% de los datos como tamaño de muestra.
2.-Luego se crea un modelo predictivo con cada conjunto, obteniendo modelos diferentes.
3.- Luego se construye o ensambla un único modelo predictivo, que es el promedio de todos los modelos.
El método de clasificación Bagging es una técnica clasificatoria que busca conseguir,una vez combinado los datos de entrenamiento y los datos de evaluación a obtener un clasificador con mejores propiedades,donde se reduzca el error tanto de regresión como de clasificación.
Disminuye la varianza de un conjunto de datos al realizar remuestreo con reemplazo.
Si no existe varianza en el conjunto de datos, la técnica de Baggin no mejora significativamente el modelo.
Es recomendable en modelos de alta inestabilidad (conjunto de datos con mucha varianza).
Mientras más inestable es un modelo, mejor será la predicción al usar Bagging.
Se reduce la sobrecarga o sobre entrenamiento de modelos. Esto porque los modelos no pueden sobreaprender o memorizar ya que ninguno tiene todos los datos de entrenamiento.
Mejora la predicción, ya que lo que no detecta un modelo lo detectan los otros.
No mejora significativamente las funciones lineales, ya que el ensamble de una función lineal da como resultado otra función lineal.
Una técnica mejorada del Bagging es el Random Forest, que además de elegir un grupo aleatorio de individuos, también elige un grupo aleatorio de variables.
Los diferentes modelos creados con la técnica Bagging pueden considerarse como algoritmos que buscan respuestas (o hipótesis) en un data set. Como cada algoritmo tiene un set de datos diferentes, cada uno creará una hipótesis diferentes sobre la realidad
Para este ejemplo se urilizó la base de datos iris.
library(MASS)
library(DMwR2)
library(rpart)
library(adabag)
library(ipred)
data("iris")
head(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.1 3.5 1.4 0.2 setosa
2 4.9 3.0 1.4 0.2 setosa
3 4.7 3.2 1.3 0.2 setosa
4 4.6 3.1 1.5 0.2 setosa
5 5.0 3.6 1.4 0.2 setosa
6 5.4 3.9 1.7 0.4 setosa
Se divide la base de datos iris en dos: La primera parte que es el 80% se va a utilizar para el entrenamiento del algoritmo y lo restante es para medir la capacidad del modelo.
set.seed(123)
tamanoTrain <- sample(1:nrow(iris), size = round(nrow(iris) * 0.8, 0))
train <- iris[tamanoTrain, ]
test <- iris[-tamanoTrain, ]
set.seed(123)
Predecir el tipo de especie de una flor.
mod1 <- adabag::bagging(Species ~ ., train, mfinal = 10)
ps <- predict(mod1, test)
A continuación se presenta la matriz de confusión y el error
ps$confusion
Observed Class
Predicted Class setosa versicolor virginica
setosa 8 0 0
versicolor 0 9 1
virginica 0 0 12
ps$error * 100
[1] 3.333333
Se realiza una predicción con un nuevo individuo
Sepal.Length <- 4.8
Sepal.Width <- 3.3
Petal.Length <- 1.6
Petal.Width <- 0.7
d <- data.frame(Sepal.Length, Sepal.Width, Petal.Length, Petal.Width)
ps1 <- predict(mod1, d)
ps1$class
[1] "setosa"
Predecir la longitud del sepalo de una flor.
mod2 <- ipred::bagging(Sepal.Length ~ ., train, nbagg = 10)
ps2 <- predict(mod2, test)
### RMSE
rmse <- sqrt(sum((test$Sepal.Length - ps2)^2)/length(ps2)) * 100
rmse
[1] 35.04866
Se realiza una predicción con un nuevo individuo
Sepal.Width <- 3.3
Petal.Length <- 1.6
Petal.Width <- 0.7
Species <- "setosa"
d1 <- data.frame(Sepal.Width, Petal.Length, Petal.Width, Species)
ps1 <- predict(mod2, d1)
ps1
[1] 4.996728
Presione aquí para interactuar con la aplicación
La finalidad de la aplicación denominada PredictBagging es realizar predicciones de variables cualitativas y cuantitativas de cualquier base de datos externa utilizando el método Bagging. El tipo de archivo que puede ingresar en la aplicación es de tipo excel con extención .csv y .xlsx.
En la parte izquierda de la pantalla se tiene diferentes íconos en donde se puede subir una base de datos y elegir los parámetros para realizar la modelación y predicción (cada ícono se detallará mas adelante). En la parte derecha se puede encontrar 3 menús:
Base de datos .- Se visualiza la base de datos ingresada.
Datos Faltantes .- Se visualiza el número y los porcentajes de datos faltantes en caso de que la base de datos tenga valores NA´s.
Predicción .- Se visualiza un resumen de la modelación y predicción, además, tiene la opción de ingresar una base de datos de individuos nuevos para predecir.
Paso 1. Escoger la extención del archivo. (En el caso de que se elija .csv se desplegará tres íconos que permite seleccionar si la base tiene encabezado, el tipo de separador de las variables y decima. En caso de que se seleccione .xlsx se desplegará un ícono en donde se elige la hoja en donde esté la base de datos)
Paso 2. Se verifica si existe datos faltantes. En el caso de que haya o no datos faltantes se debe seleccionar el ícono Activar-Imputar Datos.
Paso 3. Se escoge la variable que se quiera predecir (Puede ser de tipo cualitativo o cuantitativo.)
Paso 4. Se escoge el porcentaje de entrenamiento para la modelación, el número de interacción y luego Analizar. Nos dirigimos al panel Predicción y esperamos a que se carge y arroge reultados.
Paso 5. Ingresamos una base de datos de tipo excel en donde esten los datos, sólo de las variables predictoras de los nuevos individuos, es decir, si la variable elegida anteriormente. Seleccionamos Predecir y se obtiene el datos predicho.