Aan de slagBegin gratis

Gradient boosted trees: modelleren

Gradient boosting is een techniek om de prestaties van andere modellen te verbeteren. Het idee is dat je een zwak maar snel te berekenen model draait. Daarna vervang je de responswaarden door de residuen van dat model en pas je nog een model toe. Door het oorspronkelijke model voor de respons te “tellen bij” het nieuwe model dat de residuen voorspelt, krijg je een nauwkeuriger model. Dit proces kun je blijven herhalen: je traint steeds nieuwe modellen op de residuen van de vorige modellen en telt de resultaten op. Bij elke iteratie wordt het model sterker.

Als concreet voorbeeld gebruikt sparklyr gradient boosted trees: gradient boosting met beslissingsbomen als het zwakke maar snelle basismodel. Deze kun je gebruiken voor zowel classificatieproblemen (waar de responsvariabele categorisch is) als regressieproblemen (waar de responsvariabele continu is). In het regressiegeval, zoals je hier doet, is de maat voor hoe slecht een punt is gefit het residu.

Beslissingsbomen komen uitgebreider aan bod in de cursussen Supervised Learning in R: Classification en Supervised Learning in R: Regression. In die laatste cursus komt ook gradient boosting aan bod.

Om een gradient boosted trees-model in sparklyr te draaien, roep je ml_gradient_boosted_trees() aan. Het gebruik van deze functie is besproken in de eerste oefening van dit hoofdstuk.

Deze oefening maakt deel uit van de cursus

Introductie tot Spark met sparklyr in R

Bekijk cursus

Oefeninstructies

Er is al een Spark-verbinding voor je aangemaakt als spark_conn. Een tibble die is gekoppeld aan de gecombineerde en gefilterde trackmetadata/timbre-gegevens in Spark is vooraf gedefinieerd als track_data_to_model_tbl.

  • Haal de kolommen op die de string "timbre" bevatten om als features te gebruiken.
    • Gebruik colnames() om de kolomnamen van track_data_to_model_tbl op te halen. Let op: names() geeft je hier niet wat je nodig hebt.
    • Gebruik str_subset() om de kolommen te filteren.
    • Het pattern-argument van die functie moet fixed("timbre") zijn.
    • Ken het resultaat toe aan feature_colnames.
  • Maak de formula voor het model met reformulate().
    • Het argument termlabels (inputs van de formule) moet feature_colnames zijn.
    • Het argument response (output van de formule) moet "year" zijn.
    • Ken het resultaat toe aan year_formula.
    • Door reformulate() zo te gebruiken, worden alle variabelen in feature_colnames met een + gecombineerd tot de rechterkant van de formula. Dit levert een formule op year ~ timbre1 + timbre2 + ... + timbre12, die de relatie tussen de variabelen definieert die in het model worden opgenomen.
  • Draai het gradient boosting-model.
    • Roep ml_gradient_boosted_trees() aan met de door jou gemaakte year_formula als enige argument.
    • Ken het resultaat toe aan gradient_boosted_trees_model.

Interactieve oefening met praktijkervaring

Probeer deze oefening door deze voorbeeldcode aan te vullen.

# 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
  ___
Code bewerken en uitvoeren