机器学习面试笔记整理8-GBDT

  • 算法思想
  • 优缺点
  • 面试问题收集


算法思想

在损失函数loss负梯度方向,利用残差逼近的方式去拟合一颗CART,不断迭代后,最后累加所有CART。

优缺点

优点:
1.灵活处理各种数据,包括离散型,连续性
2.可用于分类,回归
3.可以筛选/组合特征:计算所有非叶子节点在分裂时加权不纯度的减少,减少得越多,说明特征越重要
4.继承了决策树的优点(处理高维,缺失值不敏感)

缺点:
基分类器间相互依赖,难以并行训练

面试问题收集

1. 什么是残差?
当前估计值与实际值之间的差值

2. GBDT为什么要拟合前面几轮的残差?
损失函数的负梯度方向在当前模型的值近似残差,每一轮迭代尽量去拟合残差,使得最终累加结果趋近真实值

**3. GBDT通过什么方式减少误差 ? **
不断迭代去拟合残差。

4. GBDT可以用决策分类树吗?
不可以,只能是CART回归树

5. 为什么只能用CART回归树?
源于GBDT的核心思想中需要将所有树的预测值累计,而分类树的结果显然是没办法累加的,比如男+男+女=到底是男是女,所以GBDT中的树都是回归树,不是分类树

6. GBDT为什么不能并行?
因为各分类器间相互依赖

7. GBDT如何正则化?
控制CART的复杂度(叶子节点数目,叶子节点最少样本数目),梯度提升迭代次数M,在CART回归树前面乘一个很小的衰减(Shrinkage)–v<0.1(较小的v意味着需要更多的迭代次数,减小树的影响,防止过拟合),采用随机梯度下降,CART回归树剪枝。

**8. GBDT分裂规则或者CART回归树是如何选取特征的? **
两次暴力遍历,遍历每个特征,对每个特征遍历其所有可能的切分点(中位数)->找到最优特征的最优切分点
PS:这里的最优衡量=平方差损失;而CART分类是GINI指数

9. 如何停止分裂?
1.叶子节点最小样本数;
2.树的深度或者最大叶子节点数;
3.最小损失函数满足某条件

10. GBDT的梯度体现在哪里?
构建CART时使用损失函数的负梯度保证沿着loss下降最快的方向拟合CART

11. GBDT为什么要用梯度下降?
负梯度是损失函数下降最快的方向,即为快速找到最小损失函数

12. GBDT如何做特征选择?
计算每棵树非叶子节点分裂后平方损失的减少,减少得越多说明特征越重要

**13. 为什么GBDT的树深度较RF浅? **
GBDT利用残差逼近不断拟合原数据,每一轮都需要保证一定的偏差,所以每棵决策树更浅
RF并行训练不同的分类器+输出为多数表决—> 因此需要每棵决策树尽可能去拟合样本—>基本不剪枝

14. GBDT如何加速训练?
预排序,预排序可以加速查找最佳分裂点;计算样本负梯度时并行??

15. GBDT哪些部分可以并行?
1.计算每个样本的负梯度;2.选取最佳分割点时;3.预测时将每个样本之前的值累加时。

16. GBDT参数设置?
迭代次数,树的深度/叶子节点个数,叶子节点包含的最少样本个数

17. GBDT的效果相比于传统的LR,SVM效果为什么好一些?
GBDT基于树模型,继承了树模型的优点 [对异常点鲁棒、不相关的特征(即非线性特征)干扰性低(LR需要加正则)、可以很好地处理缺失值,处理高维数据] ,同时又避免了决策树易出现过拟合的现象

18. GBDT为什么要归一化?
1.加快梯度下降收敛速度,避免震荡现象;2.提高精度

19. GBDT如何进行特征组合,从而解决LR处理非线性的问题?
对于输入X,记录其在GBDT中落入到每棵树叶子节点的编码(比如,有3个节点的树,落入到第2个节点,则编号=[0,1,0]),将其作为新的特征(新特征向量的长度等于GBDT模型里所有树包含的叶子结点数之和),加入到原始特征集,再用LR训练.

20. GBDT和Adaboost的区别?
1.GBDT每次迭代沿梯度下降最快方向学习去弥补模型的不足;Adaboost每次迭代提升错误样本权重来弥补模型的不足;
2.GBDT可选多种目标函数,当为均方误差时,正好为残差;Adaboost目标函数为指数损失函数
3.GBDT无更新样本分布,无分类器权重;Adaboost都有
4.GBDT输出为累加;Adaboost分类为多数表决,回归为取平均值
5.GBDT分类器只能是CART回归树;Adaboost可有其他类型分类器

21. GBDT和RF的区别?
1.RF基于bagging思想;GBDT基于boosting思想
2.RF的树可以是回归树或分类树;GBDT只能是回归树
3.RF树之间相互独立,可并行建树;GBDT树之间相互依赖,只能串行建树
4.RF最终结果是多数表决;GBDT是线性累加
5.RF通过减少模型方差提高性能,即树更深;GBDT通过减少模型偏差来提高性能,即树更浅
6.RF对异常值不敏感,源于多棵树表决;GBDT对异常值较敏感,当下的错误会延续到下一棵树
7.RF不需要特征归一化;GBDT需要对特征归一化
Ps:机器学习模型使用梯度下降法求最优解,那么往往需要归一化,否则很难收敛甚至不能收敛,因为特征量级不同,量级大的特征的步子大(即收敛速度快),早早到达最低点,需等待其他特征,即震荡现象。