Gradient boosted trees: modellazione
Il gradient boosting è una tecnica per migliorare le prestazioni di altri modelli. L’idea è di partire da un modello debole ma facile da calcolare. Poi sostituisci i valori di risposta con i residui di quel modello e adatti un altro modello. “Sommando” il modello di previsione della risposta originale e il nuovo modello di previsione dei residui, ottieni un modello più accurato. Puoi ripetere questo processo più volte, addestrando nuovi modelli per prevedere i residui dei modelli precedenti e sommando i risultati. A ogni iterazione, il modello diventa sempre più forte.
Per un esempio più concreto, sparklyr usa i gradient boosted trees, cioè fa gradient boosting usando alberi decisionali come modello debole ma veloce da calcolare. Questi possono essere usati sia per problemi di classificazione (quando la variabile risposta è categorica) sia per problemi di regressione (quando la variabile risposta è continua). Nel caso della regressione, che userai qui, la misura di quanto male è stato adattato un punto è il residuo.
Gli alberi decisionali sono trattati più in profondità nei corsi Supervised Learning in R: Classification e Supervised Learning in R: Regression. Quest’ultimo corso copre anche il gradient boosting.
Per eseguire un modello di gradient boosted trees in sparklyr, chiama ml_gradient_boosted_trees(). L’uso di questa funzione è stato discusso nel primo esercizio di questo capitolo.
Questo esercizio fa parte del corso
Introduzione a Spark con sparklyr in R
Istruzioni dell'esercizio
È stata creata per te una connessione Spark come spark_conn. È stata anche predefinita una tibble collegata ai metadati dei brani/timbre combinati e filtrati archiviati in Spark, chiamata track_data_to_model_tbl.
- Recupera le colonne che contengono la stringa
"timbre"da usare come feature.- Usa
colnames()per ottenere i nomi delle colonne ditrack_data_to_model_tbl. Nota chenames()non ti darà ciò che ti serve. - Usa
str_subset()per filtrare le colonne. - L’argomento
patterndi quella funzione dovrebbe esserefixed("timbre"). - Assegna il risultato a
feature_colnames.
- Usa
- Crea la
formulaper il modello usandoreformulate().- L’argomento
termlabels(input della formula) deve esserefeature_colnames. - L’argomento
response(output della formula) deve essere"year". - Assegna il risultato a
year_formula. - Usare
reformulate()in questo modo combina tutte le variabili infeature_colnamescon un segno+per formare il lato destro dellaformula. Questo produce una formulayear ~ timbre1 + timbre2 + ... + timbre12, che definisce la relazione tra le variabili da includere nel modello.
- L’argomento
- Esegui il modello di gradient boosting.
- Chiama
ml_gradient_boosted_trees()con il solo argomentoyear_formulache hai creato. - Assegna il risultato a
gradient_boosted_trees_model.
- Chiama
esercizio interattivo pratico
Prova questo esercizio completando questo codice di esempio.
# track_data_to_model_tbl has been pre-defined
track_data_to_model_tbl
feature_colnames <- track_data_to_model_tbl %>%
# Get the column names
___ %>%
# Limit to the timbre columns
___(___(___))
feature_colnames
# Create the formula for the model
year_formula <- ___
gradient_boosted_trees_model <- track_data_to_model_tbl %>%
# Run the gradient boosted trees model
___