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的决策产生更大的影响,从而影响拟合的模型的效果。

相关文章
|
6月前
|
机器学习/深度学习 算法 Python
请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
【2月更文挑战第28天】【2月更文挑战第101篇】请解释Python中的随机森林算法以及如何使用Sklearn库实现它。
65 3
|
6月前
|
机器学习/深度学习 算法
大模型开发:解释随机森林算法以及它是如何做出决策的。
随机森林是集成学习方法,利用多棵决策树提升性能。通过随机抽样和特征选择创建弱分类器,减少模型相关性。每个决策树基于子数据集和特征子集构建,预测时集成所有决策树结果,分类问题采用投票,回归问题取平均值。这种方法降低过拟合风险,提高准确性和稳定性,对噪声和异常值容忍度高,广泛应用。
89 0
|
6月前
|
机器学习/深度学习 算法
机器学习 - [集成学习]Bagging算法的编程实现
机器学习 - [集成学习]Bagging算法的编程实现
76 1
|
6月前
|
机器学习/深度学习 算法
随机森林算法是如何通过构建多个决策树并将它们的预测结果进行投票来做出最终的预测的?
【2月更文挑战第28天】【2月更文挑战第102篇】随机森林算法是如何通过构建多个决策树并将它们的预测结果进行投票来做出最终的预测的?
115 1
|
5月前
|
机器学习/深度学习 存储 人工智能
算法金 | 使用随机森林获取特征重要性
**随机森林算法简介**:集成多个决策树提升性能,常用于各类任务。在葡萄酒分类项目中,使用`RandomForestClassifier`实现模型,100棵树,得分100%。特征重要性显示了哪些化学成分影响最大。通过特征选择保持高准确性,证明了有效特征选择的重要性。7个关键特征中脯氨酸和酒精含量最重要。简洁高效,适用于特征工程。[链接指向知识星球]
69 5
|
5月前
|
机器学习/深度学习 数据采集 存储
算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
**摘要:** 这篇文章介绍了决策树作为一种机器学习算法,用于分类和回归问题,通过一系列特征测试将复杂决策过程简化。文章详细阐述了决策树的定义、构建方法、剪枝优化技术,以及优缺点。接着,文章讨论了集成学习,包括Bagging、Boosting和随机森林等方法,解释了它们的工作原理、优缺点以及如何通过结合多个模型提高性能和泛化能力。文中特别提到了随机森林和GBDT(XGBoost)作为集成方法的实例,强调了它们在处理复杂数据和防止过拟合方面的优势。最后,文章提供了选择集成学习算法的指南,考虑了数据特性、模型性能、计算资源和过拟合风险等因素。
73 0
算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
|
5月前
|
机器学习/深度学习 算法 前端开发
决策树与随机森林算法在分类问题中的应用
本文探讨了决策树和随机森林两种监督学习算法,它们在分类任务中表现出强大的解释性和预测能力。决策树通过特征测试进行分类,构建涉及特征选择、树生成和剪枝。随机森林是集成学习方法,通过构建多棵决策树并汇总预测结果,防止过拟合。文中提供了Python代码示例,展示如何使用sklearn构建和应用这些模型,并讨论了参数调优和模型评估方法,如交叉验证和混淆矩阵。最后,强调了在实际问题中灵活选择和调整模型参数的重要性。
153 4
|
4月前
|
机器学习/深度学习 数据采集 算法
Python实现随机森林回归模型(RandomForestRegressor算法)项目实战
Python实现随机森林回归模型(RandomForestRegressor算法)项目实战
246 0
|
6月前
|
机器学习/深度学习 算法 数据挖掘
数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
数据分享|R语言逻辑回归、Naive Bayes贝叶斯、决策树、随机森林算法预测心脏病
|
6月前
|
机器学习/深度学习 算法 Python
【Python 机器学习专栏】随机森林算法的性能与调优
【4月更文挑战第30天】随机森林是一种集成学习方法,通过构建多棵决策树并投票或平均预测结果,具有高准确性、抗过拟合、处理高维数据的能力。关键性能因素包括树的数量、深度、特征选择和样本大小。调优方法包括调整树的数量、深度,选择关键特征和参数优化。Python 示例展示了使用 GridSearchCV 进行调优。随机森林广泛应用于分类、回归和特征选择问题,是机器学习中的重要工具。
290 1