随机森林是一种灵活,易于使用的机器学习算法,即使没有超参数调整,也能在大多数情况下产生出色的结果。它也是最常用的算法之一,因为它简单,并且可以用于分类和回归任务。在这篇文章中,您将学习随机森林算法如何工作以及其他几个重要的事情。

目录:

  • 这个怎么运作
  • 真实生活类比
  • 特征重要性
  • 决策树与随机森林的区别
  • 重要的超参数(预测能力,速度)
  • 优点和缺点
  • 用例
  • 摘要

这个怎么运作:

随机森林是一种监督学习算法。就像你已经从它的名字中看到的一样,它创造了一个森林,并使它在某种程度上是随机的。它构建的“森林”是决策树的集合,大部分时间都是用“装袋”方法训练的。装袋方法的一般思想是学习模型的组合增加了整体结果。

用简单的话来说:随机森林构建多个决策树并将它们合并在一起以获得更准确和稳定的预测。

随机森林的一大优势是,它可以用于分类和回归问题,这些问题构成了当前机器学习系统的大部分。我将在分类中讨论随机森林,因为分类有时被认为是机器学习的基石。您可以在下面看到随机森林如何使用两棵树:

随机森林具有与决策树或装袋分类器几乎相同的超参数。幸运的是,您不必将决策树与装袋分类器组合在一起,只需轻松使用随机森林的分类器类即可。就像我已经说过的,使用Random Forest,你也可以使用Random Forest回归量来处理回归任务。

随机森林为模型增加了额外的随机性,同时种植树木。它不是在分割节点时搜索最重要的特征,而是在随机特征子集中搜索最佳特征。这导致了广泛的多样性,通常导致更好的模型。

因此,在随机森林中,用于分割节点的算法仅考虑特征的随机子集。您甚至可以通过为每个特征使用随机阈值而不是搜索最佳可能阈值(如正常决策树那样)来使树更随机。

真实生活类比:

想象一下,一个名叫安德鲁的人,想要决定在一年的假期旅行中应该去哪些地方。他问那些认识他的人。首先,他去找一位朋友,朋友问安德鲁之前他去过哪里,他是否喜欢。根据答案,他会给安德鲁一些建议。

这是典型的决策树算法方法。安德鲁斯的朋友通过使用安德鲁的答案创建了规则,以指导他决定应该向安德鲁推荐什么。

之后,安德鲁开始要求越来越多的朋友给他建议,他们再次问他不同的问题,他们可以从中得到一些建议。然后他选择了对他最推荐的地方,这是典型的随机森林算法方法。

特征重要性:

随机森林算法的另一个高质量是,很容易测量每个特征对预测的相对重要性。Sklearn为此提供了一个很好的工具,它可以通过查看使用该功能的树节点减少森林中所有树木的杂质来测量特征的重要性。它会在训练后自动为每个要素计算此分数并对结果进行缩放,以使所有重要性的总和等于1。

如果你不知道决策树是如何工作的,如果你不知道叶子或节点是什么,这里是维基百科的一个很好的描述:在决策树中,每个内部节点代表一个属性的“测试”(例如硬币正面还是反面朝上),每个分支代表测试的结果,每个叶节点代表一个类标签(在计算所有属性后作出决定)。 没有子节点的节点是叶子。

通过查看特征重要性,您可以决定要删除哪些特征,因为它们对预测过程没有足够的贡献或没有贡献。这很重要,因为机器学习的一般规则是,您拥有的特征越多,您的模型就越容易受到过度拟合的影响,反之亦然。

下面你可以看到一个表格和一个可视化,它显示了13个特征的重要性,我在监督分类项目中使用了有名的泰坦尼克号数据集。你可以在这里找到整个项目。

决策树与随机森林之间的差异:

就像我已经提到的,随机森林是决策树的集合,但是存在一些差异。

如果您将具有要素和标签的训练数据集输入到决策树中,它将制定一组规则,用于进行预测。

例如,如果您想预测一个人是否会点击在线广告,您可以收集过去点击过的人的广告以及描述他的决定的一些功能。如果将功能和标签放入决策树中,它将生成一些规则。然后,您可以预测广告是否会被点击。相比之下,随机森林算法随机选择观察和特征来构建几个决策树,然后平均结果。

另一个区别是“深层”决策树可能会受到过度拟合的影响。随机森林通过创建特征的随机子集并使用这些子集构建较小的树来防止过度拟合。之后,它结合了子树。请注意,这不会每次都起作用,并且它还会使计算速度变慢,具体取决于随机林构建的树数。

重要的超参数:

随机森林中的超参数用于增加模型的预测能力或使模型更快。我将在这里谈谈sklearns内置随机森林函数的超参数。

1.增加预测能力

首先,有“n_estimators”超参数,它只是算法在进行最大投票或取平均预测之前构建的树数。通常,更多数量的树会提高性能并使预测更稳定,但它也会减慢计算速度。

另一个重要的超参数是“max_features”,它是Random Forest考虑拆分节点的最大特征数。Sklearn提供了几个选项,在他们的文档中有描述。

我们将在速度方面讨论的最后一个重要的超参数是“min_sample_leaf”。与其名称一样,这确定了拆分内部节点所需的最小叶子数。

2.提高模型速度

“n_jobs”超参数告诉引擎是多少处理器允许使用。如果它的值为1,则它只能使用一个处理器。值“-1”表示没有限制。

“random_state”使模型的输出可复制。当模型具有random_state的确定值并且已经给出相同的超参数和相同的训练数据时,该模型将始终产生相同的结果。

最后,还有“oob_score”(也称为oob采样),它是一种随机森林交叉验证方法。在此抽样中,大约三分之一的数据不用于训练模型,可用于评估其性能。这些样品称为袋外样品。它与留一法交叉验证方法非常相似,但几乎没有额外的计算负担。

优点和缺点:

就像我已经提到的,随机森林的一个优点是它可以用于回归和分类任务,并且很容易查看它分配给输入要素的相对重要性。

随机森林也被认为是一种非常方便易用的算法,因为它的默认超参数通常会产生良好的预测结果。超参数的数量也不是那么高,而且它们很容易理解。

机器学习中的一个重大问题是过度拟合,但大多数情况下,这对于随机森林分类器来说不容易发生。那是因为如果森林中有足够的树,分类器就不会过度拟合模型。

随机森林的主要局限在于大量决策树可以使算法减慢并且对实时预测无效。一般来说,这些算法训练速度很快,但一旦训练完成预测就很慢。更准确的预测需要更多的树,这导致更慢的模型。在大多数实际应用中,随机森林算法足够快,但肯定存在运行时性能很重要而其他方法更受欢迎的情况。

当然,随机森林是一种预测建模工具,而不是一种描述性工具。这意味着,如果您正在寻找数据中关系的描述,则首选其他方法。

用例:

随机森林算法用于许多不同的领域,如银行,股票市场,医药和电子商务。例如,在银行业中,它用于检测将比其他人更频繁地使用银行服务的客户,并及时偿还他们的债务。在此域中,它还用于检测想要诈骗银行的欺诈客户。在金融领域,它用于确定未来股票的行为。在医疗保健领域,它用于识别医学中组分的正确组合,并分析患者的病史以识别疾病。最后,在电子商务中,随机森林用于确定客户是否真的喜欢该产品。

摘要:

随机森林是一个很好的算法,可以在模型开发过程的早期进行训练,看看它是如何执行的,并且由于其简单性,很难建立一个“坏”的随机森林。如果您需要在短时间内开发模型,此算法也是一个很好的选择。最重要的是,它提供了一个非常好的指标,表明它为您的功能赋予的重要性。

随机森林在性能方面也很难被击败。当然,您可能总能找到一个能够表现更好的模型,比如神经网络,但这些通常需要花费更多的时间进行开发。最重要的是,它们可以处理许多不同的要素类型,如二进制,分类和数字。

总体而言,随机森林是一种(大多数)快速,简单和灵活的工具,尽管它有其局限性。

点击英文原文 https://towardsdatascience.com/the-random-forest-algorithm-d457d499ffcd

更多文章欢迎访问: http://www.apexyun.com

公众号:银河系1号

联系邮箱:public@space-explore.com

(未经同意,请勿转载)

matlab 随机森林算法_随机森林算法相关推荐

  1. 【Matlab】智能优化算法_蜻蜓优化算法DA

    [Matlab]智能优化算法_蜻蜓优化算法DA 1.背景介绍 2.灵感 3.公式推导 3.1 勘探和开发操作 4.算法流程图 5.文件结构 6.伪代码 7.详细代码及注释 7.1 DA.m 7.2 d ...

  2. 【Matlab】智能优化算法_蚁狮优化算法ALO

    [Matlab]智能优化算法_蚁狮优化算法ALO 1.背景介绍 2.基本思想 3.公式推导 3.1 ALO算法的运算符 3.2 蚂蚁的随机游动 3.3 困在蚂蚁坑里 3.4 修建陷阱 3.5 蚂蚁划向 ...

  3. 【Matlab】智能优化算法_灰狼优化算法GWO

    [Matlab]智能优化算法_灰狼优化算法GWO 1.背景介绍 2.基本思想 2.1 等级制度 2.2 狩猎方式 3.公式推导 3.1 社会等级制度 3.2 包围猎物 3.3 包围猎物 3.4 攻击猎 ...

  4. gbdt 算法比随机森林容易_随机森林与GBDT

    Bagging策略 1.总样本数量是n个,从样本中重采样(有放回的)选出n个样本 ,会有约33.2%的样本不会被抽到 2.在所有属性上对这n个样本建立分类器(比如决策树,svm,lr) 3.重复步骤1 ...

  5. python随机森林库_随机森林算法入门(python)

    目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...

  6. java利用复循环洗牌算法_随机洗牌算法

    今天偶然看到群里的朋友说道,面试被问如何将扑克牌随机洗牌输出.笔者觉得这道题挺有意思而且挺开放性,有多种不同的实现方式.然后我就随手写了一个算法,仔细一想这个算法的优化空间挺大,于是又写出三种算法. ...

  7. matlab粒子群加约束条件_粒子群算法(PSO)MATLAB实现

    1.PSO相关知识介绍 1.1PSO算法的基础理论 人们在决策过程中常常会综合两种重要的信息:第一种是他们自己的经验,第二种是其他人的经验. 同样的道理,群鸟在觅食过程中,每只鸟的初始状态都是出于随机 ...

  8. 时间序列分类算法_时间序列分类算法简介

    时间序列分类算法 A common task for time series machine learning is classification. Given a set of time serie ...

  9. xgboost算法_基于XGBoost算法构建投资组合

    摘要 极端梯度提升 (eXtreme Gradient Boosting) 是一种基于决策树的集成机器学习方法,适用于分类和回归问题.其优点是速度快.效果好.能处理大规模数据.支持自定义损失函数等. ...

最新文章

  1. android xml pid vid,增加属性标识摄像头的vid与pid,以便知道摄像头与设备文件的对应关系...
  2. Linux 命令 —— scp linux之间复制文件和目录
  3. Ubuntu+Apache+PHP+Mysql环境搭建
  4. eclipse中hibernate和mybatis中xml配置文件的没有标签提醒解决方法
  5. ExtJs控件属性配置详细(转)
  6. linux I/O 栈 预习(上)
  7. 【云速建站】会员注册弹窗添加及设置
  8. SnackbarUtils:一行代码搞定Snackbar
  9. Xilinx FPGA中RS编码IP核之Generator Start
  10. 浙江利捷分析报告(0607)
  11. 如何通过QQ机器人技术实现禅道bug的自动提交功能
  12. Kafka的数据结构与算法
  13. 数据库应用——MySQL+ATLAS+MMM高可用集群
  14. DRF框架(十四)——过滤Filtering,排序
  15. LintCode_新手必编程50题(1-3阶段)解答与分析
  16. python基于django校园信息管理平台设计与实现(项目源码+视频录制+截图)
  17. yolo的map计算详解
  18. 因特服务器协议,Internet邮件服务协议
  19. 「VUE 3」 v-model 的使用变化
  20. VoIP 技术究竟是什么?

热门文章

  1. php for循环 循环奇数,php – Foreach,每个n项的特殊处理(奇数,甚至例如)
  2. 软件工程导论 银行储蓄系统_银行计算机储蓄系统
  3. java contains_Java常用测试框架大全,不要只会Junit
  4. python画五角星代码_Python使用Turtle模块绘制五星红旗代码示例
  5. 在matlab中怎么录制音频_怎么录制淘宝页面中的视频?简单方法,轻松搞定
  6. php odbc连接数据库命名实例,一个用mysql_odbc和php写的serach数据库程序_php实例
  7. [蓝桥杯][2016年第七届真题]冰雹数(暴力打表找规律)
  8. java多核并行计算_谈谈Java任务的并行处理
  9. 几个简单的排序方式1
  10. ServletContext接口