1. Nauka
  2. /
  3. Kursy
  4. /
  5. Wprowadzenie do Spark z pakietem sparklyr w R

Connected

ćwiczenie

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.

Instrukcje

100 XP

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 kolumn track_data_to_model_tbl. Uwaga: names() nie da ci tego, czego potrzebujesz.
    • Użyj str_subset(), aby przefiltrować kolumny.
    • Argument pattern tej funkcji powinien mieć wartość fixed("timbre").
    • Przypisz wynik do feature_colnames.
  • Utwórz formula dla modelu, używając reformulate().
    • 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 z feature_colnames znakiem +, tworząc prawą stronę formula. W efekcie powstaje formuła year ~ timbre1 + timbre2 + ... + timbre12, która określa zależności między zmiennymi uwzględnionymi w modelu.
  • Uruchom model gradient boosting.
    • Wywołaj ml_gradient_boosted_trees(), przekazując jako jedyny argument year_formula.
    • Przypisz wynik do gradient_boosted_trees_model.