3-5 机器学习进阶-GBDT、boosting工程化三兄弟XGBoost、lightGBM、catBoost

1、XGBoost和GBDT有什么不同?

2、XGBoost为什么可以并行训练?

3、XGBoost防止过拟合的方法?

4、XGBoost为什么这么快?

5、LightGBM相比于XGBoost做了哪些改进?

6、CatBoost有什么特点?


1、XGBoost和GBDT有什么不同?

(1)GBDT是机器学习算法,xgboost是该算法的工程实现。在使用cart作为基础分类器时,xgboost在目标函数中加入正则化项来控制模型的复杂度,有利于防止过拟合,从而提高模型的泛化能力。

(2)GBDT在模型训练时只使用了损失函数的一阶导数信息,xgboost对代价函数进行二阶泰勒展开,通过二阶导数优化目标函数

(3)传统的GBDT采用cart作为基础分类器,xgboost支持多种基础分类器,比如线性分类器(工程实现);传统的GBDT没有涉及对缺失值进行处理,xgboost能够自动学习出缺失值的处理策略

(4)传统的GBDT在每轮迭代时使用全部的数据,xgboost则支持对数据进行采样

(5)xgboost支持并行计算(基于特征计算的并行),将特征列排序后以block的形式存储在内存中,在后面的迭代中重复使用这个结构。

此处(1)(2)(5)展开详细表述后续有时间再补上


2、XGBoost为什么可以并行训练?

此处并行训练不是指树模型的并行训练,而是指特征粒度上的。决策树模型学习最耗时的一个步骤就是对特征的值进行排序(确定最佳的分割点),xgboost在训练之前,预先对数据进行了排序,然后保存为block结构,后面的迭代中重复的使用这个结构,大大减少计算量。

        这个block结构也使得并行成为了可能,在进行节点的分裂时,需要计算每个特征的增益,最终选增益最大的那个特征去做分裂,那么各个特征的增益计算就可以在多线程进行。

        树节点在进行分裂时,需要计算每个特征的每个分割点对应的增益,即用贪心法枚举所有可能的分割点。当数据无法一次载入内存或者在分布式的情况下,贪心算法效率就会变得很低。因此xgboost采用一种可并行的直方图算法,用于高效的生成候选的分割点。


3、XGBoost防止过拟合的方法?

(1)数据角度

  • 样本采样-在生成每棵树的时候可以对数据进行随机采样
  • 特征采样-生成每棵树的每一层子节点的时候,以及在每次做节点分裂的时候,选择是否对特征进行采样

(2)模型角度

  • 限制树的深度-树的深度越深模型越复杂容易过拟合
  • 设置叶子节点上样本的最小数量-这个值设置越小模型越复杂,设置过小会导致过拟合

(3)正则化

  • L1和L2正则化损失项的引入以及正则化权重设置
  • 叶子节点数量的惩罚项以及权重设置

4、XGBoost为什么这么快?

(1)同时采用了损失函数的一阶导数和二阶导数,使得目标函数收敛更快

(2)在进行节点分类时采用的贪心算法和直方图算法,大大加速了节点分裂的计算过程

(3)工程化,模型训练时特征角度可并行


5、LightGBM相比于XGBoost做了哪些改进?

(1)加入直方图(Histogram),将连续的特征值离散化到k个bins中,从而减少了候选分裂节点的数量

(2)采用了基于梯度的单边采样(Gradient-based One-Side Sampling)算法,对梯度绝对值较小的样本进行采样,保留梯度绝对值较大的样本,从而减少了样本的数量

(3)互斥特征捆绑(Exclusive Feature Bundling)算法,将互斥且稀疏的样本进行捆绑并重新编码,从而减少了特征的数量。


6、CatBoost有什么特点?

(1)高效的处理分类特征(categorical features),首先对分类特征做统计,计算某个分类特征(category)出现的频率,然后加上超参数,生成新的数值型特征(numerical features)

(2)同时使用组合类别特征,丰富特征维度

(3)采用的基模型时对称决策树,算法的参数少、支持分类变量,通常可以防止过拟合

你可能感兴趣的:(AI基础知识,机器学习,GBDT,xgboost,lightGBM,catBoost)