Come far crescere il tuo albero

Machine Learning con modelli ad albero in R

Sandro Raabe

Data Scientist

Dataset Diabetes

head(diabetes)
# A tibble: 6 x 9
  outcome pregnancies glucose blood_pressure skin_thickness insulin   bmi    age
  <fct>         <int>   <int>          <int>          <int>   <int> <dbl>  <int>
1 yes               6     148             72             35       0  33.6     50
2 no                1      85             66             29       0  26.6     31
3 yes               8     183             64              0       0  23.3     32
Machine Learning con modelli ad albero in R

Usare l’intero dataset

  • Hai usato tutti i dati per il training: non restano dati per testare il modello

model_flow_1

Machine Learning con modelli ad albero in R

Divisione dei dati

divisione dati

modello e valutazione

Machine Learning con modelli ad albero in R

Metodi di split

metodi di split

metodi_di_split2

metodi_di_split3

Machine Learning con modelli ad albero in R

La funzione initial_split()

  • Divide i dati in modo casuale in un solo training set e un solo test set
# Suddividi i dati in proporzione (default: 0.75)
diabetes_split <- initial_split(diabetes, prop = 0.9)
diabetes_split
<Analysis/Assess/Total>
<692/76/768>
1 dal pacchetto rsample
Machine Learning con modelli ad albero in R

Funzioni training() e testing()

  • Estrai training e test set da uno split dei dati
diabetes_train <- training(diabetes_split)

diabetes_test <- testing(diabetes_split)
  • Verifica:
    nrow(diabetes_train)/nrow(diabetes)
    
[1] 0.9007812
1 da rsample
Machine Learning con modelli ad albero in R

Evita squilibri di classe

# Conteggio nel training degli esiti 'yes' e 'no'
counts_train <- table(diabetes_train$outcome)
counts_train
 no yes 
490 86
# Proporzione di 'yes' nel training
prop_yes_train <- counts_train["yes"]/ 
                  sum(counts_train)
prop_yes_train
0.15
# Conteggio nel test degli esiti 'yes' e 'no'
counts_test <- table(diabetes_test$outcome)
counts_test
 no yes 
 28  48
# Proporzione di 'yes' nel test
prop_yes_test <- counts_test["yes"]/ 
                  sum(counts_test)
prop_yes_test
0.63
Machine Learning con modelli ad albero in R

Soluzione: imporsi distribuzioni simili

initial_split(diabetes, 
              prop = 0.9, 
              strata = outcome)
  • Garantisce uno split casuale con distribuzione simile della variabile outcome
Machine Learning con modelli ad albero in R

Facciamo lo split!

Machine Learning con modelli ad albero in R

Preparing Video For Download...