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
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 dintrack_data_to_model_tbl. Reține cănames()nu îți va da rezultatul dorit. - Folosește
str_subset()pentru a filtra coloanele. - Argumentul
patternal acestei funcții trebuie să fiefixed("timbre"). - Atribuie rezultatul variabilei
feature_colnames.
- Folosește
- Creează
formulapentru model folosindreformulate().- Argumentul
termlabels(variabilele de intrare ale formulei) trebuie să fiefeature_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 dinfeature_colnamessunt combinate cu semnul+pentru a forma partea dreaptă a formuleiformula. Rezultatul este o formulă de tipulyear ~ timbre1 + timbre2 + ... + timbre12, care definește relația dintre variabilele incluse în model.
- Argumentul
- Rulează modelul cu gradient boosting.
- Apelează
ml_gradient_boosted_trees()cuyear_formula, pe care tocmai ai creat-o, ca singurul argument. - Atribuie rezultatul variabilei
gradient_boosted_trees_model.
- Apelează
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
___