code
analysis
Author

Teorema

Published

December 6, 2023

Este es un post con código ejecutable que explica el algoritmo de machine learning denominado Random Forest usando el ecosistema tidymodels.

Code
1pacman::p_load(tidyverse, tidymodels, janitor, randomForest, ISLR2)

rf_spec <- rand_forest(mtry = .cols()) %>%
  set_engine("randomForest", importance = TRUE) %>%
2  set_mode("regression")
1
Carga de librerías. Note que es necesario cargar la librería randomForest.
2
Especificación genérica del modelo. La técnica de Random Forest es una variante del método Bagging. En principio, se usan todas las posibles variables explicativas.
Code
set.seed(1234)
3Boston_part <- initial_split(Boston,prop = 0.80, strata = "chas")

Boston_entr <- training(Boston_part)
Boston_test <- testing(Boston_part)
3
Particionamiento de datos, usando la función initial_split.

Consideraciones importantes

La función randomForest tiene varios argumentos. Uno de los más importantes es mtry. Este hiperparámetro define el número de variables aleatoriamente muestreadas que se constituyen como candidatas en cada particionamiento. En tarea de regresión el valor por defecto es p/3. En clasificación es sqrt(p). En donde p es el número de variables del conjunto de datos original.

Code
4rf_fit <- fit(rf_spec, medv ~ ., data = Boston_entr)
4
Ajuste de datos sin ajuste de hiperparámetros.
Code
augment(rf_fit, new_data = Boston_test) |> 
5  rmse(truth = medv, estimate = .pred)
5
Estimación de precio mediano de la vivienda en partición testing.
# A tibble: 1 × 3
  .metric .estimator .estimate
  <chr>   <chr>          <dbl>
1 rmse    standard        5.21
Code
augment(rf_fit, new_data = Boston_test) |> 
  ggplot(aes(medv, .pred)) +
  geom_abline() +
  geom_point(alpha = 0.5) # <5> Graficación de la estimación
Scatter chart. medv along the x-axis and .pred along the y-axis. A diagonal line have been added, most of the points follows fairly close to the line, with points for high values of medv being under the line.
Figure 1: Ajuste de valores estimados en relación a observados