在给定特征数量的情况下找到随机森林的最大深度

Posted

技术标签:

【中文标题】在给定特征数量的情况下找到随机森林的最大深度【英文标题】:finding maximum depth of random forest given the number of features 【发布时间】:2016-01-03 22:37:54 【问题描述】:

如果我们知道特征的数量,我们如何找到随机森林的最大深度?

这是正则化随机森林分类器所必需的。

【问题讨论】:

为什么需要正则化随机森林分类器?你会如何规范化?有些人把这部分弄错了。完全成熟的发束不会过度拟合,因为装袋和随机特征选择可以防止这种情况。 当我使用 100% 的数据对其进行训练并使用相同的完整数据进行测试时,准确度为“1”。只有在过度拟合的情况下才有可能,所以我想用 max_depth 参数对其进行正则化,是的,它解决了问题,提高了准确性 嘿,您需要在交叉验证集上对其进行测试。显然,如果您在训练它的训练集上检查分类器,它将接近 100%。请把你的训练集分成两部分。训练和交叉验证以检查性能。还要检查特征之间的相关性,因为这些也可能导致过度拟合,但在我的拙见中,您的测试方法是错误的 特征之间的相关性对于随机森林来说通常不是问题。大多数随机森林包都带有袋外 (OOB) 交叉验证,您可以在训练期间免费获得。你用的是哪个包? 限制或修剪单棵树而不是森林。只有当您的数据超大时,您才能限制最大深度以加速。但是最好降低引导样本大小,因为您既可以加快速度又可以增加树的去相关性。 【参考方案1】:

我以前没有想过这个。一般来说,树是不确定的。而不是问最大深度是多少?您可能想知道平均深度是多少,或者一棵树的深度为 20 的可能性是多少……无论如何,可以计算出最大深度的一些界限。因此,要么节点用完(a)inbag 样本,要么(b)可能的分裂。

(a) 如果 inbag samples(N) 是限制部分,可以想象一棵分类树,其中除了一个之外的所有样本在每次拆分时都向左转发。那么最大深度是N-1。这种结果极不可能,但可能。最小深度树,其中所有子节点都一样大,那么最小深度将是 ~log2(N),例如16,8,4,2,1。在实践中,树深度将介于最大值和最小值之间。控制最小节点大小的设置会减小深度。

(b) 要检查特征是否限制了树的深度,并且您事先知道训练集,然后计算有多少训练样本是唯一的。唯一样本 (U) 无法拆分。只为每棵树选择约 0.63 个样本。 N ~ U * 0.63。使用 (a) 部分的规则。在引导过程中可以选择所有独特的样本,但这也不太可能。

如果您不知道自己的训练集,请尝试估计在 d 个特征中的每个特征 (i) 中可以找到多少个级别 (L[i])。对于分类特征,答案可能会给出。对于从真实分布中提取的数字特征,将有与样本一样多的级别。可能的唯一样本为 U = L[1] * L[2] * L[3] ... * L[d]。

【讨论】:

以上是关于在给定特征数量的情况下找到随机森林的最大深度的主要内容,如果未能解决你的问题,请参考以下文章

随机森林参数说明

机器学习分类算法之随机森林(集成学习算法)

算法参数介绍

特征筛选(随机森林)

随机森林代码审查

训练和测试集中不同数量的特征 - 随机森林 sklearn Python