XGBoost入门学习

XGBoost

  • Practical XGBoost in Python
  • Boosting Algorithm: why works
    • Boosting 概念
    • Weak Classifier 概念
    • 树作为基础算法
    • GBM, GBT, AdaBoost, XGBoost
      • 四个概念解释与联系
      • AdaBoost算法简介
      • XGBoost算法简介
      • 待参考博客/视频

Practical XGBoost in Python

地址: https://www.bilibili.com/video/av21249915
原视频博主Github: https://github.com/dmlc/xgboost/tree/master/demo#machine-learning-challenge-winning-solutions
兼有其他博客等参考资料,一并注于文中。
LightGMB之后也要学习一下!

Boosting Algorithm: why works

https://github.com/ParrotPrediction/docker-course-xgboost/blob/master/notebooks/2. Basics/2.1 Boosting - wisdom of the crowd (theory).ipynb

Boosting 概念

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 概念

Weak classifier - an algorithm slightly better than random guessing.

树作为基础算法

虽然每种算法都可以当作是Boosting算法的基础算法,但是树的算法有一些很不错的性质,很适合做为基础算法。

优点:

  • 计算的可扩展性(computational scalability)
  • 可以处理缺失值存在的情况
  • 对异常值比较稳健
  • 不需要进行特征放缩(feature scaling)
  • 可以处理irrelevant inputs
  • 可解释性(比较少的时候)
  • 可以处理mixed predictors(quantitive and qualitative)

缺点:

  • 不能提取特征的线性组合
  • small predictive power - 方差大

而boosting的技巧就可以通过取不同树(where each one is solving the same problem)的平均来减少方差。

GBM, GBT, AdaBoost, XGBoost

四个概念解释与联系

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算法简介

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)
XGBoost入门学习_第1张图片

XGBoost算法简介

树的一些相关算法很多都有些正则化的问题,因为他们允许有很多相似的树的存在。GBT视图通过增加一些正则化的参数来解决这个问题,对此我们可以:

  • 控制树的结构(maximum depth, minimum samples per leaf)
  • 控制学习速率(shrinkage)
  • 通过加入一些随机性来减小方差(stochastic gradient boosting - using random subsamples of instances and features)

但是更好的正则化解决方法,那就就是XGBoost。XGBoost (extreme gradient boosting) is a more regularized version of Gradient Boosted Trees.

它的优点:

  • good bias-variance (simple-predictive) trade-off “out of the box”
  • 计算速度不错
  • 作者很乐意接受大家的一些建议,不断对库进行一些更新

XGBoost入门学习_第2张图片

课程作者注: 更多XGBoost资料可参考

  1. XGBoost Document: https://xgboost.readthedocs.io/en/latest/
  2. XGBoost Presentation: https://www.slideshare.net/ShangxuanZhang/xgboost

待参考博客/视频

  1. 一位blogger的系列博客
    1)GLM(广义线性模型)与LR(逻辑回归)详解:
    https://blog.csdn.net/Cdd2xd/article/details/75635688
    2)AdaBoost详解:
    https://blog.csdn.net/Cdd2xd/article/details/77342350
    3)GBM与GBDT与XGBoost:https://blog.csdn.net/Cdd2xd/article/details/77426622
  2. 课程作者注: 关于GBM,更多的信息请参考视频:
    https://www.youtube.com/watch?reload=9&v=wPqtzj5VZus&feature=youtu.be
  3. 课程作者注: 更多XGBoost资料可参考
    1)XGBoost Document: https://xgboost.readthedocs.io/en/latest/
    2)XGBoost Presentation: https://www.slideshare.net/ShangxuanZhang/xgboost
  4. 广泛的XGBoost等相关梳理、入门的博客
    1)Python机器学习之XGBoost从入门到实战(基本理论说明)
    https://blog.csdn.net/Gerry199102/article/details/78576994
    2)xgboost入门与实战(原理篇)
    https://blog.csdn.net/sb19931201/article/details/52557382
    3)xgboost:一个纯小白的学习历程
    https://blog.csdn.net/Totoro1745/article/details/53328725
    4)Gradient Tree Boosting (GBM, GBRT, GBDT, MART)算法解析和基于XGBoost/Scikit-learn的实现
    https://blog.csdn.net/yangliuy/article/details/62411509

你可能感兴趣的:(XGBoost,kaggle,Statistics,找工作,python)