机器学习整理-随机森林、GBDT

1. Bagging和Boosting的定义

相同点:
Baggging 和Boosting都是模型融合的方法,可以将弱分类器融合之后形成一个强分类器,而且融合之后的效果会比最好的弱分类器更好

Bagging(Bootstrap aggregating,引导聚集算法/套袋法):
其算法过程如下:
给定一个大小为n的训练集D,Bagging算法从中均匀、有放回地(即使用自助抽样法)选出m个大小为n’的子集Di,作为新的训练集。在这m个训练集上使用分类、回归等算法**,则可得到m个模型,再通过取平均值、取多数票等方法,即可得到Bagging的结果。

(1)从原始样本集中抽取训练集。每轮从原始样本集中使用Bootstraping的方法抽取n个训练样本在训练集中,有些样本可能被多次抽取到,而有些样本可能一次都没有被抽中)。共进行k轮抽取,得到k个训练集。(k个训练集之间是相互独立的)
(2)每次使用一个训练集得到一个模型,k个训练集共得到k个模型。(注:这里并没有具体的分类算法或回归方法,我们可以根据具体问题采用不同的分类或回归方法,如决策树、感知器等)
(3)对分类问题:将上步得到的k个模型采用投票的方式得到分类结果;对回归问题,计算上述模型的均值作为最后的结果。(所有模型的重要性相同)

Boosting:
AdaBoosting方式每次使用的是全部的样本每轮训练改变样本的权重。下一轮训练的目标是找到一个函数f 来拟合上一轮的残差。当残差足够小或者达到设置的最大迭代次数则停止。Boosting会减小上一轮训练正确的样本的权重增大错误样本的权重。(对的残差小,错的残差大)
梯度提升的Boosting方式是使用代价函数对上一轮训练出的模型函数f的偏导来拟合残差。

2.Bagging和Boosting的区别(4个)是什么?

1)样本选择上:
Bagging:训练集是在原始集中有放回选取的,从原始集中选出的各轮训练集之间是独立的。
Boosting:每一轮的训练集不变,只是训练集中每个样例在分类器中的权重发生变化。而权值是根据上一轮的分类结果进行调整。
2)样例权重
Bagging:使用均匀取样,每个样例的权重相等
Boosting:根据错误率不断调整样例的权值,错误率越大则权重越大。
3)预测函数
Bagging:所有预测函数的权重相等
Boosting:每个弱分类器都有相应的权重,对于分类误差小的分类器会有更大的权重
4)并行计算
Bagging:各个预测函数可以并行生成
Boosting:各个预测函数只能顺序生成,因为后一个模型参数需要前一轮模型的结果。

3.RF和GBDT是什么?

GBDT(Gradient Boosting Decision Tree)
DT + Boosting = GBDT
GBDT是一种boosting算法。boosting工作机制:先从初始训练集训练出一个基学习器,然后在根据基学习器的表现对训练样本分布进行调整,使得先前的基学习器做错的训练样本在后续获得更多关注(增加错误样本权重),然后基于调整后的样本分布训练下一个基学习器,如此重复,直到基学习器达到指定的T时,最终将T个基学习器进行加权结合,得出预测。
RF(Random Forest)
DT + Bagging = RF
随机森林是bagging的一种扩展,在k个数据集选择的时候后,引入了随机属性选择。加入所有属性个数为d,k是随机选择的属性个数。那么k=d的时候,就没有改变。那么k=1的时候后,随机选择一个属性用于计算。推荐的k=log2d.
随机森林的基学习器一般是决策树算法-主要,也有神经网络。
随机森林是对bagging算法的一点改动,但是根能提现样本集之间的差异性。会提高最终预测结果的泛化能力。

4.RF和GBDT的区别

GBDT和随机森林的相同点
1、都是由多棵树组成
2、最终的结果都是由多棵树一起决定

GBDT和随机森林的不同点
1、组成随机森林的树可以是分类树,也可以是回归树;而GBDT只由回归树组成
2、组成随机森林的树可以并行生成;而GBDT只能是串行生成
3、对于最终的输出结果而言,随机森林采用多数投票等;而GBDT则是将所有结果累加起来,或者加权累加起来
4、随机森林对异常值不敏感,GBDT对异常值非常敏感
5、随机森林对训练集一视同仁,GBDT是基于权值的弱分类器的集成
6、随机森林是通过减少模型方差提高性能,GBDT是通过减少模型偏差提高性能
参考:添加链接描述
RF、GBDT、XGBoost常见面试题整理
添加链接描述
添加链接描述

5.什么是随机森林?

Random Forest(随机森林)是一种基于树模型Bagging的优化版本,一棵树的生成肯定还是不如多棵树,因此就有了随机森林,解决决策树泛化能力弱的特点。(可以理解成三个臭皮匠顶过诸葛亮)
同一批数据,用同样的算法只能产生一棵树,这时Bagging策略可以帮助我们产生不同的数据集。Bagging策略来源于bootstrap aggregation:从样本集(假设样本集N个数据点)中重采样选出Nb个样本(有放回的采样,样本数据点个数仍然不变为N),在所有样本上,对这n个样本建立分类器(ID3\C4.5\CART\SVM\LOGISTIC),重复以上两步m次,获得m个分类器,最后根据这m个分类器的投票结果,决定数据属于哪一类。
每棵树的按照如下规则生成:
1.如果训练集大小为N对于每棵树而言,随机有放回地从训练集中的抽取N个训练样本,作为该树的训练集;
2.如果每个样本特征维度为M,指定一个常数m<<M,随机地从M个特征中选取m个特征子集每次树进行分裂时,从这m个特征中选择最优的;
3.每棵树都尽最大程度的生长,并且没有剪枝过程。
两个随机性的引入,使得随机森林不容易陷入过拟合,并且具有很好得抗噪能力(比如:对缺省值不敏感)。
总的来说就是随机选择样本数随机选取特征随机选择分类器建立多颗这样的决策树,然后通过这几课决策树来投票决定数据属于哪一类(投票机制有一票否决制、少数服从多数、加权多数)。

6.随机森林分类效果的影响因素?

森林中任意两棵树的相关性:相关性越大,错误率越大;
森林中每棵树的分类能力:每棵树的分类能力越强,整个森林的错误率越低。
减小特征选择个数m,树的相关性分类能力也会相应的降低;增大m,两者也会随之增大。
所以关键问题如何选择最优的m(或者是范围),这也是随机森林唯一的一个参数。

7. 随机森林有什么优缺点

优点(7):
1.在当前的很多数据集上,相对其他算法有着很大的优势,表现良好
2.它能够处理高维度(feature很多)的数据,并且不用做特征选择(因为特征子集是随机选择的)。
3.在训练完后,它能够给出哪些feature比较重要。
4.训练速度快,容易做成并行化方法(训练时树与树之间相互独立的)。
5.在训练过程中,能够检测到feature间的互相影响
6.对于不平衡的数据集来说,它可以平衡误差
7.如果有很大一部分的特征遗失,仍可以维持准确度,很好得抗噪能力,不容易过拟合
缺点:
1.随机森林已经被证明在某些噪音较大的分类或回归问题会过拟合
2.对于有不同取值属性的数据取值划分较多的属性会对随机森林产生更大的影响,所以随机森林在这种数据上产出的属性权值是不可信的。

8. 随机森林如何处理缺失值?

1.给缺失值预设一些估计值,比如数值型特征,选择其余数据中位数或众数作为当前的估计值
2.根据估计的数值建立随机森林,把所有的数据放进随机森林运行一遍记录每一组数据在决策树中一步一步分类的路径.
3.判断哪组数据缺失数据路径最相似引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N
4.如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代直到得到稳定的估计值
其实,该缺失值填补过程类似于推荐系统中采用协同过滤进行评分预测,先计算缺失特征与其他特征的相似度,再加权得到缺失值的估计,而随机森林中计算相似度的方法(数据在决策树中一步一步分类的路径)乃其独特之处。

9. 随机森林的过拟合问题

你已经建了一个有10000棵树的随机森林模型。在得到0.00的训练误差后,你非常高兴。但是,验证错误是34.23。到底是怎么回事?你还没有训练好你的模型吗?
答:该模型过度拟合,因此,为了避免这些情况,我们要用交叉验证来调整树的数量
转载自

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值