GBDT和XGB基本上是机器学习面试里面的必考题。最近面试了五十场面试,基本三分之二的面试官都问了关于GBDT和XGB的问题。
下面把里面常用的知识点、常见的面试题整理出来
首先来说集成学习
集成学习
boosting
-
- 串行的方式训练基分类器,各分类器之间有依赖。每次训练时,对前一层基分类器分错的样本给与更高的权重
bagging
-
- bagging是Bootstrap aggregating的意思,各分类器之间无强依赖,可以并行。
方差&偏差
-
- 偏差:
- 【背下来】偏差是指由有所采样得到的大小为m的训练数据集,训练出的所有模型的输出的平均值和真实模型输出之间的偏差。
- 通常是由对学习算法做了错误的假设导致的
- 描述模型输出结果的期望与样本真实结果的差距。分类器表达能力有限导致的系统性错误,表现在训练误差不收敛
- 偏差:
方差:
-
-
- 【背下来】是指有所有采样得到的大小为m的训练数据集,训练出的所有模型的输出的方差
- 描述模型对于给定值的输出稳定性。分类器对样本分布过于敏感,到指在训练样本较少的时候,出现过拟合
-
- 基分类器的错误,是偏差和方差之和
- boosting方法通过逐步聚焦分类器分错的样本,减少集成分类器的偏差
- Bagging采用分而治之的策略,通过对样本多次采样,分别训练多个模型,减少方差
-
- 为什么决策树是常用的基分类器
- 可以方便地将样本权重正和岛训练过程中,不需要使用过采样的方法来调整样本券种
- 决策树的表达能力和繁华能力,可以通过调节树的层数来做折中
- 数据样本扰动对决策树影响较大,因此不同子样本集生成的基分类器随机性就较大。这样的不稳定学习器更适合作为基分类器。
- 插一句,神经网络也适合做基分类器
- 为什么决策树是常用的基分类器
Adaboost
- boosting的思想:
- 对分类正确的样本降低权重
- 对错误分类的样本升高或者保持全中不变
- 在模型融合过程中,根据错误率对基分类器器进行加权融合,错误率低的分类器拥有更大的“话语权”
GBDT
- GBDT也称MART。基本的树:CART
- 拟合函数:负梯度
- 损失函数:
- 回归:直接用连续的值计算负梯度
- 均方差
- 绝对损失
- huber损失
- 分位数损失
- 分类:指数(此时退化成为Adaboost)、对数
- 回归:直接用连续的值计算负梯度
- 正则化:
- 步长,v就是步长,空驶学习速度 ( )= −1( )+ ℎ ( )
- 自采样比例(subsample)无放回的抽样
- 正则化剪枝
GBDT主要的优点有:
-
- 1) 可以灵活处理各种类型的数据,包括连续值和离散值。
- 2) 在相对少的调参时间情况下,预测的准确率也可以比较高。这个是相对SVM来说的。
- 3)使用一些健壮的损失函数,对异常值的鲁棒性非常强。比如 Huber损失函数和Quantile损失函数。
- from百面机器学习:
-
- 预测阶段计算速度较快,树与树之间可以并行化计算
- 在分布稠密的数据机上,泛化能力和表达能力都比较好
- 具有较好的解释性和鲁棒性
- 能够自动发现特征质检的高阶关系
- 不需要做特殊预处理(比如归一化)
-
GBDT的主要缺点有:
-
- 由于弱学习器之间