python - Lightgbm 提前停止无法正常工作

标签 python lightgbm

我正在使用 lightgbm 执行机器学习任务。

我想使用提前停止来找到给定多个超参数的最佳树数。 然而,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 给我以下结果: example

lgbm 的结论是 0.7326 的 auc 并不优于 0.70995 并停止。

我做错了什么?

最佳答案

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

will stop training if one metric of one validation data doesn’t improve in last early_stopping_round rounds

并且您的 logloss 在第 1034 轮时更好。

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

关于python - Lightgbm 提前停止无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56802708/

相关文章:

python - Pymysql python 打印数据

python - 我如何从这样的模式中提取时间?

python - lgb.train ValueError : The truth value of an array with more than one element is ambiguous. 使用 a.any() 或 a.all()

python - 为什么 LightGBM 输出 : Finished loading model, 总共使用的 X 次迭代?

r - 如何保存 Tidymodels Lightgbm 模型以供重用

python - "Python Implementation"vs. "Python distribution"vs. Python 本身?

python - 将 n-gram 合并或反转为单个字符串

python - 使用 Python 检查任意用户是否在管理员组中

python - 如何停止 lightgbm 的日志输出?

machine-learning - lightgbm python 数据集引用参数是什么意思?