随机森林与梯度提升树模型性能比较

机器学习领域,随机森林(RF)和直方图梯度提升树(HGBT)是两种常用的集成学习方法。本文旨在通过调整控制树数量的参数,比较这两种模型在回归数据集上的得分和计算时间。尽管这里主要讨论的是回归问题,但所涉及的概念同样适用于分类问题。

参数调整是通过对每个估计器控制树的数量来进行的。在随机森林中,参数n_estimators控制森林中的树的数量,这是一个固定值。而在梯度提升模型中,参数max_iter表示最大迭代次数,这对应于回归和二元分类问题中的树的数量。此外,模型实际需要的树的数量还取决于停止准则。

直方图梯度提升树使用基于直方图的算法,对分箱的特征值进行处理,可以高效地处理大型数据集(数万个样本或更多)和具有大量特征的情况。相比之下,随机森林的实现不使用分箱,依赖于精确的分割,这在计算上可能非常昂贵。

在实际应用中,梯度提升树模型提供了提前停止的选项,以避免添加不必要的新树。算法内部使用一个样本外的数据集来计算每次添加树时模型的泛化性能。如果泛化性能在超过n_iter_no_change次迭代后没有改善,它将停止添加树。

为了进行比较,加载了加利福尼亚房价数据集,并计算了模型的得分和计算时间。值得注意的是,HistGradientBoostingClassifierHistGradientBoostingRegressor的实现部分默认是并行化的。随机森林模型也可以通过设置n_jobs参数来在多个核心上运行。

在模型参数调整过程中,发现调整随机森林n_estimators通常会导致计算机资源的浪费。在实践中,只需要确保它足够大,以至于加倍其值不会导致测试得分的显著提高。

使用plotly.express.scatter来可视化计算时间和平均测试得分之间的权衡。将光标悬停在给定点上会显示相应的参数。误差条对应于在交叉验证的不同折叠中计算出的标准差。

在增加树的数量时,HGBT和RF模型的性能都会提高。然而,得分会达到一个平台期,此时添加新树只会使拟合和评分变慢。随机森林模型更早地达到这样的平台期,并且永远无法达到最大HGBDT模型的测试得分。

需要注意的是,上述图表上显示的结果在不同运行之间可能会略有变化,甚至在其他机器上运行时变化更为显著。因此,建议在自己的本地机器上运行此示例。

总的来说,人们通常会观察到,基于直方图的梯度提升模型在“测试得分与训练速度权衡”方面普遍优于随机森林模型(HGBDT曲线应该位于RF曲线的左上方,且永远不会交叉)。“测试得分与预测速度权衡”也可能更有争议,但通常对HGBDT更有利。在特定问题上检查这两种模型(包括超参数调整)并比较它们的性能总是一个好主意,以确定哪种模型最适合,但HGBT几乎总是提供比RF更有利的速度-准确性权衡,无论是使用默认超参数还是包括超参数调整成本。

然而,这一经验法则有一个例外:当训练具有大量可能类别的多类分类模型时,HGBDT在每次提升迭代中内部拟合每个类别的一棵树,而随机森林模型使用的树自然就是多类别的,这应该能改善随机森林模型在这种情况下的速度-准确性权衡。

相关示例

  • 文本特征提取与评估的示例管道
  • 平衡模型复杂度和交叉验证得分的示例
  • 直方图梯度提升树的特性
  • 使用树集成进行特征转换
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485