【问题标题】:Lightgbm early stopping not working propperlyLightgbm 提前停止无法正常工作
【发布时间】:2019-11-10 03:56:59
【问题描述】:

我正在使用 light gbm 来完成一些机器学习任务。

我想使用提前停止来找到给定多个超参数的最佳树数。 但是,lgbm 会停止种植树木,同时仍在改进我的评估指标。

下面我附上了我的规格:

params = {
'max_bin' : [128],
'num_leaves': [8],
'reg_alpha' : [1.2],
'reg_lambda' : [1.2],
'min_data_in_leaf' : [50],
'bagging_fraction' : [0.5],
'learning_rate' : [0.001]
}

mdl = lgb.LGBMClassifier(n_jobs=-1, n_estimators=7000, 
                     **params)
mdl.fit(X_train, y_train, eval_metric='auc', 
          eval_set=[(X_test, y_test)], early_stopping_rounds=2000, 
        categorical_feature=categorical_features, verbose=5)

一段时间后 lightgbm 给了我以下结果:

lgbm 得出结论,0.7326 上的 auc 并不优于 0.70995 并停止。 我做错了什么?

【问题讨论】:

  • 将 learning_rate 比默认值降低一个数量级,并将 boosting 轮数增加到默认值以上 70 倍可能很容易导致过度拟合,因此请确保您还在未触及的数据集上获得了一些指标(例如超时)

标签: python lightgbm


【解决方案1】:

它工作正常:如doc for early stopping 所述:

如果一个验证数据的一个指标没有,将停止训练 在最近的 early_stopping_round 回合中有所改善

你的 logloss 在第 1034 轮时更好。

尝试使用first_metric_only = True 或从列表中删除logloss(使用度量参数)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-27
    • 1970-01-01
    • 2023-04-01
    • 2016-09-07
    • 1970-01-01
    相关资源
    最近更新 更多