XGBoost
Utvecklare | XGBoost-bidragsgivarna |
---|---|
Initial release | 27 mars 2014 |
Stabil frisättning | |
Förvar | |
Skrivet i | C++ |
Operativ system | Linux , macOS , Windows |
Typ | Maskininlärning |
Licens | Apache-licens 2.0 |
Hemsida |
XGBoost (eXtreme Gradient Boosting) är ett mjukvarubibliotek med öppen källkod som tillhandahåller ett regelbundet ramverk för gradientförstärkning för C++ , Java , Python , R , Julia , Perl och Scala . Det fungerar på Linux , Windows och macOS . Från projektbeskrivningen syftar det till att tillhandahålla ett "Scalable, Portable and Distributed Gradient Boosting (GBM, GBRT, GBDT) Library". Den körs på en enda maskin, såväl som de distribuerade bearbetningsramverken Apache Hadoop , Apache Spark , Apache Flink och Dask .
Den har fått mycket popularitet och uppmärksamhet nyligen [ när? ] som den valda algoritmen för många vinnande team av maskininlärningstävlingar.
Historia
XGBoost startade ursprungligen som ett forskningsprojekt av Tianqi Chen som en del av gruppen Distributed (Deep) Machine Learning Community (DMLC). Till en början började det som en terminalapplikation som kunde konfigureras med en libsvm -konfigurationsfil. Den blev välkänd i ML-tävlingskretsarna efter att den användes i den vinnande lösningen av Higgs Machine Learning Challenge . Strax efter byggdes Python- och R-paketen, och XGBoost har nu paketimplementationer för Java, Scala , Julia, Perl och andra språk. Detta förde biblioteket till fler utvecklare och bidrog till dess popularitet bland Kaggle- communityt, där det har använts för ett stort antal tävlingar.
Det integrerades snart med ett antal andra paket som gjorde det lättare att använda i sina respektive gemenskaper. Det har nu integrerats med scikit-learn för Python- användare och med caret -paketet för R -användare. Den kan också integreras i Data Flow-ramverk som Apache Spark , Apache Hadoop och Apache Flink med hjälp av den abstrakta Rabit och XGBoost4J. XGBoost är också tillgängligt på OpenCL för FPGA:er . En effektiv, skalbar implementering av XGBoost har publicerats av Tianqi Chen och Carlos Guestrin.
Medan XGBoost-modellen ofta uppnår högre noggrannhet än ett enda beslutsträd, offrar den beslutsträdens inneboende tolkningsbarhet. Till exempel är det trivialt och självförklarat att följa vägen som ett beslutsträd tar för att fatta sitt beslut, men att följa hundratals eller tusentals träds vägar är mycket svårare. För att uppnå både prestanda och tolkningsbarhet tillåter vissa modellkomprimeringstekniker att omvandla en XGBoost till ett enda "född-på nytt" beslutsträd som approximerar samma beslutsfunktion.
Funktioner
Framträdande egenskaper hos XGBoost som skiljer den från andra gradientförstärkande algoritmer inkluderar:
- Smart bestraffning av träd
- En proportionell krympning av bladnoder
- Newton Boosting
- Extra randomiseringsparameter _
- Implementering på enstaka, distribuerade system och out-of-core beräkning
- Automatiskt val av funktioner
Algoritmen
XGBoost fungerar som Newton-Raphson i funktionsutrymme till skillnad från gradientförstärkning som fungerar som gradientnedstigning i funktionsutrymme, en andra ordningens Taylor-approximation används i förlustfunktionen för att göra kopplingen till Newton Raphson-metoden.
En generisk oreglerad XGBoost-algoritm är:
Indata: träningsuppsättning en differentierbar förlust funktion , ett antal svaga elever och en inlärningshastighet .
Algoritm:
- Initiera modellen med ett konstant värde:
- För m = 1 till M :
- Beräkna 'gradienterna' och 'hessianerna':
- Anpassa en basinlärare (eller svag inlärare, t.ex. träd) med träningsuppsättningen genom att lösa optimeringsproblemet nedan:
- Uppdatera modellen:
- Beräkna 'gradienterna' och 'hessianerna':
- Utgång
Utmärkelser
- John Chambers Award (2016)
- High Energy Physics meets Machine Learning award (HEP meets ML) (2016)