您当前的位置:首页 > 电脑百科 > 程序开发 > 算法

什么是 随机森林?

时间:2022-08-05 10:10:26  来源:  作者:NVIDIA英伟达中国

随机森林是一种监督式算法,使用由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归。

什么是随机森林?

随机森林是用于分类和回归的一种主流集成学习方法。

集成学习方法结合了多种机器学习 (ML) 算法,以获得更好的模型 – 应用于数据科学的群体智慧。此类学习方法基于这样一种概念:一群对问题领域知之有限的人集思广益,可以获得比一个知识丰富的人更好的解决方案。

随机森林是一组决策树,是几乎人人都熟悉的解决问题的比喻。决策树通过针对数据集元素,询问一系列回答是否的问题来得出答案。在下面的示例中,为了预测一个人的收入,决策会考虑变量(特征),例如此人是否有工作(是或否)以及此人是否有房子。在算法环境中,机器会不断搜索特征,以允许将一组中的观察结果按如下方式进行分割,即结果组之间尽可能不同,而每个不同子组的成员之间尽可能相似。


 

随机森林使用名为“bagging”的技术,通过数据集和特征的随机自助抽样样本并行构建完整的决策树。虽然决策树基于一组固定的特征,而且经常过拟合,但随机性对森林的成功至关重要。


 

随机性可确保单个树之间的相关性较低,从而减少偏差风险。大量树的存在也减少了过拟合问题,如果模型在训练数据中加入过多“噪声”并因此做出糟糕决策,这种问题就会出现。

使用随机森林模型,随着模型中不相关树的数量增加,做出正确预测的可能性也会增加。结果的质量更高,因为它们反映了大多数树做出的决策。此投票过程通过限制误差来保护每个树不互相伤害。即使有些树错误,也会有一些树正确,因此这组树集体朝正确的方向前行。虽然随机森林模型在考虑许多特征时可能会运行缓慢,但即使是使用有限数量特征的小模型也会产生非常好的结果。

随机森林的工作原理是什么?

随机森林中的每棵树在称为自助聚集 (bagging) 的过程中随机对训练数据子集进行抽样。该模型适合这些较小的数据集,并汇总预测结果。通过有放回抽样,可以重复使用同一数据的几个实例,结果就是,这些树不仅基于不同的数据集进行训练,而且还使用不同的特性做出决策。


 

图像来源:KDNuggets

用例

分类示例包括:

 

  1. 欺诈检测
  2. 垃圾邮件检测
  3. 文本情感分析
  4. 预测患者风险、败血症或癌症

 

回归示例包括:

 

  1. 预测欺诈数量
  2. 预测销售额

 

为何选择随机森林?

随机森林模型有五个主要优点:

 

  1. 非常适合回归和分类问题。回归中的输出变量是一个数字序列,例如某个街区的房价。分类问题的输出变量通常是一个单一答案,例如房屋的售价是否高于或低于要价。
  2. 可以处理缺失值并保持高准确性,即使由于 bagging 和有放回抽样而缺失大量数据时也是如此。
  3. 算法由于输出的是“多数规则”,使得模型几乎不可能过拟合。
  4. 该模型可以处理包含数千个输入变量的庞大数据集,因此成为降维的不错工具。
  5. 其算法可用于从训练数据集中识别非常重要的特征。

 

其也有一些缺点:

 

  1. 随机森林优于决策树,但其准确性低于 XGBoost 等梯度提升树集成。
  2. 随机森林包含大量树,因此速度比 XGBoost 慢。

 

梯度提升决策树

梯度提升决策树 (GBDT) 是一种决策树集成学习算法,类似于用于分类和回归的随机森林。随机森林和 GBDT 都构建了由多个决策树组成的模型。两者的区别在于重建和组合的方式。

GBDT 使用一种称为 boosting 的技术,以迭代方式训练一组浅层决策树,每次迭代都使用上一个模型的残差拟合下一个模型。最终得到的预测结果是所有树预测结果的加权总和。随机森林 bagging 可大幅减少差异和过拟合,而 GBDT boosting 则可减少偏差和欠拟合。

XGBoost(极端梯度提升)是 GBDT 的领先、可扩展的分布式变体。使用 XGBoost 时,树并行构建,而非顺序构建。GBoost 遵循按层生长策略,扫描梯度值并使用这些部分和来评估训练集中每个可分割点的分割质量。

XGBoost 因其广泛的用例、可移植性、多样化的语言支持以及云集成而广受欢迎。

与 XGBoost 相比,随机森林模型的准确性可能会因两个不同的误差来源(偏差和方差)而下降:

 

  • 梯度提升模型通过以低学习率进行多轮提升来消除偏差和方差。
  • 梯度提升模型超参数也有助于消除方差。
  • 随机森林模型使用树深度和树的数量消除偏差和方差。
  • 随机森林树可能需要比梯度提升树更深入。
  • 更多数据可减少偏差和方差。

 

NVIDIA GPU 加速的

随机森林、XGBOOST 和端到端数据科学

架构方面,CPU 仅由几个具有大缓存内存的核心组成,一次只可以处理几个软件线程。相比之下,GPU 由数百个核心组成,可以同时处理数千个线程。


 

基于 CUDA-X AI 创建的 NVIDIA RAPIDS™ 开源软件库套件使您完全能够在 GPU 上执行端到端数据科学和分析流程。此套件依靠 NVIDIA CUDA 基元进行低级别计算优化,但通过用户友好型 Python/ target=_blank class=infotextkey>Python 接口实现了 GPU 并行化和高带宽显存速度。


 

借助 RAPIDS GPU DataFrame,数据可以通过一个类似 Pandas 的接口加载到 GPU 上,然后用于各种连接的机器学习和图形分析算法,而无需离开 GPU。这种级别的互操作性可通过 Apache Arrow 等库实现,并且可加速端到端流程(从数据准备到机器学习,再到深度学习)。

RAPIDS 的机器学习算法和数学基元遵循熟悉的类似于 scikit-learn 的 API。单块 GPU 和大型数据中心部署均支持 XGBoost、随机森林等主流工具。针对大型数据集,相较于同等功效的 CPU,这些基于 GPU 的实施方案能够以 10 到 50 倍的速度更快地完成任务。

NVIDIA RAPIDS 团队与 DMLC XGBoost 组织建立了紧密的合作关系,而且 GPU 加速 XGBoost 现已包括无缝嵌入式 GPU 加速,可显著加快模型训练速度并提高准确性。对在配备 NVIDIA P100 加速器和 32 个英特尔至强 E5-2698 CPU 核心的系统上运行的 XGBoost 脚本进行的测试表明,相较于在输出质量相同的非 GPU 系统上运行相同的测试,速度提升了 4 倍。这一点尤为重要,因为数据科学家通常会多次运行 XGBoost,以便调整参数并找到出色的准确性。



Tags:随机森林   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
随机森林算法:集成学习的强大工具
在机器学习领域,随机森林算法是一种强大的集成学习方法,通过组合多个决策树模型来进行分类和回归任务。随机森林算法以其高准确性、鲁棒性和可解释性而受到广泛关注。本文将介...【详细内容】
2023-11-15  Search: 随机森林  点击:(189)  评论:(0)  加入收藏
学习Python集成学习和随机森林算法
简介机器学习模型已经成为多个行业决策过程中的重要组成部分,然而在处理嘈杂或多样化的数据集时,它们往往会遇到困难。这就是集成学习(Ensemble Learning)发挥作用的地方。本...【详细内容】
2023-10-07  Search: 随机森林  点击:(384)  评论:(0)  加入收藏
什么是 随机森林?
随机森林是一种监督式算法,使用由众多决策树组成的一种集成学习方法,输出是对问题最佳答案的共识。随机森林可用于分类或回归。 什么是随机森林? 随机森林是用于分类和回归的一...【详细内容】
2022-08-05  Search: 随机森林  点击:(766)  评论:(0)  加入收藏
随机森林算法是如何在内部工作的
这篇文章是关于什么的在本文中,我们将了解随机森林算法是如何在内部工作的。为了真正理解它,了解一下决策树分类器可能会有帮助。但这并不完全是必需的。注意:我们不涉及建模...【详细内容】
2020-08-31  Search: 随机森林  点击:(297)  评论:(0)  加入收藏
随机森林算法
本次主题是随机森林,杰里米(讲师)提供了一些基本信息以及使用Jupyter Notebook的提示和技巧。 Jeremy谈到的一些重要的事情是,数据科学并不等同于软件工程。 在数据科学中,我们...【详细内容】
2019-11-07  Search: 随机森林  点击:(593)  评论:(0)  加入收藏
▌简易百科推荐
小红书、视频号、抖音流量算法解析,干货满满,值得一看!
咱们中国现在可不是一般的牛!网上的网友已经破了十个亿啦!到了这个互联网的新时代,谁有更多的人流量,谁就能赢得更多的掌声哦~抖音、小红书、、视频号,是很多品牌必争的流量洼地...【详细内容】
2024-02-23  二手车小胖说    Tags:流量算法   点击:(18)  评论:(0)  加入收藏
雪花算法详解与Java实现:分布式唯一ID生成原理
SnowFlake 算法,是 Twitter 开源的分布式 ID 生成算法。其核心思想就是:使用一个 64 bit 的 long 型的数字作为全局唯一 ID。在分布式系统中的应用十分广泛,且 ID 引入了时间戳...【详细内容】
2024-02-03   一安未来  微信公众号  Tags:雪花算法   点击:(54)  评论:(0)  加入收藏
程序开发中常用的十种算法,你用过几种?
当编写程序时,了解和使用不同的算法对解决问题至关重要。以下是C#中常用的10种算法,每个算法都伴随着示例代码和详细说明。1. 冒泡排序 (Bubble Sort):冒泡排序是一种简单的比...【详细内容】
2024-01-17  架构师老卢  今日头条  Tags:算法   点击:(46)  评论:(0)  加入收藏
百度推荐排序技术的思考与实践
本文将分享百度在推荐排序方面的思考与实践。在整个工业界的推广搜场景上,特征设计通常都是采用离散化的设计,需要保证两方面的效果,一方面是记忆,另一方面是泛化。特征都是通过...【详细内容】
2024-01-09  DataFunTalk  微信公众号  Tags:百度推荐   点击:(81)  评论:(0)  加入收藏
什么是布隆过滤器?如何实现布隆过滤器?
以下我们介绍了什么是布隆过滤器?它的使用场景和执行流程,以及在 Redis 中它的使用,那么问题来了,在日常开发中,也就是在 Java 开发中,我们又将如何操作布隆过滤器呢?布隆过滤器(Blo...【详细内容】
2024-01-05  Java中文社群  微信公众号  Tags:布隆过滤器   点击:(94)  评论:(0)  加入收藏
面向推荐系统的深度强化学习算法研究与应用
随着互联网的快速发展,推荐系统在各个领域中扮演着重要的角色。传统的推荐算法在面对大规模、复杂的数据时存在一定的局限性。为了解决这一问题,深度强化学习算法应运而生。本...【详细内容】
2024-01-04  数码小风向    Tags:算法   点击:(106)  评论:(0)  加入收藏
非负矩阵分解算法:从非负数据中提取主题、特征等信息
非负矩阵分解算法(Non-negativeMatrixFactorization,简称NMF)是一种常用的数据分析和特征提取方法,主要用于从非负数据中提取主题、特征等有意义的信息。本文将介绍非负矩阵分解...【详细内容】
2024-01-02  毛晓峰    Tags:算法   点击:(75)  评论:(0)  加入收藏
再谈前端算法,你这回明白了吗?
楔子 -- 青蛙跳台阶一只青蛙一次可以跳上一级台阶,也可以跳上二级台阶,求该青蛙跳上一个n级的台阶总共需要多少种跳法。分析: 当n=1的时候,①只需要跳一次即可;只有一种跳法,即f(...【详细内容】
2023-12-28  前端爱好者  微信公众号  Tags:前端算法   点击:(114)  评论:(0)  加入收藏
三分钟学习二分查找
二分查找是一种在有序数组中查找元素的算法,通过不断将搜索区域分成两半来实现。你可能在日常生活中已经不知不觉地使用了大脑里的二分查找。最常见的例子是在字典中查找一个...【详细内容】
2023-12-22  小技术君  微信公众号  Tags:二分查找   点击:(81)  评论:(0)  加入收藏
强化学习算法在资源调度与优化中的应用
随着云计算和大数据技术的快速发展,资源调度与优化成为了现代计算系统中的重要问题。传统的资源调度算法往往基于静态规则或启发式方法,无法适应动态变化的环境和复杂的任务需...【详细内容】
2023-12-14  职场小达人欢晓    Tags:算法   点击:(169)  评论:(0)  加入收藏
站内最新
站内热门
站内头条