训练和验证公式不同你好@russ_wolfinger ,
我对 XGBoost 生成预测公式的方式有疑问。 我在一些数据上运行了“旧”版本的 XGBoost,预测公式与现在略有不同。 我认为这可能是这篇文章中提到的 XGBoost 的更新
https://community.jmp.com/t5/XGBoost-Early-Adopter/Applying-the-XGBoost-model-to-new-data/gpm-p/241796#M20
我通常运行 XGBoost,只对数据进行训练和验证拆分(单个验证列)。 现在,当我运行 XGBoost 时,我会得到一个预测列,用于说明何时:Validation==Training 和何时:Validation==Validation。 公式略有不同,最终预测公式选择任一解决方案。 我不明白它为什么这样做。
平台不应该只使用训练数据生成模型,然后使用验证数据来选择最佳拟合值吗? 它生成两个不同的公式,然后对训练公式或验证公式进行平均,这似乎很奇怪。 这似乎使得在合并到另一个数据表时更难以预测未来的数据。
事实上,我刚刚尝试过,新的 Predictor 列(使用 N Val 和 N Trn)并没有填充新的预测。 训练和验证的预测列确实如此,但如上所述,公式不同,因此输出也不同。 我们如何处理新数据?
谢谢,
DS
回复:训练和验证公式不同你好@russ_wolfinger ,
感谢您的反馈,它确实有助于了解如何为更新的 XGBoost 加载项正确编码验证列(取决于是否进行 k 折叠)。 我刚刚使用重新编码的验证列对其进行了测试,它可以正常工作。
感谢您的帮助!
谢谢,
DS
回复:训练和验证公式不同你好@SDF1 ,
对困惑感到抱歉。预测公式设置为在进行 k 折叠时自动计算折叠外预测。如果我正确理解了您的情况,则代码实际上可能会执行与您的验证列的两个级别相对应的 2 倍 CV。这就是为什么有两个不同的公式。
要仅执行单个保留验证集,您必须将验证列更改为连续值,0 表示训练,1 表示验证。我们设置此约定是为了处理这两种情况,但意识到它与其他 JMP 平台的工作方式不同。
为了预测新数据,您可能必须手动设置 val 列的值,如您链接的上一篇文章中所述,然后公式应该传播。
希望这可以解决问题-如果没有,请告诉我。很高兴你正在推进这个!
拉斯