前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >随机森林算法通俗易懂(改进的随机森林算法)

随机森林算法通俗易懂(改进的随机森林算法)

作者头像
全栈程序员站长
发布于 2022-07-30 04:28:01
发布于 2022-07-30 04:28:01
2.1K0
举报

大家好,又见面了,我是你们的朋友全栈君。

前面几篇我们探讨了决策树算法集成学习方法,今天我们就来探讨下基于bagging集成的决策树算法——随机森林(Random Forest)。随机森林虽然简单,但它是最强大的机器学习算法之一,也是实际应用中非常常用的算法之一,是我们必须要掌握的算法。 首先让我们简单的回顾下决策树算法,因为它是随机森林的基础。

1)决策树

决策树最大的特点就是直观,易解释。大家生活中在某一个时刻也在无意或有意的使用它,比如我们之前举的借钱的栗子。 决策树算法根据特征选择的方式不同,可以分为ID3算法,C4.5算法,CART算法。在CART算法中,使用Gini指数做特征选择,选择Gini指数最小的特征以及其对应的切分点作为最优特征与最优的切分点,循环反复直到满足停止条件。 由于决策树几乎不对训练数据做任何的假设,在不添加任务约束,树结构将会根据训练数据的特性自由生长,达到百分百的正确率。为了提高决策树的泛化能力,决策树使用了剪枝的方法。但是剪枝在减少模型方差的同时,也减小了模型的偏差(准确度)。那么有没有其他方法,在降低模型方差的同时,又不降低显著降低模型偏差?非常巧,上一篇我们提到的bagging集成方法正好有这个特性。 使用bagging集成多颗决策树(CART树)就叫做随机森林。

2)随机森林

我们在上篇在探讨bagging集成学习方法时,提到bagging集成方法有效的前提条件是,基模型之间必须保持低相关性,低相关性才能保证基模型之间的差异性,有差异性的基模型组合在一起才能成为一个更强大模型。 为了让CART树有更大差异性,随机森林除了对样本进行随机过采样,增加训练集的随机性之外,还在树的生成时引入了额外的随机,即特征随机。在树的生成时,选择随机采样的特征中的最好的特征作为分裂节点,这样使得每棵树有更大的差异性。

下面我们总结下随机森林的算法过程: 输入:数据量为 m m m的训练集 D D D, T T T颗CART树 输出:最终的随机森林 f ( x ) f(x) f(x) 1)对训练集 D D D进行 m m m次随机过采样,得到样本量为 m m m的采样集 D s a m p l e D_{sample} Dsample​; 2)在所有属性特征中随机选择 k k k个属性特征,选择最佳分割属性特征作为节点构建CART树 T ( x ) T(x) T(x); 3)重复以上两步 T T T次,即建立了 T T T颗决策树; 4)这 T T T颗决策树组成随机森林。如果是分类算法预测,则通过投票表决数据最终属于哪一个类别;如果是回归预测,则 通过平均作为最终模型的输出。

4)Out of Bag评价

对于Bagging,采用有放回的采样,那么一些样本可能被多次重复采样,有一些可能不会被采样。对于一个大小为 m m m的训练集进行随机采样,样本每一次被采样的概率为 1 m \frac{1}{m} m1​,没有被采样到的概率为 1 − 1 m 1-\frac{1}{m} 1−m1​, m m m次都没有被采样到的样本的概率为 ( 1 − 1 m ) m {(1-\frac{1}{m})}^m (1−m1​)m,当 m → ∞ m\rightarrow \infty m→∞时, lim ⁡ m → + ∞ = 1 e ≈ 0.368 {\lim_{m \to +\infty}}=\frac{1}{e}\approx0.368 limm→+∞​=e1​≈0.368 也就是说,对于大小为 m m m的训练集,平均只有63.2%的样本被每个分类器采样,剩余的36.8%没有被采样到,没有被采样的样本被称为Out of Bag。 注意,每个分类器的36.8%的样本是不一样的。由于分类器在训练的时候没有使用到Out of Bag的样本数据,因此这部分可以用来评估分类器,进而不需要另外划分验证集或者做交叉验证了。在sklearn随机森林库类中,你可以通过oob_score=True来自动评估,评估结果通过oob_score_查看,具体我们下篇再探讨。

3)随机森林的其他应用

随机森林除了做正常的分类与回归预测,还可以使用到其他的一些场景。

  • 计算特征重要性 使用随机森林计算特征的重要性应该是我们使用的最多的一个场景了。计算特征重要性的指标有很多,可以使用经过特征节点的样本比例、特征节点的纯度减少、特征在随机森林所有的树中的平均深度、或者随机更换一些特征,重新建立决策树,计算新模型的正确率的变化。scikit-learn中随机森林库类通过将特征贡献的样本比例与纯度减少相结合得到特征的重要性。
  • 异常值检测——Isolation Forest 使用随机森林也可以做异常值检测。原理为,计算所有树中每一个样本从根到叶子的距离总和 D ( x ) D(x) D(x),如果样本为异常值,它应该在大多数树中很快就能从根到达叶子,即D(x)较小。
  • 计算样本的相似度 使用随机森林还可以计算样本的相似度。原理为,如果两个样本同时出现在相同的叶节点的次数越多,则二者越相似。

4)总结

下面我们对随机森林算法的优缺点做一个总结。

随机森林的主要优点:

  • 支持并行处理;
  • 不需要对特征进行标准化处理;
  • 不需要对特征缺失值进行处理;
  • 模型较稳定,泛化能力强;
  • 模型可以输出特征重要性;
  • 使用Out of Bag,不需要单独划分测试集;

随机森林的主要缺点:

  • 由于有多个基模型组合而成,模型不易解释;
  • 树较多时,训练时间比较久;

随机森林是非常强大的算法,可以作为我们做分类任务首要尝试的算法。

(欢迎大家在评论区探讨交流,也欢迎大家转载,转载请注明出处!) 上篇:集成学习方法之Bagging,Boosting,Stacking 下篇:Scikit-learn随机森林算法库总结与调参实践

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/128947.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
随机森林算法
Bagging框架,即 Bootstrap Aggregating,是一个用于提高机器学习算法稳定性和准确性的方法。Bagging 算法通过对原始数据集进行有放回的抽样,生成多个不同的数据子集,然后分别在这些子集上训练模型。最后,通过对这些模型的预测结果进行投票(分类问题)或求平均(回归问题),得到最终的预测。Bagging 方法可以有效减少模型的方差,防止过拟合,并提高模型的泛化能力。
@小森
2024/03/15
1850
随机森林算法
决策树与随机森林(从入门到精通)[通俗易懂]
决策树(decision tree)是一种基本的分类与回归方法,本文主要讨论用于分类的决策树。决策树学习通常包括三个步骤:特征选择,决策树的生成和决策树的修剪。而随机森林则是由多个决策树所构成的一种分类器,更准确的说,随机森林是由多个弱分类器组合形成的强分类器。
全栈程序员站长
2022/08/01
7870
决策树与随机森林(从入门到精通)[通俗易懂]
图解机器学习 | 随机森林分类模型详解
教程地址:http://www.showmeai.tech/tutorials/34
ShowMeAI
2022/03/10
5.6K0
图解机器学习 | 随机森林分类模型详解
[机器学习算法]随机森林
从统计学的角度来讲,将模型的性能寄希望于单棵决策树是不稳健的,这意味着它在处理未知数据时预测结果的方差是较大的。如同我们做重要决定时会考虑多个专家的意见,元算法meta-algorithm主张综合多个分类器的结果做预测,元算法也被称为集成方法ensemble method,主要思路包括:
TOMOCAT
2020/06/09
1.3K0
[机器学习算法]随机森林
三个臭皮匠顶个诸葛亮的随机森林算法!
随机森林一个已被证明了的成功的集成分类器,特别是用在多维分类问题上更是体现出其强大之处。一个随机森林是一个决策树的集合,可以看作是一个分类器包括很多不同的决策树。整个算法包括三部分:特征和数据的分组,训练决策树,最后的结果投票。 1. 随机森林的分组策略 为了保持在随机森林中每个决策树的差异性,选择在生成决策树的时候选择不同特征集在不同的数据集上进行训练,生成最终的决策树。因此,我们需要对数据集和特征集进行分组,在分组的过程中,分别对数据集的分组和对特征集的分组。 在分组的过程中,采用基于Bootstr
智能算法
2018/04/02
9440
三个臭皮匠顶个诸葛亮的随机森林算法!
随机森林算法梳理
首先来说一下集成学习。集成学习在学术界和工业界都有很高的热度,例如Kaggle竞赛中神挡杀神佛挡杀佛的XGBoost就是一个典型的例子。那么什么是集成学习?最通俗易懂的理解就是:"三个臭皮匠,顶个诸葛亮"。把"臭皮匠"组合起来,其决策能力可能超过"诸葛亮"。
数据森麟
2019/10/12
1.1K0
机器学习算法-随机森林
随机森林是一种监督式学习算法,适用于分类和回归问题。它可以用于数据挖掘,计算机视觉,自然语言处理等领域。随机森林是在决策树的基础上构建的。
zhangjiqun
2024/12/14
2700
机器学习算法-随机森林
集成学习---随机森林
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
张凝可
2019/08/21
5460
机器学习(24)之Bagging与随机森林
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 在(机器学习(17)之集成学习原理总结)中,我们谈到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据
昱良
2018/04/04
6600
机器学习(24)之Bagging与随机森林
通俗解释随机森林算法
首先我们来复习一下之前介绍过的两个机器学习模型:Bagging和Decision Tree。Bagging是通过bootstrap的方式,从原始的数据集D中得到新的D^;然后再使用一些base algorithm对每个D^都得到相应的gt;最后将所有的gt通过投票uniform的形式组合成一个G,G即为我们最终得到的模型。Decision Tree是通过递归形式,利用分支条件,将原始数据集D切割成一个个子树结构,长成一棵完整的树形结构。Decision Tree最终得到的G(x)是由相应的分支条件b(x)和分支树Gc(x)递归组成。
红色石头
2022/01/12
3620
通俗解释随机森林算法
随机森林原理介绍与适用情况(综述篇)'建议收藏'
随机森林是一种集成算法(Ensemble Learning),它属于Bagging类型,通过组合多个弱分类器,最终结果通过投票或取均值,使得整体模型的结果具有较高的精确度和泛化性能。其可以取得不错成绩,主要归功于“随机”和“森林”,一个使它具有抗过拟合能力,一个使它更加精准。
计算机与AI
2020/11/19
6.9K0
随机森林原理介绍与适用情况(综述篇)'建议收藏'
机器学习集成算法——袋装法和随机森林
随机森林是最流行、最强大的机器学习算法之一。它是机器学习集成算法中的一种,可称之为自助集成(Bootstrap Aggregation)或袋装法(Bagging)。
花落花飞去
2018/02/02
5.2K0
机器学习集成算法——袋装法和随机森林
算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
决策树是一种简单直观的机器学习算法,它广泛应用于分类和回归问题中。它的核心思想是将复杂的决策过程分解成一系列简单的决策,通过不断地将数据集分割成更小的子集来进行预测。本文将带你详细了解决策树系列算法的定义、原理、构建方法、剪枝与优化技术,以及它的优缺点。
算法金
2024/06/25
6300
算法金 | 决策树、随机森林、bagging、boosting、Adaboost、GBDT、XGBoost 算法大全
机器学习之决策树与随机森林模型
本文介绍了什么是机器学习,机器学习的应用,机器学习的算法,机器学习的框架,机器学习的调参,机器学习中的竞赛,以及机器学习的前景。
汪毅雄
2017/10/17
3.5K2
机器学习之决策树与随机森林模型
随机森林算法简单讲解
在机器学习中通常分为有监督学习、无监督学习,半监督学习和强化学习四大类。而随机森林是一种典型的有监督学习算法,它是在决策树基础上得到的一种集成学习(bagging)算法。
用户7569543
2020/07/17
1.6K0
随机森林算法及其实现(Random Forest)
  作为新兴起的、高度灵活的一种机器学习算法,随机森林(Random Forest,简称RF)拥有广泛的应用前景,从市场营销到医疗保健保险,既可以用来做市场营销模拟的建模,统计客户来源,保留和流失,也可用来预测疾病的风险和病患者的易感性。最初,我是在参加校外竞赛时接触到随机森林算法的。最近几年的国内外大赛,包括2013年百度校园电影推荐系统大赛、2014年阿里巴巴天池大数据竞赛以及Kaggle数据科学竞赛,参赛者对随机森林的使用占有相当高的比例。此外,据我的个人了解来看,一大部分成功进入答辩的队伍也都选择了Random Forest 或者 GBDT 算法。所以可以看出,Random Forest在准确率方面还是相当有优势的。
全栈程序员站长
2022/07/25
1K0
随机森林算法及其实现(Random Forest)
随机森林
在机器学习的分类中,集成学习是按照学习方式分类的一种机器学习,所以先从集成学习讲起。
章鱼carl
2022/03/31
5010
随机森林
ML算法(四)——Bagging和随机森林算法
前面一篇文章主要解释了集成学习算法中Boosting一类的典型代表adaboost的数学原理,在集成学习中还有一种模型是Bagging,它和Boosting算法的主要区别在于每个基学习器是否有依赖拓扑关系,Boosting是不断修正前一个基学习器的训练误差来生成新的基学习器,而Bagging则不然,它的基学习器不存在明显的强依赖关系,每个基学习器可以并行的训练。随机森林算法是Bagging模型的一个扩展变体。
用户7506105
2021/08/10
9740
ML算法(四)——Bagging和随机森林算法
决策树与随机森林
首先,在了解树模型之前,自然想到树模型和线性模型有什么区别呢?其中最重要的是,树形模型是一个一个特征进行处理,之前线性模型是所有特征给予权重相加得到一个新的值。决策树与逻辑回归的分类区别也在于此,逻辑回归是将所有特征变换为概率后,通过大于某一概率阈值的划分为一类,小于某一概率阈值的为另一类;而决策树是对每一个特征做一个划分。另外逻辑回归只能找到线性分割(输入特征x与logit之间是线性的,除非对x进行多维映射),而决策树可以找到非线性分割。
西西木木
2020/06/02
1.3K0
决策树与随机森林
Bagging与随机森林算法原理小结
    在集成学习原理小结中,我们讲到了集成学习有两个流派,一个是boosting派系,它的特点是各个弱学习器之间有依赖关系。另一种是bagging流派,它的特点是各个弱学习器之间没有依赖关系,可以并行拟合。本文就对集成学习中Bagging与随机森林算法做一个总结。
刘建平Pinard
2018/08/14
1.3K0
Bagging与随机森林算法原理小结
相关推荐
随机森林算法
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档