Light GBM的提前停止功能对自定义度量不起作用

我使用了一个自定义度量来训练Light GBM,但提前停止功能只对目标函数(log loss)有效。如何修复这个问题,或者如何让提前停止功能对评估度量生效?

def evaluate_macroF1_lgb(truth, predictions):  
    pred_labels = predictions.reshape(len(np.unique(truth)),-1).argmax(axis=0)
    f1 = f1_score(truth, pred_labels, average='macro')    
    return ('macroF1', f1, True)
lg = LGBMClassifier(n_estimators=1000)
lg.fit(x_train,y_train,eval_set=(x_test,y_test),eval_metric=evaluate_macroF1_lgb,early_stopping_rounds=25)

我期望它最多运行1000次迭代,但实际上它只运行了25次,因为log loss没有改善,但F1度量却在改善。


回答:

更新

我找到了一个解决方案,我们可以在LGBM分类器中设置metric=”custom”,这样它就会使用评估度量。

lg = LGBMClassifier(n_estimators=1000,metric="custom")

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注