【问题标题】:Is there any rules of thumb for the relation of number of iterations and training size for lightgbm?关于lightgbm的迭代次数和训练大小的关系是否有任何经验法则?
【发布时间】:2020-01-09 06:04:54
【问题描述】:

当我使用 lightgbm 训练分类模型时,我通常使用验证集和提前停止来确定迭代次数。

现在我想结合训练和验证集来训练一个模型(所以我有更多的训练示例),并使用该模型来预测测试数据,我应该更改验证过程得出的迭代次数吗?

谢谢!

【问题讨论】:

    标签: python lightgbm


    【解决方案1】:

    正如您在评论中所说,这与深度学习的时期数无法比较,因为深度学习通常是随机的。

    使用 LGBM,所有参数和特征都相同,通过增加 10% 到 15% 的训练点,我们可以预期树看起来很相似:随着信息越多,分割值会更好,但这不太可能彻底改变您的模型(如果您使用 bagging_fraction 之类的参数,或者添加的点来自不同的分布,则不太正确)。

    我看到人们将迭代次数乘以 1.1(抱歉找不到我的来源)。
    直观地说,添加一些树是有意义的,因为您可能会添加信息。实验上,这个值效果很好,但最佳值将取决于您的模型和数据。

    【讨论】:

      【解决方案2】:

      在使用 Keras 进行深度学习的类似问题中:我通过使用早期停止器并与训练和验证数据进行交叉验证来做到这一点,并让模型在训练期间使用验证数据进行自我优化。

      每次训练后,我都会使用测试数据测试模型并检查平均准确度。同时,每次训练后,我都会从EarlyStopper 中保存stopped_epoch。如果 CV 分数令人满意,我会取停止 epoch 的平均值,并使用平均停止 epoch 的数量进行全面训练(包括我拥有的所有数据),然后保存模型。

      【讨论】:

      • 感谢您的回答,但我认为这有点不同。深度学习中的时期数是指将数据输入训练算法的次数。 GBDT 中的迭代次数决定了您使用了多少棵树,而更多的树往往会过度拟合。
      【解决方案3】:

      我不知道进行此类估算的成熟经验法则。正如弗洛里安所指出的,有时人们会重新调整从提前停止获得的迭代次数一个因子。如果我没记错的话,通常该因子假设数据大小和最佳树数呈线性相关。 IE。在 10 倍 cv 中,这将是一个重新缩放的 1.1 因子。但这并没有确凿的理由。正如 Florian 还指出的那样,对最优值的依赖通常相当平坦,因此 +- 一点树不会产生显着的效果。

      两个建议:

      • 进行 k 折验证,而不是单个训练验证拆分。这将允许评估对最佳树数的估计有多稳定。如果这在折叠之间波动很大-不要依赖这样的估计:)
      • 固定验证样本的大小,并使用逐渐增加的训练集提前停止重新训练您的模型。这将允许评估树木数量对样本量的依赖性,并将其近似为完整样本量。

      【讨论】:

        猜你喜欢
        • 2017-08-18
        • 1970-01-01
        • 2019-06-05
        • 2023-02-02
        • 2011-06-12
        • 2021-07-01
        • 2013-07-06
        • 2014-02-06
        相关资源
        最近更新 更多