如何在提升树中找到调整参数的最佳值?

机器算法验证 机器学习 交叉验证 计算统计 助推
2022-03-08 18:31:38

我意识到提升树模型中有 3 个调整参数,即

  1. 树的数量(迭代次数)
  2. 收缩参数
  3. 分割数(每个组成树的大小)

我的问题是:对于每个调整参数,我应该如何找到它的最佳值?以及什么方法?

注意:收缩参数和树数参数一起操作,即收缩参数的值越小,树数的值越大。我们也需要考虑到这一点。

我对找到分割数的最佳值的方法特别感兴趣。它应该基于关于背后模型的交叉验证或领域知识吗?

这些东西是如何gbm在 R 的包中进行的?

2个回答

R 中的caret包是为此量身定制的。

它的训练函数采用参数值网格,并使用各种交叉验证或引导程序评估性能。包作者写了一本书,应用预测建模,强烈推荐。整本书使用了 5 次重复 10 倍交叉验证。

对于选择树的深度,我会首先了解有关问题的主题知识,即如果您不期望任何交互 - 将深度限制为 1 或选择灵活的参数模型(这更容易理解和解释)。话虽如此,我经常发现自己调整树的深度,因为主题知识通常非常有限。

我认为 gbm 包会针对树深度和收缩的固定值调整树的数量。

boosted 回归树和 gbm 包有两个很好的来源。有关 BRT 的解释以及树的数量 ( nt)、学习率 ( lr) 和树复杂度 ( tc) 的优化,请参阅A working guide to boosted regression trees 虽然它侧重于生态学,但我认为你不会找到更好的 BRT 介绍.

对于 gbm 包中 BRT 的实现,请参见Boosted Regression Trees for 生态建模

简而言之,一个经验法则是选择一个允许 BRT 模型适应至少 1000 棵树的学习率,因此您可能需要一个低学习率,可能需要 0.001 来实现这一点。但这取决于数据的大小,见图。BRT 工作指南中的 2 和 3。我认为一种可能的方法是根据您的数据大小在 BRT 中设置不同的模型,例如将不同的 lr (0.1, 0.01, 0.001), tc (1, 3, 5, 7, 9, 20) 与不同的包组合.fractions(0.5, 0.7, 0.9) 并根据最低偏差或最高 ROC 分数选择最佳的。也许它有帮助。