cross-validation - XGBOOST/lLightgbm 过拟合,尽管交叉验证测试分数没有指示?
问题描述
我们的目标是确定可能影响相对罕见结果风险的预测因素。
- 我们正在使用一个半大型临床数据集,其中包含近 200,000 名患者的数据。
- 感兴趣的结果是二元的(即是/否),而且非常罕见(约 5% 的患者)。
- 我们有一大组近 1,200 个主要是二分法的可能预测变量。
我们的目标不是创建一个预测模型,而是使用增强树算法作为变量选择和检查高阶交互的工具(即确定哪些变量或变量组合可能对结果),因此我们可以在后续研究中更具体地针对这些预测因子。鉴于缺乏有关结果的病因学信息,我们正在考虑的所有可能的预测因素都可能对发展该疾病的风险没有任何影响,因此,如果我们的目标是开发一个预测模型,它可能是一个相当糟糕的一个。对于这项工作,我们使用 XGBoost/lightgbm 的 R 实现。
我们在调整模型时遇到了困难。特别是在运行交叉验证以选择最佳迭代次数(nrounds)时,即使在非常高的值下,CV 测试分数也会继续提高(例如,参见下图,来自 xgboost 的 nrounds=600,000)。即使在提高学习率 (eta) 或添加一些正则化参数(例如 max_delta_step、lamda、alpha、gamma,甚至在这些参数较高的情况下)时,也会观察到这种情况。
正如预期的那样,CV 测试分数总是低于训练分数,但会不断提高,而不会显示出明显的过度拟合迹象。无论使用何种评估指标都是如此(下面的示例用于 logloss,但对于 auc/aucpr/错误率等也观察到相同的情况)。相关地,当使用网格搜索找到树深度的最佳值(max_depth)时,也观察到相同的现象。无论迭代次数如何,CV 测试分数都会继续提高,即使深度值超过 100,也不会显示任何过度拟合的迹象。
请注意,由于结果罕见,我们使用分层 CV 方法。此外,当使用训练/测试拆分而不是 CV 时,也会观察到相同的情况。
尽管 CV 测试(或测试拆分)分数不断提高,但是否存在过度拟合的情况?如果是这样,为什么会这样?如何为超参数选择最佳值?
再次相关地,这个想法不是创建一个预测模型(因为它会是一个相当糟糕的模型,因为我们对结果知之甚少),而是在数据中寻找可能有助于识别的信号用于进一步探索的一组预测变量。如果增强树不是解决此问题的最佳方法,还有其他需要考虑的吗?同样,我们选择使用增强树的部分原因是能够识别更高(即超过 2 个)阶的交互,使用更传统的方法(包括套索/弹性网络等)无法轻松评估。
解决方案
欢迎来到 Stackoverflow!
在没有一些代码和代表性数据的情况下,除了一般性建议之外,不容易做出。
您的描述性统计步骤可能会提供一些指向起始模型的指针。
现有理论(如果存在的话!)对医疗状况的原因有何建议?
是否存在男性/女性差异或老年/年轻差异可以帮助您踏上大门?
您的医疗数据与欺诈检测问题有相似之处,其中一个人试图预测罕见事件,通常比您的案例罕见得多。在欺诈检测文献中查看 xgboost/lightgbm 的使用可能会让您付出代价。