* [WIP] Add lower and upper bounds on the label for survival analysis * Update test MetaInfo.SaveLoadBinary to account for extra two fields * Don't clear qids_ for version 2 of MetaInfo * Add SetInfo() and GetInfo() method for lower and upper bounds * changes to aft * Add parameter class for AFT; use enum's to represent distribution and event type * Add AFT metric * changes to neg grad to grad * changes to binomial loss * changes to overflow * changes to eps * changes to code refactoring * changes to code refactoring * changes to code refactoring * Re-factor survival analysis * Remove aft namespace * Move function bodies out of AFTNormal and AFTLogistic, to reduce clutter * Move function bodies out of AFTLoss, to reduce clutter * Use smart pointer to store AFTDistribution and AFTLoss * Rename AFTNoiseDistribution enum to AFTDistributionType for clarity The enum class was not a distribution itself but a distribution type * Add AFTDistribution::Create() method for convenience * changes to extreme distribution * changes to extreme distribution * changes to extreme * changes to extreme distribution * changes to left censored * deleted cout * changes to x,mu and sd and code refactoring * changes to print * changes to hessian formula in censored and uncensored * changes to variable names and pow * changes to Logistic Pdf * changes to parameter * Expose lower and upper bound labels to R package * Use example weights; normalize log likelihood metric * changes to CHECK * changes to logistic hessian to standard formula * changes to logistic formula * Comply with coding style guideline * Revert back Rabit submodule * Revert dmlc-core submodule * Comply with coding style guideline (clang-tidy) * Fix an error in AFTLoss::Gradient() * Add missing files to amalgamation * Address @RAMitchell's comment: minimize future change in MetaInfo interface * Fix lint * Fix compilation error on 32-bit target, when size_t == bst_uint * Allocate sufficient memory to hold extra label info * Use OpenMP to speed up * Fix compilation on Windows * Address reviewer's feedback * Add unit tests for probability distributions * Make Metric subclass of Configurable * Address reviewer's feedback: Configure() AFT metric * Add a dummy test for AFT metric configuration * Complete AFT configuration test; remove debugging print * Rename AFT parameters * Clarify test comment * Add a dummy test for AFT loss for uncensored case * Fix a bug in AFT loss for uncensored labels * Complete unit test for AFT loss metric * Simplify unit tests for AFT metric * Add unit test to verify aggregate output from AFT metric * Use EXPECT_* instead of ASSERT_*, so that we run all unit tests * Use aft_loss_param when serializing AFTObj This is to be consistent with AFT metric * Add unit tests for AFT Objective * Fix OpenMP bug; clarify semantics for shared variables used in OpenMP loops * Add comments * Remove AFT prefix from probability distribution; put probability distribution in separate source file * Add comments * Define kPI and kEulerMascheroni in probability_distribution.h * Add probability_distribution.cc to amalgamation * Remove unnecessary diff * Address reviewer's feedback: define variables where they're used * Eliminate all INFs and NANs from AFT loss and gradient * Add demo * Add tutorial * Fix lint * Use 'survival:aft' to be consistent with 'survival:cox' * Move sample data to demo/data * Add visual demo with 1D toy data * Add Python tests Co-authored-by: Philip Cho <chohyu01@cs.washington.edu>
Awesome XGBoost
This page contains a curated list of examples, tutorials, blogs about XGBoost usecases. It is inspired by awesome-MXNet, awesome-php and awesome-machine-learning.
Please send a pull request if you find things that belongs to here.
Contents
- Code Examples
- Machine Learning Challenge Winning Solutions
- Tutorials
- Usecases
- Tools using XGBoost
- Awards
- Windows Binaries
Code Examples
Features Walkthrough
This is a list of short codes introducing different functionalities of xgboost packages.
- Basic walkthrough of packages python R Julia PHP
- Customize loss function, and evaluation metric python R Julia
- Boosting from existing prediction python R Julia
- Predicting using first n trees python R Julia
- Generalized Linear Model python R Julia
- Cross validation python R Julia
- Predicting leaf indices python R
Basic Examples by Tasks
Most of examples in this section are based on CLI or python version. However, the parameter settings can be applied to all versions
Benchmarks
- Starter script for Kaggle Higgs Boson
- Kaggle Tradeshift winning solution by daxiongshu
- Benchmarking the most commonly used open source tools for binary classification
Machine Learning Challenge Winning Solutions
XGBoost is extensively used by machine learning practitioners to create state of art data science solutions, this is a list of machine learning winning solutions with XGBoost. Please send pull requests if you find ones that are missing here.
- Maksims Volkovs, Guangwei Yu and Tomi Poutanen, 1st place of the 2017 ACM RecSys challenge. Link to paper.
- Vlad Sandulescu, Mihai Chiru, 1st place of the KDD Cup 2016 competition. Link to the arxiv paper.
- Marios Michailidis, Mathias Müller and HJ van Veen, 1st place of the Dato Truely Native? competition. Link to the Kaggle interview.
- Vlad Mironov, Alexander Guschin, 1st place of the CERN LHCb experiment Flavour of Physics competition. Link to the Kaggle interview.
- Josef Slavicek, 3rd place of the CERN LHCb experiment Flavour of Physics competition. Link to the Kaggle interview.
- Mario Filho, Josef Feigl, Lucas, Gilberto, 1st place of the Caterpillar Tube Pricing competition. Link to the Kaggle interview.
- Qingchen Wang, 1st place of the Liberty Mutual Property Inspection. Link to the Kaggle interview.
- Chenglong Chen, 1st place of the Crowdflower Search Results Relevance. Link to the winning solution.
- Alexandre Barachant (“Cat”) and Rafał Cycoń (“Dog”), 1st place of the Grasp-and-Lift EEG Detection. Link to the Kaggle interview.
- Halla Yang, 2nd place of the Recruit Coupon Purchase Prediction Challenge. Link to the Kaggle interview.
- Owen Zhang, 1st place of the Avito Context Ad Clicks competition. Link to the Kaggle interview.
- Keiichi Kuroyanagi, 2nd place of the Airbnb New User Bookings. Link to the Kaggle interview.
- Marios Michailidis, Mathias Müller and Ning Situ, 1st place Homesite Quote Conversion. Link to the Kaggle interview.
Talks
- XGBoost: A Scalable Tree Boosting System (video+slides) by Tianqi Chen at the Los Angeles Data Science meetup
Tutorials
- Machine Learning with XGBoost on Qubole Spark Cluster
- XGBoost Official RMarkdown Tutorials
- An Introduction to XGBoost R Package by Tong He
- Open Source Tools & Data Science Competitions by Owen Zhang - XGBoost parameter tuning tips
- Feature Importance Analysis with XGBoost in Tax audit
- Winning solution of Kaggle Higgs competition: what a single model can do
- XGBoost - eXtreme Gradient Boosting by Tong He
- How to use XGBoost algorithm in R in easy steps by TAVISH SRIVASTAVA (Chinese Translation 中文翻译 by HarryZhu)
- Kaggle Solution: What’s Cooking ? (Text Mining Competition) by MANISH SARASWAT
- Better Optimization with Repeated Cross Validation and the XGBoost model - Machine Learning with R) by Manuel Amunategui (Youtube Link) (Github Link)
- XGBoost Rossman Parameter Tuning by Norbert Kozlowski
- Featurizing log data before XGBoost by Xavier Conort, Owen Zhang etc
- West Nile Virus Competition Benchmarks & Tutorials by Anna Montoya
- Ensemble Decision Tree with XGBoost by Bing Xu
- Notes on eXtreme Gradient Boosting by ARSHAK NAVRUZYAN (iPython Notebook)
- Complete Guide to Parameter Tuning in XGBoost by Aarshay Jain
- Practical XGBoost in Python online course by Parrot Prediction
- Spark and XGBoost using Scala by Elena Cuoco
Usecases
If you have particular usecase of xgboost that you would like to highlight. Send a PR to add a one sentence description:)
- XGBoost is used in Kaggle Script to solve data science challenges.
- Distribute XGBoost as Rest API server from Jupyter notebook with BentoML. Link to notebook
- Seldon predictive service powered by XGBoost
- XGBoost Distributed is used in ODPS Cloud Service by Alibaba (in Chinese)
- XGBoost is incoporated as part of Graphlab Create for scalable machine learning.
- Hanjing Su from Tencent data platform team: "We use distributed XGBoost for click through prediction in wechat shopping and lookalikes. The problems involve hundreds millions of users and thousands of features. XGBoost is cleanly designed and can be easily integrated into our production environment, reducing our cost in developments."
- CNevd from autohome.com ad platform team: "Distributed XGBoost is used for click through rate prediction in our display advertising, XGBoost is highly efficient and flexible and can be easily used on our distributed platform, our ctr made a great improvement with hundred millions samples and millions features due to this awesome XGBoost"
Tools using XGBoost
- BayesBoost - Bayesian Optimization using xgboost and sklearn API
- gp_xgboost_gridsearch - In-database parallel grid-search for XGBoost on Greenplum using PL/Python
- tpot - A Python tool that automatically creates and optimizes machine learning pipelines using genetic programming.
Awards
- John Chambers Award - 2016 Winner: XGBoost R Package, by Tong He (Simon Fraser University) and Tianqi Chen (University of Washington)
- InfoWorld’s 2019 Technology of the Year Award
Windows Binaries
Unofficial windows binaries and instructions on how to use them are hosted on Guido Tapia's blog