ÎncepețiÎncepe gratuit

Arbori cu gradient boosting: modelare

Gradient boosting este o tehnică de îmbunătățire a performanței altor modele. Ideea de bază este că rulezi un model slab, dar ușor de calculat. Apoi înlocuiești valorile răspuns cu reziduurile acelui model și antrenezi un alt model. „Adunând" modelul inițial de predicție a răspunsului cu noul model de predicție a reziduurilor, obții un model mai precis. Acest proces se poate repeta la nesfârșit: de fiecare dată rulezi un model nou care prezice reziduurile modelului anterior, iar rezultatele se cumulează. La fiecare iterație, modelul devine tot mai puternic.

Pentru un exemplu concret: sparklyr folosește arbori cu gradient boosting, adică gradient boosting în care modelul slab, dar ușor de calculat este un arbore de decizie. Aceștia pot fi utilizați atât pentru probleme de clasificare (unde variabila răspuns este categorică), cât și pentru probleme de regresie (unde variabila răspuns este continuă). În cazul regresiei, pe care îl vei folosi aici, măsura în care un punct a fost slab ajustat este reziduul.

Arborii de decizie sunt tratați în mai multă detaliu în cursurile Supervised Learning in R: Classification și Supervised Learning in R: Regression. Cel din urmă acoperă și gradient boosting.

Pentru a rula un model cu arbori cu gradient boosting în sparklyr, apelează ml_gradient_boosted_trees(). Modul de utilizare al acestei funcții a fost discutat în primul exercițiu al acestui capitol.

Acest exercițiu face parte din cursul

Introducere în Spark cu sparklyr în R

Vezi cursul

Instrucțiuni pentru exercițiu

O conexiune Spark a fost creată pentru tine sub numele spark_conn. Un tibble atașat la datele combinate și filtrate despre melodii (metadate și timbre), stocate în Spark, a fost predefinit ca track_data_to_model_tbl.

  • Obține coloanele care conțin șirul "timbre" pentru a le folosi ca caracteristici.
    • Folosește colnames() pentru a obține numele coloanelor din track_data_to_model_tbl. Reține că names() nu îți va da rezultatul dorit.
    • Folosește str_subset() pentru a filtra coloanele.
    • Argumentul pattern al acestei funcții trebuie să fie fixed("timbre").
    • Atribuie rezultatul variabilei feature_colnames.
  • Creează formula pentru model folosind reformulate().
    • Argumentul termlabels (variabilele de intrare ale formulei) trebuie să fie feature_colnames.
    • Argumentul response (variabila de ieșire a formulei) trebuie să fie "year".
    • Atribuie rezultatul variabilei year_formula.
    • Folosind reformulate() în acest mod, toate variabilele din feature_colnames sunt combinate cu semnul + pentru a forma partea dreaptă a formulei formula. Rezultatul este o formulă de tipul year ~ timbre1 + timbre2 + ... + timbre12, care definește relația dintre variabilele incluse în model.
  • Rulează modelul cu gradient boosting.
    • Apelează ml_gradient_boosted_trees() cu year_formula, pe care tocmai ai creat-o, ca singurul argument.
    • Atribuie rezultatul variabilei gradient_boosted_trees_model.

Exercițiu interactiv practic

Încearcă acest exercițiu completând acest cod de exemplu.

# 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
  ___
Editează și rulează codul