我们是否需要调整随机森林中的树木数量?


30

随机森林分类器的软件实现具有许多参数,以允许用户微调算法的行为,包括森林中的树数。是否需要以与相同的方式调整该参数,以尝试每次拆分时尝试使用的功能数量(Leo Breiman称之为)?mtry


Answers:


36

通常会找到将视为超参数的代码片段,并尝试以与其他任何超参数相同的方式对其进行优化。这只是在浪费计算能力:当所有其他超参数都固定时,模型的损耗会随着树数的增加而随机减少。Ť

直观的解释

随机森林中的每棵树都是相同分布的。这些树的分布相同,因为每棵树都是使用针对每棵树重复的随机化策略来生长的:增强训练数据,然后通过从为该节点选择的特征中选择一个特征的最佳分割来生长每棵树。随机森林过程与增强森林形成鲜明对比,树木是在自己的引导子样本上生长的,而与其他树木无关。(从这个意义上说,随机森林算法是“令人尴尬的并行”。)

在二元情况下,每个样本的每个随机森林树对正类投票为1,对否定类投票为0。所有这些选票的平均值被当作整个森林的分类分数。(在一般的 -nary情况下,我们只是使用分类分布,但是所有这些参数仍然适用。)ķ

弱大数定律适用于这些情况,因为

  1. 树的决策是相同分布的rv(从某种意义上说,随机过程确定树的票数是1还是0)和
  2. 感兴趣的变量仅对每棵树取值,因此每个实验(树决策)具有有限的方差(因为可数有限的rvs的所有矩都是有限的)。{01个}

在这种情况下应用WLLN意味着,对于每个样本,随着树数趋于无穷大,集合将趋向于该样本的特定平均预测值。另外,对于给定的一组样本,随着树的数量趋于无穷大,这些样本中的关注统计(例如预期的对数损失)也将收敛于平均值。

统计学习的要素

Hastie等。在ESL中非常简短地解决了这个问题(第596页)。

另一个主张是,随机森林“无法过度拟合”数据。的确,增加 [合奏中的树的数量]不会导致随机森林序列过度拟合...。完全生长的树木的平均值会导致模型过于丰富,并导致不必要的差异。Segal(2004)通过控制随机森林中生长的单个树木的深度,证明了性能的小提升。我们的经验是,使用成年树木很少会花费很多,而且调整参数也更少。

换句话说,对于固定的超参数配置,增加树的数量不会使数据过拟合。但是,其他超参数可能是过拟合的原因。

数学解释

本节总结了Philipp Probst和Anne-Laure Boulesteix“ 要调整还是不调整随机森林中的树木数量? ”。关键结果是

  1. ROC曲线下的预期错误率面积可能是树数的非单调函数。

    一种。期望的错误率(等于)是的函数,树的数目由 ,其中是期望的二项式rv,由索引的特定树的决策。该功能在增加为和在降低为。作者观察到错误率=1个-准确性Ť

    ËË一世Ť=PŤ=1个ŤË一世Ť>0.5Ť
    Ë一世ŤËË一世Ť=ϵ一世ŤŤϵ一世>0.5Ťϵ一世<0.5

    我们看到误差率曲线的收敛率仅取决于观测值的分布。因此,错误率曲线的收敛率并不直接取决于观测值n或特征的数量,但是这些特性可能会影响的经验分布,因此可能会影响本节中概述的收敛率。 4.3.1ϵ一世ϵ一世

    b。作者注意到,可以将ROC AUC(又名 -statistic)操纵为具有的函数的单调或非单调曲线,具体取决于样本的预期得分如何与其真实类别对齐。CŤ

  2. 基于概率的度量(例如交叉熵和Brier分数)是随树数变化的单调性

    一种。该BREIER分数具有期望 这显然是一个单调递减的函数。

    Ëb一世Ť=ËË一世Ť2+VarË一世ŤŤ
    Ť

    b。对数损失(又称为交叉熵损失)具有泰勒展开式 ,这同样是的递减函数。(常数是一个小的正数,它使对数和分母内的值保持远离零。)

    Ë一世Ť-日志1个-ϵ一世+一种+ϵ一世1个-ϵ一世2Ť1个-ϵ一世+一种2
    Ť一种

  3. 考虑306个数据集的实验结果支持了这些发现。

实验示范

这是使用diamonds附带的数据进行的实际演示ggplot2。我通过将价格二值化为“高”和“低”类别,并将分界线确定为中位数价格,将其转变为分类任务。

从交叉熵的角度来看,模型改进非常顺利。(但是,该图不是单调的-与上面提供的理论结果不同是因为理论结果与预期有关,而不是与任何一个实验的特定实现有关。)

在此处输入图片说明

另一方面,错误率具有欺骗性,因为它可以上下波动,有时在恢复之前会停留在那里以容纳更多的树木。这是因为它无法衡量分类决策的不正确程度。这可能会导致错误率相对于树的数量出现“性能提升”的现象,这意味着决策边界上的一些样本会在预测类之间来回跳动。要抑制这种行为,可能需要大量的树。

另外,查看极少数树木的错误率行为-结果差异很大!这意味着以这种方式选择树木数量为前提的方法会受到大量随机性的影响。此外,使用不同的随机种子重复相同的实验可能会导致纯粹基于这种随机性来选择不同数量的树木。从这个意义上讲,少量树的错误率的行为完全是伪影,这是因为我们知道LLN意味着随着树数的增加,这将趋向于其期望值,并且是由于理论结果在第2节中。(交叉验证包含许多问题,这些问题将错误率/准确性与其他统计数据的优缺点进行了比较。)

在此处输入图片说明

相比之下,交叉熵测量在200棵树之后基本稳定,而在500棵树之后几乎不变。

最后,我使用不同的随机种子重复了完全相同的错误率实验。对于小,结果截然不同。Ť

本演示的代码可在本要点中找到

“所以我应该怎么选择如果我不调呢?”Ť

无需调整树的数量;取而代之的是,只需将树的数量设置为较大的,在计算上可行的数量,然后让LLN的渐近行为完成其余的工作。

如果存在某种约束(终端节点总数的上限,模型估计时间的上限,磁盘上模型大小的上限),则等于选择了满足条件的最大你的约束。Ť

“ 如果这样做是错误的,为什么人们要对进行调音?”Ť

这纯粹是推测,但我认为关于调整随机森林中的树木数目仍然存在的信念与两个事实有关:

  1. 诸如AdaBoost和XGBoost之类的增强算法确实要求用户调整集合中的树数,并且某些软件用户不够复杂,无法区分增强和装袋。(有关增强和装袋之间区别的讨论,请参阅随机森林是增强算法吗?

  2. 标准的随机森林实现,例如R randomForest(基本上是Breiman的FORTRAN代码的R接口),仅报告错误率(或等效地,准确性)作为树的函数。这是具有欺骗性的,因为精度不是树木数量的单调函数,而连续的适当评分规则(例如Brier得分和对数损失)单调函数。

引文


1
在任何实际情况下,似乎都应该调整阈值以获得最佳的泛化误差。我们在这里花了很多时间告诉人们不要将阈值设置为0.5!
马修·德鲁里

θ01个[R

我将在本周末阅读该论文(很高兴找到),但是如果阈值是根据树木数量动态调整的,那仍然是正确的吗?
马修·德鲁里

1
ϵ一世

好的问答,+ 1。我立即担心的是,您会写:“ 当所有其他参数都固定时 ”给定一个可以轻松优化使用的特征数(〜mtry)和每片叶子的最小观察数(〜minObs),我们的性能可能会发生巨大变化。是的,我很欣赏大约1000棵树可以在99.9%的时间内完成工作,但这是否意味着不同的模型比其他模型更快地达到了收益递减阈值?(在这种情况下,优化ntrees是相关的,如果你想例如小模型)
usεr11852恢复单胞菌说,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.