K 折交叉验证:给梯度提升树选树的棵数和深度

梯度提升树要多少棵树、多深?怎么不看测试集,只用训练集选出来?

SOA SRMSOA PACAS MAS-II
对过的标准答案
1 条
覆盖的考试公式
0 个
参数
5 个
开源库
1 个

01当场运行

改一个参数,当场重算

正在用默认参数运行,计算量大的方法最多要 20 秒。

04出处和说明

公式从哪里来,有什么限制

列出参考的教材、论文和考试公式条目。方法的限制和实现上的说明也写在这里。

参考

  • Hastie、Tibshirani、Friedman:The Elements of Statistical Learning(第 2 版)7.10 交叉验证
  • 《精算机器学习》第 3 章K 折交叉验证调参流程(ST0 → ST1/ST2)
  • Wüthrich、Merz:Statistical Foundations of Actuarial Learning and its Applications(2023)4.1 样本外损失,7.4.2 自校准

这个方法算什么

把训练集的保单分成 K 折。每一折轮流作验证集,用其余 K − 1 折训练梯度提升树,记下验证集的平均泊松偏差随树的棵数的变化。K 折平均后,每个深度取偏差最小的棵数,再选最好的深度(也可以用一个标准误规则选更简单的模型)。最后看选出的设置在测试集上的表现。

说明和限制

  • 折按保单号分(保单号 ÷ 5 取整后除以 K 的余数),测试集(保单号是 5 的倍数)不参与。每一折的训练在汇总的格子上进行。
  • 验证集的偏差按保单算:格子汇总的偏差和逐张保单的偏差只差一个和模型无关的常数,这里把常数补回来,数字和测试集的平均偏差同口径。
  • 每片叶子至少 400 张保单、100 次出险(和 boosting.gbm_pricing 的默认相同)。
  • 为了几秒内算完,深度的个数 × 折数 × 树的棵数不超过 700。学习率大一些(0.2)时 60 棵树就够看出过拟合。
  • 一个标准误规则:在误差不超过"最小值 + 它的标准误"的设置里,选树最少的(深度相同时)或深度最小的。

数据

看参数里选的数据:选平台的数据集时是真实数据或公开样例,填自己的数时只用输入的数。上面运行的输出里写明这一次用的是哪种。

开源库和版本

  • numpy2.4.6BSD-3-Clause数值计算