Gradient boosting
Også kendt som: gradient boosted trees, GBM, XGBoost
En metode, der tilføjer små beslutningstræer ét ad gangen, hvor hvert nyt træ bygges til at rette de fejl, de tidligere træer stadig laver.
Kladde - dette opslag er endnu ikke gennemgået.
Formelt
En måde at bygge en stærk model af mange svage på, som regel små beslutningstræer, hvor hvert nyt træ trænes på det, den nuværende model stadig tager fejl af målt med en tabsfunktion, og lægges til med en lille vægt.
Forklaret enkelt
Som et hold redaktører, der sender en tekst videre. Den første retter de værste fejl, den næste retter det, den første overså, og efter mange runder er der meget få fejl tilbage.
I praksis
En dansk netbutik forudsiger, hvilke ordrer der bliver sendt retur, ud fra varen, prisen, kundens historik og tidspunktet, og har fundet det mere præcist end de andre metoder, den har prøvet.
Hvorfor det betyder noget
Det er ofte det mest præcise valg til data i tabeller som bank-, salgs- eller sundhedsdata og vinder mange offentlige konkurrencer der, ofte foran deep learning.
Teknisk uddybning
Boosting bygger en additiv model F(x) = summen af nu * h_m(x) trin for trin. Friedman (2001, Annals of Statistics) formulerede det som gradientnedstigning i funktionsrummet: I hvert trin tilpasses en ny svag model h_m, typisk et lille regressionstræ, til den negative gradient af tabet med hensyn til de nuværende forudsigelser (pseudo-residualerne) og lægges til med en skrumpningsfaktor, læringsraten nu. Ved kvadreret fejl er pseudo-residualerne blot residualerne; andre differentiable tabsfunktioner giver log-loss til klassifikation eller Huber- og kvantiltab til robust regression. AdaBoost (Freund og Schapire, 1997) er en tidligere boostingmetode, der viser sig at være et specialtilfælde med eksponentielt tab.
De vigtigste hyperparametre påvirker hinanden: En mindre læringsrate kræver flere træer, men generaliserer som regel bedre; træernes dybde (ofte 3 til 8 niveauer) styrer, hvor mange features der kan spille sammen; og udvælgelse af rækker eller kolonner pr. træ (stochastic gradient boosting, Friedman 2002) virker regulariserende. Fordi hvert træ retter de foregående, mindsker boosting især bias og kan, i modsætning til en random forest, overtilpasse, når der tilføjes flere træer, så antallet af runder fastsættes med early stopping på et valideringssæt.
Moderne biblioteker har gjort metoden hurtig og dominerende på tabeldata. XGBoost (Chen og Guestrin, KDD 2016) tilføjede en andenordens approksimation af tabet, eksplicitte L1- og L2-straffe på bladvægte, sparsity-bevidst søgning efter opdelinger og cachebevidst parallel opbygning. LightGBM (Ke m.fl., 2017) bruger histogrambaserede opdelinger og bladvis vækst, og CatBoost (Prokhorenkova m.fl., 2018) bruger ordered boosting og indbygget håndtering af kategoriske features. scikit-learn tilbyder HistGradientBoostingClassifier og -Regressor i samme histogramstil.
Benchmarks som Grinsztajn m.fl. (2022) fandt, at træbaserede ensembler stadig slår deep learning på typiske mellemstore tabeldatasæt. Prisen er sekventiel træning, der kun kan paralleliseres inden for et træ, mere følsom tuning end random forests og forudsigelser, der ikke kan ekstrapolere ud over det interval, der blev set under træningen.
Hvad du bør lære først
Alt det, dette bygger på - grundlaget først.
Relationer
- Forudsætter
- BeslutningstræTabsfunktion (loss function)
- Alternativ til
- Random forest
- Bruges sammen med
- Feature engineering
Kilder og videre læsning
Officiel dokumentation
- scikit-learn User Guide, 1.11 Ensembles: gradient boosting · scikit-learn
Opslagsværker
- Friedman (2001), Greedy Function Approximation: A Gradient Boosting Machine · Annals of Statistics
- Chen & Guestrin (2016), XGBoost: A Scalable Tree Boosting System · ACM SIGKDD
- Grinsztajn, Oyallon & Varoquaux (2022), Why do tree-based models still outperform deep learning on tabular data? · NeurIPS Datasets and Benchmarks
Hvor dataene kommer fra
Dette opslag er skrevet af en AI ud fra kilderne ovenfor og er endnu ikke gennemgået af et menneske. Brug det som udgangspunkt, og tjek alt vigtigt mod kilderne.
Se gennemgangskøenForeslå en rettelse på GitHubDette begreb som JSON
Test dig selv
Indlæser…