Xgboost: Parada temprana con métrica de evaluación como AUC

Creado en 25 may. 2016  ·  3Comentarios  ·  Fuente: dmlc/xgboost

Estoy usando la versión python de Xgboost y trato de configurar la parada anticipada en AUC de la siguiente manera:

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)

Sin embargo, aunque el AUC sigue aumentando, después de 5 rondas, la iteración se detiene:

Se entrenará hasta que el error de evaluación no haya disminuido en 5 rondas.
[0] tren- auc:0.681576 eval- auc:0.672914
[1] tren- 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
Parada. Mejor iteración:
[0] tren- auc:0.681576 eval- auc:0.672914

Me parece que, de alguna manera, Xgboost cree que el AUC debería seguir disminuyendo en lugar de aumentar, de lo contrario, se activará la parada anticipada. ¿Por qué es este el caso y cómo solucionarlo?

Comentario más útil

Tal vez pueda intentar configurar maximizar = Verdadero, está disponible en el método xgboost.train y xgboost.cv

Todos 3 comentarios

Una solución es definir su propia métrica de evaluación como se explica aquí https://github.com/tqchen/xgboost/blob/master/demo/guide-python/custom_objective.py.
Y en lugar de calcular el auc calcula (-auc) de esta manera disminuirá.

Gracias @myouness ! Eso es de hecho una solución. ¿Este comportamiento es un error del paquete?

Tal vez pueda intentar configurar maximizar = Verdadero, está disponible en el método xgboost.train y xgboost.cv

¿Fue útil esta página
0 / 5 - 0 calificaciones