文章目录
-
-
- 1. 大小为N的样本集进行有放回抽样,样本N次有重复抽取被选中的概率是多少?
- 2.集成学习分为哪几种?它们有何异同?
- 3. 为什么很多集成学习模型都选择决策树作为基分类器?
- 4.什么是偏差与方差?如何从减小方差和偏差的角度解释Boosting和Bagging的原理?
- 5. GBDT算法问题总结
- 6. XGBoost算法问题总结
-
- 6.1 XGBoost算法的原理
- 6.2 总结GBDT和XGBoost的联系和区别
- 6.3 XGBoost为什么使用泰勒二阶展开?
- 6.4 XGBoost为什么可以并行训练?
- 6.5 XGBoost为什么快?
- 6.6 XGBoost防止过拟合的方法是什么?
- 6.7 使用XGBoost训练模型时,如果过拟合了怎么调参?
- 6.8 XGBoost 如何处理缺失值?
- 6.9 XGBoost如何选择最佳分裂点?
- 6.10 XGBoost中如何对树进行剪枝?
- 6.11 XGBoost的延展性很好,怎么理解?
- 6.12 XGBoost的优缺点有哪些?
- 6.13 xgboost使用之前是否需要对数据进行归一化处理?
- 6.14 xgboost使用之前是否需要对类别型特征进行one-hot处理?
- 6.15 XGBoost可以做特征选择,它是如何评价特征重要性的?
-
插眼:
- 百面机器学习—1.特征工程
- 百面机器学习—2. 特征工程与模型评估要点总结
- 百面机器学习—3.逻辑回归与决策树要点总结
- 百面机器学习—4.SVM模型基础知识
- 百面机器学习—5.SVM要点总结
- 百面机器学习—6.PCA与LDA要点总结
- 百面机器学习—7.K均值算法、EM算法与高斯混合模型要点总结
- 百面机器学习—8.概率图模型之HMM模型
- 百面机器学习—9.前馈神经网络面试问题总结
- 百面机器学习—10.循环神经网络面试问题总结
- 百面机器学习—11.集成学习(GBDT、XGBoost)面试问题总结
- 百面机器学习—12.优化算法
GBDT、XGBoost是校招算法面试中的重点难点,这是一份精心总结的关于集成学习面试中常见问题,如果对您有帮助的话,不妨点赞、收藏、关注!!!
1. 大小为N的样本集进行有放回抽样,样本N次有重复抽取被选中的概率是多少?
2.集成学习分为哪几种?它们有何异同?
集成学习方法可以分为Bagging和Boosting。
Bagging方法在训练过程中,各基分类器之间无强依赖,可以进行并行训练。Bagging的基本思路是:每一次从原始数据中自助采样(有放回),样本点可能出现重复,不同的训练集随机子集在基模型上进行训练,再对这些基模型进行组合,通过投票的方式作出最后的集体决策。Bagging方法之所以有效,是因为每个模型都是在略微不同的训练数据集上拟合完成的,这又使得每个基模型之间存在略微的差异,使每个基模型拥有略微不同的训练能力。
这里介绍一下随机森林:
Boosting方法在训练过程中,基分类器采用串行方式,各个基分类器之间有依赖。Boosting的基本思路是将基分类器层层叠加,后一个基分类器在训练时,对前一个基分类器分错的样本给予更高的权重,使模型在之后的训练中更加注意难以分类的样本,这是一个不断学习的过程。
这里介绍一下AdaBoost:
3. 为什么很多集成学习模型都选择决策树作为基分类器?
- 决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。
- 决策树的表达能力和泛化能力,可以通过调节树的层数来做折中。
- 数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类器随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性。
除了决策树外,神经网络模型也适合作为基分类器,主要由于神经网络模型也比较“不稳定”,而且还可以通过调整神经元数量、连接方式、网络层数、初始权值等方式引入随机性。
4.什么是偏差与方差?如何从减小方差和偏差的角度解释Boosting和Bagging的原理?
4.1 什么是偏差与方差?
偏差指的是由所有采样得到的大小为m的训练数据集训练出的模型的输出的平均值和真实模型输出之间的偏差。偏差主要是由于分类器的表达能力有限导致的系统性错误,表现在训练误差不收敛。通俗来讲,就是假设错了,导致分类器没选好
方差指的是由所有采样得到的大小为m的训练数据集训练出的模型的输出的方差。方差通常是由于模型的复杂度相对于训练样本数m过高导致的。方差是由于分类器对于样本分布过于敏感,导致在训练样本数较少时,产生过拟合。
4.2 如何从减小方差和偏差的角度解释Boosting和Bagging的原理?
Bagging方法则是采取分而治之的策略,通过对训练样本多次重采样,并分别训练出多个不同模型,然后做综合,来减小集成分类器的方差。假设模型是独立不相关的,对n个独立不相关的模型的预测结果取平均,方差是原来单个模型的1/n。
当然,模型之间不可能完全独立。为了追求模型的独立性,诸多Bagging 的方法做了不同的改进。比如在随机森林算法中,每次选取节点分裂属性时,会随机抽取一个属性子集,而不是从所有属性中选取最优属性,这就是为了避免弱分类器之间过强的相关性。通过训练集的重采样也能够带来弱分类器之间的一定独立性,从而降低 Bagging后模型的方差。
Boosting方法是通过逐步聚焦于基分类器分错的样本,不断较小损失函数,来使模型接近“靶心”,使得模型偏差不断降低。但是Boosting的过程并不会显著降低方差,这是因为Boosting的训练过程使得各弱分类器之间是强相关的,缺乏独立性,所以并不会降低方差。
5. GBDT算法问题总结
5.1梯度提升树GBDT的基本原理是什么?
首先,先弄清楚一个点:GBDT的核心在于累加所有树的结果作为最终结果,GBDT可用于分类,并不代表是累加所有分类树的结果。GBDT中的树都是回归树
梯度提升树:当损失函数是平方损失时,下一棵树拟合的是上一棵树的残差值(实际值减预测值)。当损失函数是非平方损失时,拟合的是损失函数的负梯度值,利用损失函数的负梯度在当前模型的值作为残差的一个近似值,进行拟合回归树。梯度提升算法实际采用加法模型(基函数的线性组合)与前向分布算法。
梯度提升算法的基本流程可以总结为:在每一次迭代中,首先计算出当前模型在所有样本上的负梯度,然后以该值为目标训练一个新的弱分类器进行拟合并计算出该弱分类器的权重,最后实现对模型的更新,其算法伪代码如下:
算法伪代码中, N N N表示数据的数量, M M M表示基分类器的数量, h ( x i : a m ) h(x_i:a_m) h(xi:am)表示基本分类器 ,4中 a m a_m am表示拟合负梯度能力最好的分类器参数,负梯度只是表示下降的方向,但是下降多少没有确定,5中 p m p_m pm可以认为是下降最快的步长(也可以认为是学习率),可以让 L o s s Loss Loss最小,可以用线性搜索的方式来估计 p m p_m pm的值。
一个包含 J J J个节点的回归树模型可以表示为
h ( x , { b j , R j } 1 J ) = ∑ j = 1 J b j I ( x ∈ R j ) h(x,\{b_j,R_j\}_{1}^{J})=\sum_{j=1}^{J}b_jI(x∈R_j) h(x,{ bj,Rj}1J)=j=1∑JbjI(x∈Rj)
其中 { R j } 1 J \{R_j\}_{1}^{J} { Rj}1J是不相交区域,可以认为是落在一颗决策树叶子节点上的 x x x值的集合; { b j } 1 J \{b_j\}_{1}^{J} { bj}1J是叶子节点的值。 b j b_j bj的计算方式:对于回归问题,计算方式可以取落在该叶子节点的样本点的平均值;对于分类问题,计算方式可以取落在该叶子节点中数量多的类别。
从算法中,我们可以看出先求出 b j m b_{jm} bjm,然后在求解 ρ m \rho_{m} ρm,那可不可以一起求解呢?