什么是Boosting

TODO

Boosting的两种方法

AdaBoost算法

Gradient Boost

Gradient Boost Decision Tree(GBDT)

在每个树节点中找到最佳分割点非常耗时,而且会消耗内存

Boosting框架

XGBoost

LightGBM

  • 基于histogram

  • leaf-wise

image-20210414095754315

image-20210414095812474

image-20210414095908847

直方图优化:基于分桶,减少内存的使用,正则化不容易overfit

控制max_depth来控制num_leaves

num_leaves=2^max_depth

lightGBM控制num_leaves,而不是树的最大深度,因为lightGBM不会生成满二叉树,因此通过控制num_leaves确保树的深度不过大,防止过拟合。

防止过拟合的方法

image-20210414101304982

参数

num_leaves

num_leaves越大,增加了训练集的精确度,但增加了过拟合的几率

num_iterations

Bagging 和 Boosting的区别

Bagging:

  • 训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的
  • 使用均匀取样,每个样例的权重相等
  • 所有预测函数的权重相等
  • 各个预测函数可以并行生成

Boosting:

  • 每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化,权值是根据上一轮的分类结果进行调整
  • 根据错误率不断调整样例的权值,错误率越大则权重越大
  • 每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
  • 各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果

参考资料:

1.微软亚洲研究院AI头条分享-Introduction to LightGBM-Taifeng Wang

2.一文看懂集成学习(详解 bagging、boosting 以及他们的 4 点区别)