gpt4 book ai didi

python - LightGBM 中的交叉验证

转载 作者:太空狗 更新时间:2023-10-29 18:01:59 26 4
gpt4 key购买 nike

我们应该如何使用 lightgbm.cv 的字典输出来改进我们的预测?

这是一个示例 - 我们使用以下代码训练我们的 cv 模型:

cv_mod = lgb.cv(params, 
d_train,
500,
nfold = 10,
early_stopping_rounds = 25,
stratified = True)

我们如何使用从上述代码的最佳迭代中找到的参数来预测输出?在这种情况下,cv_mod 没有像 lightgbm.train 这样的“预测”方法,lightgbm.cv 的字典输出在使用时会抛出错误在 lightgbm.train.predict(..., pred_pa​​rameters = cv_mod) 中。

我是否错过了重要的转型步骤?

最佳答案

一般来说,CV 的目的不是进行超参数优化。目的是评估模型构建过程的性能

基本训练/测试拆分在概念上与 1 折 CV 相同(具有自定义拆分大小,与 k 折 CV 中的 1/K 训练大小形成对比)。进行更多拆分(即 k>1 CV)的好处是可以获得更多关于泛化误差估计的信息。在获取错误+统计不确定性的意义上有更多信息。有一个优秀的discussion on CrossValidated (从添加到问题的链接开始,这些链接涵盖相同的问题,但以不同的方式制定)。它涵盖了嵌套交叉验证,绝对不是直截了当的。但是,如果您总体上围绕这个概念,这将在各种重要情况下为您提供帮助。您必须带走的想法是:CV 的目的是评估模型构建过程的性能

记住这个想法,一般情况下如何进行超参数估计(不仅在 LightGBM 中)?

  • 您想要使用一组参数在某些数据上训练模型,并在独立(验证)集上评估模型的每个变体。然后,您打算通过选择提供您选择的最佳评估指标的变体来选择最佳参数。
  • 可以通过简单的训练/测试拆分来完成。但是评估的性能,以及最佳模型参数的选择,可能只是特定拆分的波动。
  • 因此,您可以对这些模型中的每一个进行评估,这些模型在多个训练/测试拆分(即 k 折 CV)上具有更统计稳健的平均评估

然后你可以更进一步,说你有一个额外的保留集,它在超参数优化开始之前被分开了。通过这种方式,您可以评估在该集合上选择的最佳模型,以衡量最终的泛化误差。但是,您甚至可以更进一步,您可以使用外部 CV 循环代替单个测试样本,这将我们带到嵌套交叉验证。

从技术上讲,lightbgm.cv() 只允许您使用固定模型参数评估 k 折拆分的性能。对于超参数调整,您需要在一个循环中运行它,提供不同的参数并重新编码平均性能以选择最佳参数集。循环完成后。此接口(interface)不同于 sklearn,它为您提供了在 CV 循环中进行超参数优化的完整功能。就个人而言,我会推荐使用 lightgbm 的 sklearn-API。它只是原生 lightgbm.train() 功能的包装器,因此它并不慢。但它允许您使用完整的 sklearn 工具包,这让您的生活变得更加轻松。

关于python - LightGBM 中的交叉验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46456381/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com