地址: https://www.bilibili.com/video/av21249915
原视频博主Github: https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions
兼有其他博客等参考资料,一并注于文中。
LightGMB之后也要学习一下!
https://github.com/ParrotPrediction/docker-course-xgboost/blob/master/notebooks/2. Basics/2.1 Boosting - wisdom of the crowd (theory).ipynb
Boosting (Freud and Shapire, 1996) - algorithm allowing to fit many weak classifiers to reweighted versions of the training data. Classify final examples by majority voting.
在使用boosting的时候,数据集中每个样本都被分配了一个分数,来显示这个样本有多难分对(how difficult to classify they are)。在之后的每次iter中,算法就会更加注意哪些之前被分错(bigger weights)的样本。
在第一个iter中,数据集中每个样本的权重是一样的。
集成的参数是以stage-wise way的方式进行优化的,也就是说我们是在为下一个classifier算出最优的参数,已经算出来的就会holding fixed。这虽然看起来像是一个limitation,但其实模型正则化的一个很不错的方法。
Weak classifier - an algorithm slightly better than random guessing.
虽然每种算法都可以当作是Boosting算法的基础算法,但是树的算法有一些很不错的性质,很适合做为基础算法。
优点:
缺点:
而boosting的技巧就可以通过取不同树(where each one is solving the same problem)的平均来减少方差。
GBM的全称是Generalized Boosted Models (or Gradient Boosting Machine),是Boosting算法的一种。它的特点是,损失函数是更适合进行优化的损失函数。(We can take advantage of the fact that the loss function can be represented with a form suitable for optimalization (due to the stage-wise additivity).)
GBT(应当就是GBDT?)全称为Gradient Boosted Tree, 是GBM的一种。它用决策树作为estimator, 损失函数有很多种情形——It can work with different loss functions (regression, classification, risk modeling etc.), evaluate it’s gradient and approximates it with a simple tree (stage-wisely, that minimizes the overall error).
AdaBoost全称为Adaptive Boosting, 是GBT的一种特例。它使用的是指数的损失函数。
XGBoost全称是Extreme Gradient Boosting,它是一个更加正则化版本的Gradient Boosted Tree (GBT)。
AdaBoost是采用了Boosting的技巧,并且把决策树作为meta-estimator(元估计器,是由多个独立的estimator组成的,you can fit any classifier in。
本算法数学上可以解释为类似在函数空间上做最速梯度下降。每次迭代中,选择的 weak classifier 函数其实是当前负梯度方向,而对应的权值则是在此方向使 loss 减少最多的步长(greedy~)。这里使用的 loss function 是 exponential function,而 GBDT(gradient boost decision tree)推广到了其他 error function,也可以说 AdaBoost 是一种 GBDT。(本段摘自[参考博客]1)
树的一些相关算法很多都有些正则化的问题,因为他们允许有很多相似的树的存在。GBT视图通过增加一些正则化的参数来解决这个问题,对此我们可以:
但是更好的正则化解决方法,那就就是XGBoost。XGBoost (extreme gradient boosting) is a more regularized version of Gradient Boosted Trees.
它的优点:
课程作者注: 更多XGBoost资料可参考