Xgboost: Arrêt précoce avec métrique d'évaluation comme AUC

Créé le 25 mai 2016  ·  3Commentaires  ·  Source: dmlc/xgboost

J'utilise la version python de Xgboost et j'essaie de définir un arrêt anticipé sur AUC comme suit :

param = {
         'bst:max_depth':4,
         'bst:eta':0.1,  
         'silent':1,
         'objective':'binary:logistic'
         }

param['nthread'] = 10
param['eval_metric'] = "auc"
param['seed'] = 0

plst = param.items()

evallist  = [(dtrain_test1,'train'), (dtest2,'eval')]

num_round = 50
bst = xgb.train( plst, dtrain_test1, num_round, evallist, early_stopping_rounds = 5)

Cependant, même si l'AUC continue d'augmenter, après 5 tours, l'itération s'arrête :

S'entraînera jusqu'à ce que l'erreur d'évaluation n'ait pas diminué en 5 rounds.
[0] train- auc:0.681576 eval- auc:0.672914
[1] train- auc:0.713940 eval- auc:0.705898
[2] train- auc:0.719168 eval- auc:0.710064
[3] train- auc:0.724578 eval- auc:0.713953
[4] train- auc:0.729903 eval- auc:0.718029
[5] train- auc:0.732958 eval- auc:0.719815
Arrêt. Meilleure itération :
[0] train- auc:0.681576 eval- auc:0.672914

Cela me semble en quelque sorte Xgboost pense que l'AUC devrait continuer à diminuer au lieu d'augmenter, sinon l'arrêt anticipé sera déclenché. Pourquoi est-ce le cas et comment y remédier ?

Commentaire le plus utile

Peut-être que vous pouvez essayer de définir maximiser=True, il est disponible dans la méthode xgboost.train et xgboost.cv

Tous les 3 commentaires

Une solution consiste à définir votre propre métrique d'évaluation comme expliqué ici https://github.com/tqchen/xgboost/blob/master/demo/guide-python/custom_objective.py.
Et au lieu de calculer le calcul auc (-auc) de cette façon, il diminuera.

Merci @myyouness ! C'est effectivement une solution. Ce comportement est-il un bogue du paquet ?

Peut-être que vous pouvez essayer de définir maximiser=True, il est disponible dans la méthode xgboost.train et xgboost.cv

Cette page vous a été utile?
0 / 5 - 0 notes