1. 随机森林算法思想
随机森林使用多个CART决策树作为弱学习期,不同决策树之间没有关联。当我们进行分类任务时,新的输入样本进入,就让森林中的每一棵决策树分别进行判断和分类,每个决策树会得到一个自己的分类结果,决策树的分类结果中哪一个分类最多,那么随机森林就会把这个结果当作最终的结果。
生成决策树的方法?:
用随机选择的特征,即使用Bagging方法。这么做的原因是:如果训练集中的某几个特征对输出结果有很强的预测性,那么这些特征会被每个决策树所应用,这样会导致树之间具有相关性,这样并不会减小模型的方差。
2. 随机森林的建立过程
第一步:原始训练集中有N个样本,且每个样本有M维特征。从数据集D中有放回的随机抽取x个样本组成训练子集(bootstrap方法),一共进行w次采样,即生成w个训练子集。
第二步:每个训练子集形成一棵决策树,一共w棵决策树。而每一次未被抽到的样本则组成了w个oob(用来做预估)。
第三步:对于单个决策树,树的每个节点处从M个特征中随机挑选m(m<M)个特征,按照节点不纯度最小原则进行分裂。每棵树都一直这样分裂下去,直到该节点的所有训练样例都属于同一类。在决策树的分裂过程中不需要剪枝。
第四步:根据生成的多个决策树分类起对需要进行预测的数据进行预测。根据每棵决策树的投票结果,如果是分类树的话,最后取票数最高的一个类别;如果是回归树的话,利用简单的平均得到最终结果。
3. 随机森林算法优缺点总结
随机森林是Bagging的一个拓展变体,是在以决策树为基学习器构建Bagging集成的基础上,进一步在决策树的训练过程中引入了随机属性选择。
随机森林简单、容易实现、计算开销小,在很多实际应用中都变现出了强大的性能,被誉为“代表集成学习技术水平的方法”。可以看出,随机森林对Bagging只做了小改动。并且,Bagging满足差异性的方法是对训练集进行采样;而随机森林不但对训练集进行随机采样,而且还随机选择特征子集,这就使最终集成的泛化性进一步提升。
随着基学习器数目的增加,随机森林通常会收敛到更低的泛化误差,并且训练效率是优于Bagging的。
优点:
* 训练可以高度并行化,对于大数据时代的大样本训练速度有优势。
* 由于可以随机选择决策树节点划分特征,这样在样本特征维度很高的时候,仍然能高效的训练模型。
* 在训练后,可以给出各个特征对输出的重要性。
* 由于采用了随机采样,训练出的模型的方差小,泛化能力强。
* 相对于Boosting系列的Adaboost和GBDT,RF实现比较简单。
* 对部分特征缺失不敏感。
缺点:
* 在某些噪声比较大的样本集上,RF模型容易陷入过拟合。
* 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。
其他面试题
为什么要有放回的抽样?
保证样本集间有重叠,若不放回,每个训练样本集及其分布都不一样,可能导致训练的各决策树差异性很大,最终多数表决无法“求同”。
为什RF的训练效率优于bagging?
因为在个体决策树的构建过程中,Bagging使用的是“确定型”决策树,Bagging在选择划分属性时要对每棵树对所有特征进行考察,而随机森林仅仅考察一个特征子集。
随机森林需要剪枝吗?
不需要,后剪枝是为了避免过拟合,随机森林选择变量与树的数量,已经避免了过拟合,没必要去剪枝了。一般随机森林要控制的是树的规模,而不是树的置信度,剩下的每棵树需要做的就是尽可能的在自己所对应的数据(特征)集情况下尽可能的做到最好的预测结果。剪枝的作用其实被集成方法消解了,所以作用不大。
随机森林与SVM的比较
(1)不需要调节过多的参数,因为随机森林只需要调节树的数量,而且树的数量一般越多越好,而其他机器学习算法,比如SVM,有非常多超参数需要调整,如选择最合适的和函数、正则惩罚等。
(2)分类较为简单、直接。随机森林和支持向量机都是非参数模型(复杂度随着训练样本的增加而增大)。相较于一般线性模型,就计算消耗来看,训练非参数模型因此更为耗时耗力。分类树越多,需要更耗时来构建随机森林模型。同样,我们训练出来的支持向量机有很多支持向量机,最坏的情况为,训练集有多少实例,就有多少支持向量。虽然,我们可以使用多类支持向量机,但传统多类分类问题的执行一般是one-vs-all(one-vs-all 就是将binary分类的方法应用到多类分类中。比如我想分成K类,那么就将其中一类作为positive),因此我们还是需要为每个类训练一个支持向量机。相反,决策树和随机森林可以毫无压力解决多类问题。
(3)比较容易入手实践。随机森林在训练模型上要更为简单。很容易得到一个又好又具有鲁棒性的模型。随机森林的复杂度与训练样本和树成正比。支持向量机则需要我们在调参方面做些工作,除此之外,计算成本会随着类增加呈线性增长。
(4)小数据上,SVM优异,而随机森林对数据需求较大。就经验来说,我更愿意认为支持向量机在存在极少极值的小数据集上具有优势。随机森林则需要更多数据但一般可以得到非常好的且具有鲁棒性的模型。
随机森林如何处理缺失值?
根据随机森林创建和训练的特点,随机森林对缺失值的处理还是比较特殊的。
* 首先,给缺失值预设一些估计值,比如数值型特征,选择其余数据的中位数或众数作为当前的估计值。
* 然后,根据估计的数值,建立随机森林,把所有数据放进随机森林里面跑一遍。记录每一组数据在决策树中一步一步分类的路径。
* 判断哪组数据和缺失值数据路径最相似,引入一个相似度矩阵,来记录数据之间的相似度,比如有N组数据,相似度矩阵大小就是N*N.
* 如果缺失值是类别变量,通过权重投票得到新估计值,如果是数值型变量,通过加权平均得到新的估计值,如此迭代,直到得到稳定的估计值。
随机森林的过拟合问题
交叉验证
随机森林不会发生过拟合的原因
在建立每一棵决策树的过程中,有两点需要注意:采样和完全分裂。
随机森林有两个随机采样的过程,对输入的数据要进行行、列的采样。对于行采样,采用有放回的方式,也就是在采样得到的样本集合中,可能有重复的样本。假设输入样本为N个,那么采样样本也为N个。这样使得在训练的时候,每一棵树的输入样本都不是全部的样本,是的相对不容易出现over-fitting.
然后进行列采样,从M个特征中,选择m个(m<<M)。
之后就是对采样之后的数据使用完全分裂的方式建立决策树,这样决策树的某一个叶子结点要么是无法继续分裂的,要么里面所有样本都指向同一个分类。
一般的决策树还有剪枝的步骤,但是随机森林的两个随机采样的过程保证了随机性,所以就算不剪枝,也不会出现过拟合。
随机森林与梯度提升树(GBDT)的区别
随机森林:决策树+bagging=随机森林
梯度提升树:决策树+Boosting=GBDT
两者的区别在于bagging 与boosting之间的区别。
像神经网络这样为消耗时间的算法,bagging可通过并行节省大量的时间开销。
baging和boosting都可以有效地提高分类的准确性
一些模型中会造成模型的退化(过拟合)
boosting思想的一种改进型adaboost方法在邮件过滤,文本分类中有很好的性能。
bootstrap, boosting, bagging几种方法的联系
Rand forest与bagging的区别:
1). Rand forest是选与输入样本的数目相同多的次数(可能一个样本会被选取多次,同时也会造成一些样本不会被选取到),而bagging一般选取比输入样本的数目少的样本;
2). bagging是用全部特征来得到分类器,而rand forest是需要从全部特征中选取其中的一部分来训练得到分类器; 一般Rand forest效果比bagging效果好!
bagging:bootstrap aggregating的缩写。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练倒组成,初始训练例在某轮训练集中可以出现多次或根本不出现训练之后可得到一个预测函数序列h.,⋯⋯h 最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。–(训练R个分类器fi,分类器之间其他相同就是参数不同。其中fi是通过从训练集合中(N篇文档)随机取(取后放回)N次文档构成的训练集合训练得到的。–对于新文档d,用这R个分类器去分类,得到的最多的那个类别作为d的最终类别.)
boosting:其中主要的是AdaBoost(AdaptiveBoosting)。初始化时对每一个训练例赋相等的权重1/n,然后用该学算法对训练集训练t轮,每次训练后,对训练失败的训练例赋以较大的权重,也就是让学习算法在后续的学习中集中对比较难的训练铡进行学习,从而得到一个预测函数序列h一⋯h其中h.也有一定的权重,预测效果好的预测函数权重较大,反之较小。最终的预测函数H对分类问题采用有权重的投票方式,对回归问题采用加权平均的方法对新示例进行判别。(类似Bagging方法,但是训练是串行进行的,第k个分类器训练时关注对前k-1分类器中错分的文档,即不是随机取,而是加大取这些文档的概率).
Bagging与Boosting的区别:在于Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boostlng的训练集的选择是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法。Bagging可通过并行训练节省大量时间开销。
bagging和boosting都可以有效地提高分类的准确性。在大多数数据集中,boosting的准确性比bagging高。在有些数据集中,boosting会引起退化。
原文链接:https://blog.csdn.net/weixin_41510260/article/details/94987861
https://zhuanlan.zhihu.com/p/45040640