bagging算法(随机森林RF算法)

简介: bagging算法(随机森林RF算法简介) bagging算法特点是各个弱学习器之间没有依赖关系,可以并行拟合。加快计算速度。那么,bagging算法其实是一种工程思维,真正把这个思维转换成可以应用于工程计算的就是随机森林算法 通过上图我们知道,bagging是每个弱学习器之间的并行计算最后综合预测,但是,有一个问题需要我们注意,在训练集到子训练器的过程叫做“子抽样”。

bagging算法(随机森林RF算法简介)

bagging算法特点是各个弱学习器之间没有依赖关系,可以并行拟合。加快计算速度。那么,bagging算法其实是一种工程思维,真正把这个思维转换成可以应用于工程计算的就是随机森林算法
bagging.jpg

通过上图我们知道,bagging是每个弱学习器之间的并行计算最后综合预测,但是,有一个问题需要我们注意,在训练集到子训练器的过程叫做“子抽样”。

这个子抽样是一个“随机有放回采样”,随机有放回采样(bootsrap)是从训练集里面采集固定个数的样本,每采集一个样本后,都将样本放回。之前采集到的样本在放回后有可能继续被采集到。

对于Bagging算法来讲,一般都会随机采集和训练集样本数m一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容并不一定相同。以下说明为什么不一定相同:
如果对有m个样本训练集做T次的随机采样,则由于随机性,T个采样集各不相同。
一个样本,它在某一次含m个样本的训练集的随机采样中,每次被采集到的概率是1/m。不被采集到的概率为1 − 1/m。如果m次采样都没有被采集中的概率是

当m→∞时

所以在bagging的每轮随机采样中,训练集中大约有37%的数据没有被采样集采集中。

因为样本被不断采样,然后不断的被放回,这样增加了样本的扰动能力,就是增加了泛化能力  bagging的集合策略也比较简单,对于分类问题,通常使用简单投票法,得到最多票数的类别或者类别之一为最终的模型输出。对于回归问题,通常使用简单平均法,对T个弱学习器得到的回归结果进行算术平均得到最终的模型输出。

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

RF随机森林算法步骤

我们前面介绍了bagging算法,并提出了它只是一种集成的思想,那么把这种集成的转换成具体的算法,才具有真是的实现意义,那么根据bagging思维,诞生出了一种非常有名的集成算法,即随机森林算法(RF)。

RF随机森林基于的树模型是CART树模型。但是RF随机森林基于CART树模型,是做了改进的,以便更好的应用泛华那能力,主要有两个方面进行:
①采用CART树作为弱学习器来进行集成学习,做分类和回归问题。
②对于普通的决策树,会在节点上所有的n个样本特征中选择一个最优的特征来做决策树的左右子树划分,但是RF通过随机选择节点上的一部分样本特征,这个数字小于n,假设为m,然后在这些随机选择的m个样本特征中,选择一个最优的特征来做决策树的左右子树划分,这两个随机性使得基本模型之间的相关性显著降低,方差下降,从而进一步增强了模型的泛化能力。 

如果m=n,则此时RF的CART决策树和普通的CART决策树没有区别。m越小,则模型约健壮,当然此时对于训练集的拟合程度会变差。也就是说m越小,模型的方差会减小,但是偏倚会增大。在实际案例中,一般会通过交叉验证调参获取一个合适的m的值。

随机森林计算过程:
bagging.jpg

①.从原始训练数据中随机选取n个数据作为训练数据输入(通常n远小于全体训练数据N,这样就存在一部分“袋外数据”始终不被取到,它们可以直接用于测试误差(而无需单独的测试集或验证集)。
②.选取了要输入的训练数据后,开始构建决策树,具体方法是每一个结点从全体特征集M中选取m个特征进行构建(通常m远小于M)。
③.在构造每棵决策树时,选取基尼指数最小的特征来分裂节点构建决策树。决策树的其他结点都采取相同的分裂规则进行构建,直到该节点的所有训练样例都属于同一类或者达到树的最大深度。(该步骤与构建单一决策树相同)
④.重复第2步和第3步多次,每一次输入数据对应一颗决策树,这样就得到了一个随机森林,用于对预测数据进行决策。
⑤.对待预测数据进行预测时,多棵决策树同时进行决策,采用多数投票的方式产生最终决策结果。

随机森林算法的优缺点

优点
1.两个随机性(随机采样,样本最优特征选择)的引入,使得随机森林抗噪声能力强,方差小泛化能力强,不易陷入过拟合(因此不需要剪枝)。
2.由bagging的思想可知,每颗树是独立的,故模型易于高度并行训练,且训练速度快,适合处理大数据 。
3.由于可以随机选择决策树节点划分的特征,因此能够处理高维度(特征多)的数据,事先不用做特征选择;而且连续和离散数据均可,且无需归一化数据。 
4.创建随机森林时,是对参数的无偏估计 。
5.训练后,可以给出各个特征对于输出结果的重要性排序,并且能够检测到特征间的相互影响 。
6.引入了不少随机性在模型里,故模型对部分特征缺失不敏感 。
7.由于随机森林对误差率是无偏估计,因此在算法中不需要再进行交叉验证或者设置单独的测试集来获取测试集上误差的无偏估计。

缺点
1.在某些噪音比较大的样本集上,RF模型容易陷入过拟合。
2. 取值划分比较多的特征容易对RF的决策产生更大的影响,从而影响拟合的模型的效果。

相关文章
|
27天前
|
机器学习/深度学习 算法 Python
请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
【2月更文挑战第28天】【2月更文挑战第101篇】请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
|
27天前
|
机器学习/深度学习 算法
随机森林算法是如何通过构建多个决策树并将它们的预测结果进行投票来做出最终的预测的?
【2月更文挑战第28天】【2月更文挑战第102篇】随机森林算法是如何通过构建多个决策树并将它们的预测结果进行投票来做出最终的预测的?
|
4月前
|
机器学习/深度学习 算法 前端开发
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
【数据挖掘】袋装、AdaBoost、随机森林算法的讲解及分类实战(超详细 附源码)
38 0
|
3月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
32 1
|
8天前
|
机器学习/深度学习 算法 Python
使用Python实现随机森林算法
使用Python实现随机森林算法
17 0
|
1月前
|
机器学习/深度学习 数据采集 算法
实现机器学习算法(如:决策树、随机森林等)。
实现机器学习算法(如:决策树、随机森林等)。
23 0
|
4月前
|
机器学习/深度学习 算法 数据库
决策树与随机森林算法
决策树和随机森林都是用于分类和回归的的算法。决策树的原理是通过一系列的问题进行if、else的推导。随机森林是集合学习算法,即把很多的机器学习算法综合在一起组成一个更大的模型。
|
9月前
|
机器学习/深度学习 传感器 算法
【RF分类】基于随机森林算法的数据分类附matlab代码
【RF分类】基于随机森林算法的数据分类附matlab代码
|
5月前
|
机器学习/深度学习
家用电器功率预测:基于LGB knn 随机森林 决策树 详细调参 的家用电器功率预测 完整代码+数据 可直接运行 毕业设计
家用电器功率预测:基于LGB knn 随机森林 决策树 详细调参 的家用电器功率预测 完整代码+数据 可直接运行 毕业设计
25 0
|
7月前
|
机器学习/深度学习 传感器 算法
多元分类预测 | Matlab 鲸鱼优化算法优化随机森林(WOA-RF)分类预测
多元分类预测 | Matlab 鲸鱼优化算法优化随机森林(WOA-RF)分类预测