Budowanie i strojenie modelu lasu losowego

Uczenie maszynowe w tidyverse

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

Wydajność walidacji krzyżowej

Uczenie maszynowe w tidyverse

Wydajność walidacji krzyżowej

Uczenie maszynowe w tidyverse

Wydajność walidacji krzyżowej

Uczenie maszynowe w tidyverse

Wydajność walidacji krzyżowej

Uczenie maszynowe w tidyverse

Model regresji liniowej

 

Średni błąd bezwzględny na zbiorze walidacyjnym:

1,5 roku

Uczenie maszynowe w tidyverse

Inny model

Uczenie maszynowe w tidyverse

Zalety lasu losowego

  • Obsługuje nieliniowe zależności
  • Obsługuje interakcje
Uczenie maszynowe w tidyverse

Podstawowe narzędzia lasu losowego

Model
rf_model <- ranger(formula = ___, data = ___, seed = ___)

 

Predykcja
prediction <- predict(rf_model, new_data)$predictions
Uczenie maszynowe w tidyverse

Budowanie podstawowych modeli lasu losowego

library(ranger)
cv_models_rf <- cv_data %>% 
 mutate(model = map(train, ~ranger(formula = life_expectancy~., 
                                    data = .x, seed = 42)))
cv_prep_rf <- cv_models_rf %>% 
 mutate(validate_predicted = map2(model, validate, 
                                  ~predict(.x, .y)$predictions))
Uczenie maszynowe w tidyverse

Hiperparametry ranger

Model
rf_model <- ranger(formula, data, seed, mtry, num.trees)
Hiperparametry
nazwa zakres domyślna
mtry $1:number\ of\ features$ $\sqrt{number\ of\ feat}$
num.trees $1:\infty$ $500$
Uczenie maszynowe w tidyverse

Strojenie hiperparametrów

cv_tune <- cv_data %>% 
  crossing(mtry = 1:5)

cv_tune
# A tibble: 25 x 5
   splits       id    train                validate            mtry
   <list>       <chr> <list>               <list>             <int>
 1 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [601 × 7]>     1
 2 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [601 × 7]>     2
 3 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [601 × 7]>     3
 4 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [601 × 7]>     4
 5 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [601 × 7]>     5
 6 <S3: rsplit> Fold2 <tibble [2,402 × 7]> <tibble [601 × 7]>     1
 7 <S3: rsplit> Fold2 <tibble [2,402 × 7]> <tibble [601 × 7]>     2
Uczenie maszynowe w tidyverse

Strojenie hiperparametrów

cv_model_tunerf <- cv_tune %>% 
  mutate(model = map2(train, mtry, ~ranger(formula = life_expectancy~., 
                                           data = .x, mtry = .y)))

cv_model_tunerf
# A tibble: 25 x 6
   splits       id    train                validate      mtry  model       
 * <list>       <chr> <list>               <list>        <int> <list>      
 1 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [60…   1    <S3: ranger>
 2 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [60…   2    <S3: ranger>
 3 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [60…   3    <S3: ranger>
 4 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [60…   4    <S3: ranger>
 5 <S3: rsplit> Fold1 <tibble [2,402 × 7]> <tibble [60…   5    <S3: ranger>
 6 <S3: rsplit> Fold2 <tibble [2,402 × 7]> <tibble [60…   1    <S3: ranger>
 7 <S3: rsplit> Fold2 <tibble [2,402 × 7]> <tibble [60…   2    <S3: ranger>
Uczenie maszynowe w tidyverse

Czas na ćwiczenia!

Uczenie maszynowe w tidyverse

Preparing Video For Download...