集成学习面试题 什么是集成学习算法? 集成学习算法是一种优化手段或者策略,将多个较弱的模型集成模型组,一般的弱分类器可以是决策树,SVM,KNN等构成。其中的模型可以单独进行训练,并且它们的预测能以某种方式结合起来去做出一个总体预测。 集成学习主要有哪几种框架? 集成学习从集成思想的架构分为Bagging,Boosting,Stacking三种。 简单介绍一下bagging,常用bagging算法有哪些? Bagging 多次采样,训练多个分类器,集体投票,旨在减小方差, 基于数据随机重抽样的分类器构建方法。从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。
集成学习算法是一种优化手段或者策略,将多个较弱的模型集成模型组,一般的弱分类器可以是决策树,SVM,KNN等构成。其中的模型可以单独进行训练,并且它们的预测能以某种方式结合起来去做出一个总体预测。
集成学习从集成思想的架构分为Bagging,Boosting,Stacking三种。
Bagging
基于数据随机重抽样的分类器构建方法。从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果。
算法流程:
对于t=1,2 \dots T
如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。
常用bagging算法:随机森林算法
Boosting
训练过程为阶梯状,基模型按次序进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化,每次都是提高前一次分错了的数据集的权值,最后对所有基模型预测的结果进行线性组合产生最终的预测结果。
算法流程:
给定初始训练数据,由此训练出第一个基学习器;
根据基学习器的表现对样本进行调整,在之前学习器做错的样本上投入更多关注;
用调整后的样本,训练下一个基学习器;
重复上述过程T次,将T个学习器加权结合。
常用boosting算法:
其中w是权重,\phi是弱分类器的集合,可以看出最终就是基函数的线性组合。
Stacking
将训练好的所有基模型对训练集进行预测,第个i基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第i个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测。
stacking常见的使用方式:
低偏差意味着模型的预测值接近实际值。换句话说,该模型有足够的灵活性,以模仿训练数据的分布。貌似很好,但是别忘了,一个灵活的模型没有泛化能力。这意味着,当这个模型用在对一个未曾见过的数据集进行测试的时候,它会令人很失望。
在这种情况下,我们可以使用bagging算法(如随机森林),以解决高方差问题。bagging算法把数据集分成重复随机取样形成的子集。然后,这些样本利用单个学习算法生成一组模型。接着,利用投票(分类)或平均(回归)把模型预测结合在一起。另外,为了应对大方差,我们可以:
最常用的基分类器是决策树,原因:
不能:
Bagging的主要好处是集成后的分类器的方差,比基分类器的方差小。
随机森林属于Bagging类的集成学习,对样本分布较为敏感的分类器更适用于Bagging。
线性分类器或者K-近邻都是较为稳定的分类器,本身方差就不大。
线性分类器或者K-近邻可能会由于Bagging的采样,导致在训练中更难收敛,增大偏差。
GBDT计算方法:
Xgb主要有三种计算方法: