Inizia subitoInizia gratis

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

Visualizza corso

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 di track_data_to_model_tbl. Nota che names() non ti darà ciò che ti serve.
    • Usa str_subset() per filtrare le colonne.
    • L’argomento pattern di quella funzione dovrebbe essere fixed("timbre").
    • Assegna il risultato a feature_colnames.
  • Crea la formula per il modello usando reformulate().
    • L’argomento termlabels (input della formula) deve essere feature_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 in feature_colnames con un segno + per formare il lato destro della formula. Questo produce una formula year ~ timbre1 + timbre2 + ... + timbre12, che definisce la relazione tra le variabili da includere nel modello.
  • Esegui il modello di gradient boosting.
    • Chiama ml_gradient_boosted_trees() con il solo argomento year_formula che hai creato.
    • Assegna il risultato a gradient_boosted_trees_model.

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
  ___
Modifica ed esegui il codice