5 votes

L'arrêt précoce des GBM légers ne fonctionne pas pour la métrique personnalisée.

J'ai utilisé une métrique personnalisée pour le gbm léger mais l'arrêt précoce fonctionne pour la perte de logarithme qui est la fonction objective. Comment puis-je corriger cela ou changer l'arrêt précoce pour qu'il fonctionne pour la métrique d'évaluation ?

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)

Je m'attendais à ce qu'il fonctionne pendant 1000 itérations ou moins, mais il a fonctionné pendant 25, car la perte de log ne s'améliore pas, mais la métrique f1 s'améliore.

12voto

Anubhav Natani Points 174

Mise à jour

J'ai trouvé une solution : nous pouvons définir la métrique="custom" dans le classificateur LGBM et il utilisera la métrique d'évaluation.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X