Random Forest en R

Uso: Clasificador de clases preestablecidas

Descripción: El método de Random Forest es una modificación del método Bagging, utiliza una serie de árboles de decisión, con el fin de mejorar la tasa de clasificación.

Variable dependiente: métricas y/o no métricas

Variables independientes: métricas y/o no 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 el paquete específico del método Random Forest
library(randomForest)

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

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

# Ajustar modelo
modelo <- randomForest(Species~., data=datos.entreno)

# Resumen del ajuste del modelo
modelo
## 
## Call:
##  randomForest(formula = Species ~ ., data = datos.entreno) 
##                Type of random forest: classification
##                      Number of trees: 500
## No. of variables tried at each split: 2
## 
##         OOB estimate of  error rate: 4.76%
## Confusion matrix:
##            setosa versicolor virginica class.error
## setosa         35          0         0  0.00000000
## versicolor      0         36         2  0.05263158
## virginica       0          3        29  0.09375000
# Importancia de las variables
modelo$importance
##              MeanDecreaseGini
## Sepal.Length         7.223687
## Sepal.Width          1.321541
## Petal.Length        32.289761
## Petal.Width         28.240792
# Hacer predicciones
predicciones <- predict(modelo, datos.test)

# Matriz de confusión
(mc <- with(datos.test,table(predicciones, Species)))
##             Species
## predicciones setosa versicolor virginica
##   setosa         15          0         0
##   versicolor      0         11         3
##   virginica       0          1        15
# % correcto
100 * sum(diag(mc)) / sum(mc)
## [1] 91.11111

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

Autor: Diego Calvo