Bygga och justera en random forest-modell

Maskininlärning med Tidyverse

Dmitriy (Dima) Gorenshteyn

Lead Data Scientist, Memorial Sloan Kettering Cancer Center

Korsvalideringsprestanda

Maskininlärning med Tidyverse

Korsvalideringsprestanda

Maskininlärning med Tidyverse

Korsvalideringsprestanda

Maskininlärning med Tidyverse

Korsvalideringsprestanda

Maskininlärning med Tidyverse

Linjär regressionsmodell

 

Validera medelabsolutfel:

1,5 år

Maskininlärning med Tidyverse

En annan modell

Maskininlärning med Tidyverse

Fördelar med random forest

  • Hanterar icke-linjära samband
  • Hanterar interaktioner
Maskininlärning med Tidyverse

Grundläggande random forest-verktyg

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

 

Prediktion
prediction <- predict(rf_model, new_data)$predictions
Maskininlärning med Tidyverse

Bygg grundläggande random forest-modeller

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))
Maskininlärning med Tidyverse

Hyperparametrar i ranger

Modell
rf_model <- ranger(formula, data, seed, mtry, num.trees)
Hyperparametrar
namn intervall standard
mtry $1:number\ of\ features$ $\sqrt{number\ of\ feat}$
num.trees $1:\infty$ $500$
Maskininlärning med Tidyverse

Justera hyperparametrarna

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
Maskininlärning med Tidyverse

Justera hyperparametrarna

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>
Maskininlärning med Tidyverse

Nu kör vi en övning!

Maskininlärning med Tidyverse

Preparing Video For Download...