~~~~~~ 面对一个机器学习问题,通常有两种策略。一种是研发人员尝试各种模型,选择其中变现最好的模型做重点调参优化。这种策略类似于奥运会比赛,通过强强竞争来选拔最优的运动员,并逐步提高成绩。另一种重要的策略是集各家之长,如同贤明的君主广泛地听取众多谋臣的建议,然后综合考虑,得到最终决策。后一种策略的核心,是将多个分类器的结果统一成一个最终的决策。使用这类策略的机器学习方法统称为集成学习。其中的每个单独的分类器称为基分类器。
1 集成学习的种类
问题:集成学习分哪几种?他们有何异同?
- Boosting
~~~~~~~ Boosting方法训练基分类器时采用串行的方式,各个基分类器之间有依赖。
~~~~~~~ 他的基本思路是将基分类器层层叠加,每一层在训练的时候,对前一层基分类错的样本,给与更高的权重。测试时,根据各层分类器的结果的加权得到最终结果。 - Bagging
~~~~~~~ Bagging与Boosting的串行训练方式不同,Bagging方法在训练过中,各基分类器之间无强度依赖,可以进行并行训练。其中很著名的算法之一是基于决策树基分类器的随机森林(Random Forest)。为了让基分类器之间相互独立,将训练集分为若干子集。Bagging方法更像是一个集体决策的过程,每个个体都进行单独学习,学习的内同可以相同,也可以不同,也可以部分重叠。但由于个体之间存在差异性,最终做出的判断不会完全一致。在最终做决策时,每个个体单独做出判断,再通过投票的方式做出最后的集体决策。
2 集成学习的步骤和例子
知识点:集成学习,Adaboost,梯度提升决策树
问题:集成学习有哪些基本步骤?请举几个集成学习的例子
集成学习一般可分为以下3个步骤:
- 找到误差互相独立的基分类器
- 训练基分类器
- 合并基分类器的结果
~~~~~~~
合并基分类器的方法有voting和stacking两种。前者是用投票的方式,将获得最多选票的结果作为最终的结果。后者是用串行的方式,把前一个基分类器的结果输出到下一个分类器,将所有基分类器的输出结果相加(或者用更复杂的算法融合,比如把各基分类器的输出作为特征,使用逻辑回归作为融合模型进行最后的结果预测)作为最终的输出。以Adaboost为例,其基分类器的训练和合并的基本步骤如下:
Boosting、Bagging、Adaboost、GBDT
3 基分类器
知识点:方差-偏差关系,随机森林,基分类器
问题1:常用的基分类器是什么?
最常用的基分类器是决策树,主要有以下3个方面的原因:
- 决策树可以较为方便地将样本的权重整合到训练过程中,而不需要使用过采样的方法来调整样本权重。
- 决策树的表达能力和泛化能力,可以通过调节树的层数来折中。
- 数据样本的扰动对于决策树的影响较大,因此不同子样本集合生成的决策树基分类随机性较大,这样的“不稳定学习器”更适合作为基分类器。此外,在决策树节点分裂的时候,随机地选择一个特征子集,从中找出最优分裂属性,很好地引入了随机性。
问题2:可否将随机森林中的基分类器,由决策树替换为线性分类器或者K-近邻?请解释为什么?
~~~~~~~
随机森林属于Bagging类的集成学习。Bagging的主要好处是集成后的分类器的方差,比基分类器的方差小。Bagging所采用的基分类器,最好是本身对样本分布较为敏感的(即所谓不稳定的分类器),这样Bagging才能有用武之地。线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大,所以以他们为基分类器使用Bagging并不能在原有基分类器的基础上获得更好的表现,甚至可能因为使用Bagging并不能在原有基分类器的基础上获得更好的表现,甚至可能因为Bagging的采样,而导致他们在训练中更难收敛,从而增大了集成分类器的偏差。
4 偏差与方差
知识点:偏差,方差,重采样,Boosting,Bagging
问题1:什么是偏差和方差?
~~~~~~~
在有监督学习中,模型的泛化误差来源于两个方面—偏差和方差,具体来讲偏差和方差的定义如下:
~~~~~~~
偏差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的平均值和真实模型输出之间的偏差。偏差通常是我们对学习对学习算法做了错误的假设所导致的,比如真实模型是某个二次函数,但我们假设模型是一次函数。由偏差带来的误差通常在训练误差上就能体现出来。
~~~~~~~
方差指的是由所有采样得到的大小为m的训练数据集训练出的所有模型的输出的方差。方差通常是由于模型的复杂度相对于训练样本数m过高导致的,比如一共有10个训练样本,而我们假设模型是阶数不大于200的多项式函数。由方差带来的误差通常体现在测试误差相对于训练误差的增量上。
问题2:如何从减小方差和偏差的角度解释Boosting和Bagging的原理?
~~~~~~~
简单回答这个问题就是:Bagging能够提高弱分类器性能的原因是降低了方差,Boosting能够提升弱分类器性能的原因是降低了偏差。
~~~~~~~
首先,Bagging是Bootstrap Aggregating的简称,意思就是再抽样,然后在每个样本上训练出来的模型取平均。
5 梯度提升决策树的基本原理(GBDT)
~~~~~~~ 梯度提升决策树是Boosting算法中非常流行的模型,也是进来在机器学习竞赛、商业应用中表现都非常优秀的模型。GBDT非常好地体现了“从错误中学习”的理念,基于决策树预测的残差进行迭代的学习。
问题1:GBDT的基本原理是什么?
~~~~~~~
相比于Bagging中各个弱分类器可以独立地进行训练,Boosting中的弱分类器需要依次生成。在每一轮迭代中,基于已生成的弱分类器集合(即当前模型)的预测结果,新的弱分类器会重点关注那些还没有被正确预测的样本。
~~~~~~~
Gradient Boosting是Boosting中的一大类算法,其基本思想是根据当前模型损失函数的负梯度信息来训练新加入的弱分类器,然后将训练好的弱分类器以累加的形式结合到现有模型中。
~~~~~~~
采用决策树作为弱分类器的Gradient Boosting算法被称为GBDT,有时又被称为MART(Multiple Additive Regression Tree)。GBDT中使用的决策树通常为CART。
问题2:梯度提升和梯度下降的区别和联系是什么?
~~~~~~~
表12.1是梯度提升算法和梯度下降算法的对比情况。可以发现,两者都是在每一轮迭代中,利用损失函数相对于模型的负梯度方向的信息来对当前模型进行更新,只不过在梯度下降中,模型是以参数化形式表示,从而模型的更新等价于参数的更新。而在梯度提升中,模型并不需要进行参数化表示,而是直接定义在函数空间中,从而大大扩展了可以使用的模型种类。
问题3:GBDT的优点和局限性有哪些?
-
优点
(1)预测阶段的计算速度快,树与树之间可并行化计算。
(2)在分布稠密的数据集上,泛化能力和表达能力都很好,这使得GBDT在Kaggle的众多竞赛中,经常名列榜首。
(3)采用决策树作为弱分类器使得GBDT模型具有较好的解释性和鲁棒性,能够自动发现特征间的高阶关系,并且也不需要对数据进行特殊的预处理如归一化等。 -
局限性
(1)GBDT在高维稀疏的数据集上,表现不如支持向量机或者神经网络。
(2)GBDT在处理文本分类特征问题上,相对其他模型的优势不如他在处理数值特征时明显。
(3)训练过程需要串行训练,只能在决策苏内部采用一些局部并行的手段提高训练速度。
6 XGBoost与GBDT的联系和区别
问题:XGBoost与GBDT的联系和区别有哪些?
~~~~~~~
XGBoost采用最大化这个差指作为准则来进行决策树的构建,通过遍历所有特征的所有取值,寻找使得损失函数前后相差最大时对应的分裂方式。此外由于损失函数前后存在差值一定为正的限制,此时r起到了一定的预剪枝效果。