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?
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
Komentar yang paling membantu
Mungkin Anda dapat mencoba mengatur maximize=True, Ini tersedia dalam metode xgboost.train dan xgboost.cv