Xgboost: AUCとしての評価指標による早期打ち切り

作成日 2016年05月25日  ·  3コメント  ·  ソース: dmlc/xgboost

私はPythonバージョンのXgboostを使用しており、次のようにAUCで早期打ち切りを設定しようとしています。

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)

ただし、AUCがまだ増加している場合でも、5ラウンド後に反復は停止します。

評価エラーが5ラウンドで減少しなくなるまでトレーニングします。
[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
停止します。 最良の反復:
[0] train- auc :0.681576 eval- auc:0.672914

これはどういうわけか私には見えますが、XgboostはAUCが増加するのではなく減少し続けるべきだと考えています。そうしないと、早期停止がトリガーされます。 なぜこれが当てはまるのか、そしてそれを修正する方法は?

最も参考になるコメント

たぶんあなたはmaximize=Trueを設定しようとすることができます、それはxgboost.trainとxgboost.cvメソッドで利用可能です

全てのコメント3件

1つの解決策は、 https://github.com/tqchen/xgboost/blob/master/demo/guide-python/custom_objective.pyで説明されているように、独自の評価メトリックを定義することです。
そして、この方法でauc計算(-auc)を計算する代わりに、それは減少します。

ありがとう@myouness ! それは確かに解決策です。 この動作はパッケージのバグですか?

たぶんあなたはmaximize=Trueを設定しようとすることができます、それはxgboost.trainとxgboost.cvメソッドで利用可能です

このページは役に立ちましたか?
0 / 5 - 0 評価