Xgboost: Berhenti lebih awal dengan metrik evaluasi sebagai AUC

Dibuat pada 25 Mei 2016  ·  3Komentar  ·  Sumber: dmlc/xgboost

Saya menggunakan Xgboost versi python dan mencoba mengatur penghentian awal pada AUC sebagai berikut:

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)

Namun, meskipun AUC masih meningkat, setelah 5 putaran iterasi berhenti:

Akan berlatih sampai kesalahan evaluasi tidak berkurang dalam 5 putaran.
[0] train- auc:0.681576 evaluasi :0.672914
[1] train- auc:0,713940 evaluasi :0,705898
[2] train- auc:0.719168 evaluasi :0.710064
[3] train- auc:0.724578 evaluasi :0.713953
[4] train- auc:0.729903 evaluasi :0.718029
[5] train- auc:0.732958 evaluasi :0.719815
Henti. Iterasi terbaik:
[0] train- auc:0.681576 evaluasi :0.672914

Ini terlihat bagi saya entah bagaimana Xgboost berpikir AUC harus terus menurun alih-alih meningkat, jika tidak, pemberhentian awal akan dipicu. Mengapa hal ini terjadi dan bagaimana cara memperbaikinya?

Komentar yang paling membantu

Mungkin Anda dapat mencoba mengatur maximize=True, Ini tersedia dalam metode xgboost.train dan xgboost.cv

Semua 3 komentar

Salah satu solusinya adalah menentukan metrik eval Anda sendiri seperti yang dijelaskan di sini https://github.com/tqchen/xgboost/blob/master/demo/guide-python/custom_objective.py .
Dan alih-alih menghitung auc compute (-auc) cara ini akan berkurang.

Terima kasih @myouness ! Itu memang solusi. Apakah perilaku ini merupakan bug dari paket?

Mungkin Anda dapat mencoba mengatur maximize=True, Ini tersedia dalam metode xgboost.train dan xgboost.cv

Apakah halaman ini membantu?
0 / 5 - 0 peringkat