Gradient boosted trees: modelowanie
Gradient boosting to technika poprawiania wydajności innych modeli. Idea polega na tym, że najpierw uruchamiasz słaby, ale łatwy do obliczenia model. Następnie zastępujesz wartości odpowiedzi resztami z tego modelu i dopasowujesz kolejny model. „Dodając" oryginalny model przewidywania odpowiedzi do nowego modelu przewidywania reszt, otrzymujesz dokładniejszy model. Możesz powtarzać ten proces wielokrotnie – uruchamiając kolejne modele do przewidywania reszt z poprzednich modeli i sumując wyniki. Z każdą iteracją model staje się coraz mocniejszy.
Dla bardziej konkretnego przykładu: sparklyr używa gradient boosted trees, czyli gradientowego wzmacniania z drzewami decyzyjnymi jako słabym, ale łatwym do obliczenia modelem. Można je stosować zarówno do problemów klasyfikacji (gdy zmienna odpowiedzi jest kategoryczna), jak i do problemów regresji (gdy zmienna odpowiedzi jest ciągła). W przypadku regresji – tak jak tutaj – miarą niedopasowania punktu są reszty.
Drzewa decyzyjne są omówione szczegółowo w kursach Supervised Learning in R: Classification oraz Supervised Learning in R: Regression. Ten drugi kurs obejmuje również gradient boosting.
Aby uruchomić model gradient boosted trees w sparklyr, wywołaj ml_gradient_boosted_trees(). Sposób użycia tej funkcji został omówiony w pierwszym ćwiczeniu tego rozdziału.
To ćwiczenie jest częścią kursu
Wprowadzenie do Spark z pakietem sparklyr w R
Instrukcje do ćwiczenia
Połączenie ze Sparkiem zostało już utworzone jako spark_conn. Tibble powiązany z połączonymi i przefiltrowanymi danymi metadanych/barwy utworów przechowywanymi w Sparku jest predefiniowany jako track_data_to_model_tbl.
- Pobierz kolumny zawierające ciąg
"timbre", które posłużą jako cechy.- Użyj
colnames(), aby uzyskać nazwy kolumntrack_data_to_model_tbl. Uwaga:names()nie da ci tego, czego potrzebujesz. - Użyj
str_subset(), aby przefiltrować kolumny. - Argument
patterntej funkcji powinien mieć wartośćfixed("timbre"). - Przypisz wynik do
feature_colnames.
- Użyj
- Utwórz
formuladla modelu, używającreformulate().- Argument
termlabels(wejścia formuły) powinien mieć wartośćfeature_colnames. - Argument
response(wyjście formuły) powinien mieć wartość"year". - Przypisz wynik do
year_formula. - Użycie
reformulate()w ten sposób łączy wszystkie zmienne zfeature_colnamesznakiem+, tworząc prawą stronęformula. W efekcie powstaje formułayear ~ timbre1 + timbre2 + ... + timbre12, która określa zależności między zmiennymi uwzględnionymi w modelu.
- Argument
- Uruchom model gradient boosting.
- Wywołaj
ml_gradient_boosted_trees(), przekazując jako jedyny argumentyear_formula. - Przypisz wynik do
gradient_boosted_trees_model.
- Wywołaj
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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
___