Gradient boosted trees: tvorba modelu
Gradient boosting je technika pro zlepšení výkonu jiných modelů. Princip spočívá v tom, že nejprve spustíš jednoduchý, ale snadno vypočitatelný model. Poté nahradíš hodnoty odezvy rezidui z tohoto modelu a natrénuješ další model. „Sečtením" původního modelu předpovídajícího odezvu a nového modelu předpovídajícího rezidua získáš přesnější model. Tento postup můžeš opakovat – vždy trénuješ nový model na reziduích předchozího a výsledky průběžně přidáváš. S každou iterací se model stává silnějším.
Konkrétněji: sparklyr využívá gradient boosted trees, tedy gradient boosting s rozhodovacími stromy jako tím jednoduchým a snadno vypočitatelným modelem. Lze je použít jak pro klasifikační úlohy (kde je proměnná odezvy kategoriální), tak pro regresní úlohy (kde je proměnná odezvy spojitá). V regresním případě, který použiješ zde, se míra špatného přizpůsobení bodu vyjadřuje reziduem.
Rozhodovacím stromům se podrobněji věnují kurzy Supervised Learning in R: Classification a Supervised Learning in R: Regression. Druhý z nich se zabývá i gradient boostingem.
Pro spuštění modelu gradient boosted trees v sparklyr zavolej ml_gradient_boosted_trees(). Použití této funkce bylo popsáno v prvním cvičení této kapitoly.
Toto cvičení je součástí kurzu
Úvod do Sparku se sparklyr v R
Pokyny k cvičení
Spark připojení bylo vytvořeno za tebe jako spark_conn. Tibble napojený na kombinovaná a filtrovaná metadata skladeb spolu s timbre daty uloženými ve Sparku je předdefinován jako track_data_to_model_tbl.
- Získej sloupce obsahující řetězec
"timbre", které použiješ jako příznaky.- Pomocí
colnames()získej názvy sloupcůtrack_data_to_model_tbl. Pozor:names()ti v tomto případě nedá požadovaný výsledek. - Pomocí
str_subset()sloupce vyfiltruj. - Argument
patterntéto funkce nastav nafixed("timbre"). - Výsledek přiřaď do
feature_colnames.
- Pomocí
- Vytvoř
formulapro model pomocíreformulate().- Argument
termlabels(vstupy vzorce) nastav nafeature_colnames. - Argument
response(výstup vzorce) nastav na"year". - Výsledek přiřaď do
year_formula. - Tímto způsobem
reformulate()spojí všechny proměnné zfeature_colnamesznaménkem+a vytvoří pravou stranu vzorceformula. Výsledkem je vzorecyear ~ timbre1 + timbre2 + ... + timbre12, který definuje vztah mezi proměnnými zahrnutými do modelu.
- Argument
- Spusť model gradient boosting.
- Zavolej
ml_gradient_boosted_trees()syear_formula, kterou jsi vytvořil/a, jako jediným argumentem. - Výsledek přiřaď do
gradient_boosted_trees_model.
- Zavolej
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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
___