K 折交叉验证:给梯度提升树选树的棵数和深度
梯度提升树要多少棵树、多深?怎么不看测试集,只用训练集选出来?
- 对过的标准答案
- 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数值计算
05同族的方法
模型评估与校准,还有 3 个方法
同一个方法族里的其他方法。在智能体里,用一句话就能调用这些方法。
在智能体里这样问“梯度提升树要多少棵树、多深?怎么不看测试集,只用训练集选出来?”