Gradientboostade träd: modellering
Gradientboostning är en teknik för att förbättra prestandan hos andra modeller. Grundidén är att du tränar en enkel men lättberäknad modell. Sedan ersätter du responsvariabelns värden med residualerna från den modellen och anpassar en ny modell. Genom att "addera" den ursprungliga förutsägelsemodellen och den nya residualmodellen får du en mer träffsäker modell. Du kan upprepa den här processen om och om igen – varje ny modell förutsäger residualerna från den föregående – och summerar resultaten. För varje iteration blir modellen starkare och starkare.
För att ge ett konkret exempel: sparklyr använder gradientboostade träd, det vill säga gradientboostning med beslutsträd som den enkla grundmodellen. De kan användas både för klassificeringsproblem (där responsvariabeln är kategorisk) och regressionsproblem (där responsvariabeln är kontinuerlig). I regressionsfallet, som du använder här, mäts hur dåligt en datapunkt anpassades med hjälp av residualen.
Beslutsträd behandlas mer ingående i kurserna Supervised Learning in R: Classification och Supervised Learning in R: Regression. Den senare kursen tar också upp gradientboostning.
För att köra en modell med gradientboostade träd i sparklyr, anropa ml_gradient_boosted_trees(). Användningen av den här funktionen beskrevs i det första exemplet i kapitlet.
Den här övningen är en del av kursen
Introduktion till Spark med sparklyr i R
Övningsinstruktioner
En Spark-anslutning har skapats åt dig som spark_conn. En tibble kopplad till den kombinerade och filtrerade spår-metadata/klangfärgsdata som lagrats i Spark är fördefinierad som track_data_to_model_tbl.
- Hämta de kolumner som innehåller strängen
"timbre"för att använda som särdrag.- Använd
colnames()för att hämta kolumnnamnen itrack_data_to_model_tbl. Observera attnames()inte ger dig vad du behöver. - Använd
str_subset()för att filtrera kolumnerna. - Argumentet
patterntill den funktionen ska varafixed("timbre"). - Tilldela resultatet till
feature_colnames.
- Använd
- Skapa
formulaför modellen med hjälp avreformulate().- Argumentet
termlabels(formelns indata) ska varafeature_colnames. - Argumentet
response(formelns utdata) ska vara"year". - Tilldela resultatet till
year_formula. - Att använda
reformulate()på det här sättet kombinerar alla variabler ifeature_colnamesmed ett+-tecken och bildar den högra sidan avformula. Resultatet blir en formel av typenyear ~ timbre1 + timbre2 + ... + timbre12, som definierar sambandet mellan de variabler som ska ingå i modellen.
- Argumentet
- Kör gradientboostningsmodellen.
- Anropa
ml_gradient_boosted_trees()medyear_formulasom enda argument. - Tilldela resultatet till
gradient_boosted_trees_model.
- Anropa
Interaktiv övning med praktiskt arbete
Testa den här övningen genom att slutföra den här exempelkoden.
# 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
___