当前位置: 首页 > 知识库问答 >
问题:

为什么具有单个树的随机森林比决策树分类器好得多?

巫马善
2023-03-14

我使用以下代码将决策树分类器和随机森林分类器应用于我的数据:

def decision_tree(train_X, train_Y, test_X, test_Y):

    clf = tree.DecisionTreeClassifier()
    clf.fit(train_X, train_Y)

    return clf.score(test_X, test_Y)


def random_forest(train_X, train_Y, test_X, test_Y):
    clf = RandomForestClassifier(n_estimators=1)
    clf = clf.fit(X, Y)

    return clf.score(test_X, test_Y)

为什么随机森林分类器的结果要好得多(对于100次运行,随机采样2/3的数据用于训练,1/3用于测试)?

100%|███████████████████████████████████████| 100/100 [00:01<00:00, 73.59it/s]
Algorithm: Decision Tree
  Min     : 0.3883495145631068
  Max     : 0.6476190476190476
  Mean    : 0.4861783113770316
  Median  : 0.48868030937802126
  Stdev   : 0.047158171852401135
  Variance: 0.0022238931724605985
100%|███████████████████████████████████████| 100/100 [00:01<00:00, 85.38it/s]
Algorithm: Random Forest
  Min     : 0.6846846846846847
  Max     : 0.8653846153846154
  Mean    : 0.7894823428836184
  Median  : 0.7906101571063208
  Stdev   : 0.03231671150915106
  Variance: 0.0010443698427656967

带有一个估计器的随机森林估计器不仅仅是一个决策树?我是否做错了什么或误解了这个概念?

共有1个答案

段铭晨
2023-03-14

带有一个估计器的随机森林估计器不仅仅是一个决策树?

嗯,这是一个好问题,答案是否定的;随机森林算法不仅仅是一袋单独生长的决策树。

除了由于对许多树进行置乱而产生的随机性外,随机森林(RF)算法在以两种不同的方式构建单个树时也包含了随机性,而简单决策树(DT)算法中没有这两种方法。

首先是在每个树节点上寻找最佳分割时要考虑的特征数量:当DT考虑所有特征时,RF考虑它们的随机子集,其大小等于参数<代码> Max特征(参见DOCS)。

第二个是,当DT考虑整个训练集时,单个RF树只考虑它的引导子样本;再次从文档中:

子样本大小始终与原始输入样本大小相同,但如果bootstrap=True(默认),则使用替换来绘制样本。

RF算法本质上是两个独立思想的结合:打包和随机选择功能(请参阅Wikipedia条目以了解详细概述)。装袋本质上是我上面的第二点,但适用于合奏;随机选择功能是我上面的第一点,它似乎是由Tin Kam Ho在Breiman的RF之前独立提出的(同样,请参见维基百科条目)。Ho已经提出,仅随机特征选择就可以提高性能。这并不完全是您在这里所做的(您仍然使用bagging的bootstrap采样思想),但是您可以通过在RandomForestClassifier()参数中设置bootstrap=False轻松复制Ho的思想。事实是,考虑到这项研究,性能上的差异并非出乎意料。。。

要准确复制RandomForestClassifier()中单个树的行为,应同时使用bootstrap=Falsemax\u features=None参数,即。

clf = RandomForestClassifier(n_estimators=1, max_features=None, bootstrap=False)

在这种情况下,既不会进行自举采样,也不会进行随机特征选择,而且性能应该大致相当于单个决策树的性能。

 类似资料:
  • 问题内容: 我通过图书馆学习机器学习。我使用以下代码将决策树分类器和随机森林分类器应用于我的数据: 为什么对于随机森林分类器来说结果要好得多(对于100次运行,随机采样2/3的数据进行训练,而1/3的数据进行测试)? 具有一个估计量的随机森林估计量不仅仅是决策树吗?我做错了什么或误解了这个概念吗? 感谢您的回复。 问题答案: 具有一个估计量的随机森林估计量不仅仅是决策树吗? 好吧,这是一个好问题,

  • 1 Bagging   Bagging采用自助采样法(bootstrap sampling)采样数据。给定包含m个样本的数据集,我们先随机取出一个样本放入采样集中,再把该样本放回初始数据集,使得下次采样时,样本仍可能被选中, 这样,经过m次随机采样操作,我们得到包含m个样本的采样集。   按照此方式,我们可以采样出T个含m个训练样本的采样集,然后基于每个采样集训练出一个基本学习器,再将这些基本学习

  • 在这里,我们将探索一类基于决策树的算法。 最基本决策树非常直观。 它们编码一系列if和else选项,类似于一个人如何做出决定。 但是,从数据中完全可以了解要问的问题以及如何处理每个答案。 例如,如果你想创建一个识别自然界中发现的动物的指南,你可能会问以下一系列问题: 动物是大于还是小于一米? 较大:动物有角吗? 是的:角长是否超过十厘米? 不是:动物有项圈吗? 较小:动物有两条腿还是四条腿? 二:

  • 主要内容:生成森林在学习 连通图的基础上,本节学习什么是 生成树,以及什么是 生成森林。 对连通图进行遍历,过程中所经过的边和顶点的组合可看做是一棵普通树,通常称为 生成树 。 图 1 连通图及其对应的生成树 如图 1 所示,图 1a) 是一张连通图,图 1b) 是其对应的 2 种生成树。 连通图中,由于任意两顶点之间可能含有多条通路,遍历连通图的方式有多种,往往一张连通图可能有多种不同的生成树与之对应。 连通图中

  • 我正在使用R软件包ranger对随机森林进行拟合,以对光栅图像进行分类。预测函数会产生错误,下面我将提供一个可重复的示例。 给出的错误是 v[单元格,]中的错误 虽然我真实数据的错误是 p[-naind,]中有错误 我唯一想到的是,除了感兴趣的预测之外,ranger.prediction对象还包括几个元素。无论如何,游侠如何被用来预测栅格堆栈?

  • 主要内容:决策树算法应用,决策树实现步骤,决策树算法应用本节基于 Python Sklearn 机器学习算法库,对决策树这类算法做相关介绍,并对该算法的使用步骤做简单的总结,最后通过应用案例对决策树算法的代码实现进行演示。 决策树算法应用 在 sklearn 库中与决策树相关的算法都存放在 模块里,该模块提供了 4 个决策树算法,下面对这些算法做简单的介绍: 1) .DecisionTreeClassifier() 这是一个经典的决策树分类算法,它提供

  • 1 决策树理论 1.1 什么是决策树   所谓决策树,顾名思义,是一种树,一种依托于策略抉择而建立起来的树。机器学习中,决策树是一个预测模型;他代表的是对象属性与对象值之间的一种映射关系。 树中每个节点表示某个对象,而每个分叉路径则代表的某个可能的属性值,从根节点到叶节点所经历的路径对应一个判定测试序列。决策树仅有单一输出,若欲有复数输出,可以建立独立的决策树以处理不同输出。 1.2 决策树学习流

  • 随机森林是集成学习中可以和梯度提升树GBDT分庭抗礼的算法,尤其是它可以很方便的并行训练,在如今大数据大样本的的时代很有诱惑力。 1. bagging的原理 在集成学习原理小结中,我们给Bagging画了下面一张原理图。 从上图可以看出,Bagging的弱学习器之间的确没有boosting那样的联系。它的特点在“随机采样”。那么什么是随机采样? 随机采样(bootsrap)就是从我们的训练集里面采