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
Gracias, acabas de salvarme la vida 😉
Me alegro de que sea util para ti
Puedes explicar cómo se aplican en los modelos de bicho?
Saludos, muchas gracias por el aporte
Mil gracias
Hola, el comando datos en datos.entreno <- datos[datos.indices,] no me funciona, ¿podrías ayudarme?
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.
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)
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!