Análisis AdaBoost en R

Uso: Clasificador clases preestablecidas.

Descripción: El AdaBoost es un algoritmo de aprendizaje automático, inventado por Yoav Freund y Schapire Robert. Es un algoritmo de meta-heurístico, y se puede utilizar para aumentar el rendimiento de otros algoritmos de aprendizaje.

El nombre de “AdaBoost” viene a significar adaptación Impulso o estímulo adaptativo. Este algoritmo es adaptable en el sentido de que las clasificaciones posteriores realizados se ajustan a favor de los casos clasificados negativamente por clasificaciones anteriores.

El AdaBoost es sensible al ruido en los datos y casos aislados. Sin embargo, para algunos problemas que es menos susceptible a overfitting (sobreentrenamiento) que la mayoría de los algoritmos de aprendizaje automático.

Variable dependiente: no métricas.

Variables independientes: métricas.

Ejemplo en R: Clasificar tipo de flor atendiendo a sus características físicas como pueden ser el ancho y alto de los pétalos y sépalos.

# Carga de datos inicial, tipos de flores con diferentes características 
data(iris)
datos <- iris
View(datos)

# Selección de una submuestra de 105 (el 70% de los datos)
set.seed(101)
tamano.total <- nrow(datos)
tamano.entreno <- round(150*0.7)
datos.indices <- sample(1:tamano.total , size=tamano.entreno)
datos.entreno <- datos[datos.indices,]
datos.test <- datos[-datos.indices,]

# Cargar todos los paquetes necesarios 
library(ggplot2)
library(lattice)
library(caret)
library(nnet)
library(mlbench)
library(adabag)
library(rpart)

# Ejecución del análisis AdaBoost
modelo <- boosting(Species ~ ., data = datos.entreno)

# Importancia de cada variable
modelo$importance
## Petal.Length  Petal.Width Sepal.Length  Sepal.Width 
##    56.663847    23.959704    15.562731     3.813718
# predict necesita el parámetro newdata
predicciones <- predict(object = modelo, newdata=datos.test, type = "class")

predicciones$confusion
##                Observed Class
## Predicted Class setosa versicolor virginica
##      setosa         15          0         0
##      versicolor      0         11         3
##      virginica       0          1        15
# Correctamente clasificados
100 * sum(diag(predicciones$confusion)) / sum(predicciones$confusion)
## [1] 91.11111

 

Otros artículos que pueden ser de interés:

Autor: Diego Calvo