增加决策树中的 n_estimators 参数是否总能提高准确性

数据挖掘 scikit-学习 决策树
2021-10-14 18:44:29

我正在使用一些 ML 算法(来自 sklearn lib),其中大多数都有一个参数 n_estimators,它是(如果我理解得很好)使用的树的数量。直觉上我会说你使用的树越多,你得到的结果就越准确。事实证明并不完全正确,有时,少数几棵树会产生更好的结果,但我不知道为什么?

编辑

一些精度:这是一个回归问题,数据集包含大约 4000 个样本和 500 个特征。我正在使用 GradientBoostingRegressor、ExtraTreeRegressor、AdaBoost、RandomForest。

编辑 2

附加信息:我使用 KFold=10 的交叉验证来评估算法的准确性。最好的 n_estimators 值似乎是 50,对于上述所有算法,R2 得分约为 56/57% +- 8%。当我尝试增加它时,分数迅速下降。我尝试了几个值,从 100 到 500,它一直在下降,甚至达到 52%。

1个回答

关于回归随机森林有很多误解。那些关于回归 rf 的误解也可以在分类 rf 中看到,但不太明显。我将在这里介绍的是回归随机森林不会过度拟合。好吧,这不是真的。

研究随机森林的统计特性表明,自举过程减少了方差并保持了偏差。这个属性应该在偏差-方差权衡框架下理解。很明显,随机森林近似于一个期望,这意味着真实结构的均值保持不变,而方差减小了。从这个角度来看,随机森林并没有过拟合。然而,有一个问题是用于训练的样本本身。期望以数据为条件。而如果数据不能代表问题,那么当树的数量增长到无穷大时,在极限内是正常的。用简单的英语来说,这意味着回归森林会很好地学习数据,如果数据不具有代表性,那么结果就会很糟糕。以何种方式数据可能不具有代表性?在许多方面,例如,您在所有感兴趣的区域中都没有足够的数据点。这个问题经常出现在测试错误中,所以它可能不会对你产生太大影响,但也可以在 CV 中看到。

回归树的另一个问题是数据集中重要变量的数量和非重要变量的数量。众所周知,当您有少量有趣的输入变量和大量噪声变量时,回归森林的表现不佳。Boosting 程序没有这种行为。这是有充分理由的。回归森林会产生更多无趣的树,它们有可能将学习到的结构从真正的底层结构中移开。对于提升,这不会发生,因为在每次迭代中,只有感兴趣的区域具有较大的权重,因此已经学习的区域受到的影响较小。补救措施是使用在学习时间选择的变量数量。

但是,即使您增加在学习时考虑的变量数量,也有一个缺点。考虑两棵随机生长的树。如果您有 100 个输入变量并选择其中的 10 个进行学习,那么这些树看起来相似的可能性很小。相反,如果您选择 50 个变量进行学习,那么您的树就有更好的机会看起来相似。这转化为这样一个事实:如果您在学习时增加测试候选人的变量数量,那么它们之间的相关性就会增加。如果相关性增加,那么由于它们的相关性,他们将无法学习更复杂的结构。如果选择的变量数量很少,由于多样性,您有可能学到更多,但如果与不显着的变量相比,显着的变量很小,这会导致学习噪音,噪音太大。这在大多数情况下会影响 CV 性能。