Code
- 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.
Teorema
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.
set.seed(1234)
3Boston_part <- initial_split(Boston,prop = 0.80, strata = "chas")
Boston_entr <- training(Boston_part)
Boston_test <- testing(Boston_part)
initial_split
.
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.
4rf_fit <- fit(rf_spec, medv ~ ., data = Boston_entr)
augment(rf_fit, new_data = Boston_test) |>
5 rmse(truth = medv, estimate = .pred)
# A tibble: 1 × 3
.metric .estimator .estimate
<chr> <chr> <dbl>
1 rmse standard 5.21
---
title: "Random Forest"
author: "Teorema"
date: "2024-01-15"
categories: [code, analysis]
---
Este es un post con código ejecutable que explica el algoritmo de machine learning denominado **Random Forest** usando el ecosistema **tidymodels**.
```{r}
#| label: inicio
#| class-output: output
pacman::p_load(tidyverse, tidymodels, janitor, randomForest, ISLR2) # <1>
rf_spec <- rand_forest(mtry = .cols()) %>%
set_engine("randomForest", importance = TRUE) %>%
set_mode("regression") # <2>
```
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.
```{r}
#| label: particionamiento
#| class-output: output
set.seed(1234)
Boston_part <- initial_split(Boston,prop = 0.80, strata = "chas") # <3>
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.
```{r}
#| label: ajuste
#| class-output: output
rf_fit <- fit(rf_spec, medv ~ ., data = Boston_entr) # <4>
```
4. Ajuste de datos sin ajuste de hiperparámetros.
```{r}
#| label: estimac_testing
#| class-output: output
augment(rf_fit, new_data = Boston_test) |>
rmse(truth = medv, estimate = .pred) # <5>
```
5. Estimación de *precio mediano de la vivienda* en partición *testing*.
```{r}
#| label: fig-estimac_testing
#| fig-cap: Ajuste de valores estimados en relación a observados
#| class-output: output
#| fig-alt: |
#| 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.
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
```