什么是随机森林?

NVIDIA 大年夜教室 | 什么是 随机森林?_丛林_模子 科技快讯

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

集成学习方法结合了多种机器学习 (ML) 算法,以得到更好的模型 – 运用于数据科学的群体聪慧。
此类学习方法基于这样一种观点:一群对问题领域知之有限的人群策群力,可以得到比一个知识丰富的人更好的办理方案。

随机森林是一组决策树,是险些大家都熟习的办理问题的比喻。
决策树通过针对数据集元素,讯问一系列回答是否的问题来得出答案。
不才面的示例中,为了预测一个人的收入,决策会考虑变量(特色),例如此人是否有事情(是或否)以及此人是否有屋子。
在算法环境中,机器会不断搜索特色,以许可将一组中的不雅观察结果按如下办法进行分割,即结果组之间尽可能不同,而每个不同子组的成员之间尽可能相似。

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

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

利用随机森林模型,随着模型中不干系树的数量增加,做出精确预测的可能性也会增加。
结果的质量更高,由于它们反响了大多数树做出的决策。
此投票过程通过限定偏差来保护每个树不相互侵害。
纵然有些树缺点,也会有一些树精确,因此这组树集体朝精确的方向前行。
虽然随机森林模型在考虑许多特色时可能会运行缓慢,但纵然是利用有限数量特色的小模型也会产生非常好的结果。

随机森林的事情事理是什么?

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

图像来源:KDNuggets

用例

分类示例包括:

敲诈检测垃圾邮件检测文本情绪剖析预测患者风险、败血症或癌症

回归示例包括:

预测敲诈数量预测发卖额

为何选择随机森林?

随机森林模型有五个紧张优点:

非常适宜回归和分类问题。
回归中的输出变量是一个数字序列,例如某个街区的房价。
分类问题的输出变量常日是一个单一答案,例如房屋的售价是否高于或低于要价。
可以处理缺失落值并保持高准确性,纵然由于 bagging 和有放回抽样而缺失落大量数据时也是如此。
算法由于输出的是“多数规则”,使得模型险些不可能过拟合。
该模型可以处理包含数千个输入变量的弘大数据集,因此成为降维的不错工具。
其算法可用于从演习数据集中识别非常主要的特色。

其也有一些缺陷:

随机森林优于决策树,但其准确性低于 XGBoost 等梯度提升树集成。
随机森林包含大量树,因此速率比 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 接口实现了 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,以便调度参数并找到出色的准确性。