Random Forest en R

por | Oct 3, 2016 | R | 8 Comentarios

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

8 Comentarios

  1. Falco

    Gracias, acabas de salvarme la vida 😉

    Responder
    • Diego Calvo

      Me alegro de que sea util para ti

      Responder
  2. Yeferson Jesús Álvarez Gómez

    Puedes explicar cómo se aplican en los modelos de bicho?

    Responder
  3. Andres Ochoa

    Saludos, muchas gracias por el aporte
    Mil gracias

    Responder
  4. Andrea L.

    Hola, el comando datos en datos.entreno <- datos[datos.indices,] no me funciona, ¿podrías ayudarme?

    Responder
  5. Juan

    Hola Diego, gran aporte.

    Te quiero preguntar qué formato debe tener la base de datos que utilizas: entiendo que la base «iris» contiene la información de las flores, imagino que las columnas son las distintas características y las filas serán las muestras, pero ¿cómo se hace la clasificación? ¿Hay algún indicador, como que la última columna contenga la especie?

    Gracias por la información, un saludo.

    Responder
    • Diego Calvo

      La base de datos no tiene porque tener ningún formato en especial, siempre que te deje leerle claro. En cuanto a la posición de la variable a predecir por la que me preguntas tampoco tiene que estar en la última posición, simplemente en el método de random forest debes de especificar cual es esa variable. Ejemplo: randomForest(Species~., data=datos.entreno)

      Responder
  6. carolina

    Hola Diego, una pregunta, estoy haciendo un modelo con Random Forest de regresión pero las variables aunque están correlacionadas y son significativas, sólo me explican el 9% de los datos de la variable respuesta. ¿Sabes esto por qué se da? o ¿si debería hacer otro tipo de pruebas antes? hice test de correlación para variables cuantitativas y anova para las cuali.

    Gracias!

    Responder

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *