xgboost.train bst_score возвращает ошибку обучения, а не ошибку проверки? - PullRequest
1 голос
/ 16 октября 2019

Я использую XGBoost Python API и тренирую свою модель, используя приведенный ниже код.

    num_round =100
    param = {  'alpha': 0.28342488159238677, 'eta' : 0.43347953113507033, 'max_depth': 2, 'min_child_weight' :8.774621448662675,
            'objective':'binary:logistic'}
    dtrain = xgb.DMatrix(X, label=y)
    dval = xgb.DMatrix(val, label=val_y)

    evallist = [(dval, 'eval'), (dtrain, 'train')]
    bst = xgb.train(param, dtrain, evals= evallist, early_stopping_rounds=100, evals_result = eval_dict )

Я обеспокоен тем, что при печати (bst.best_score) он возвращает лучший результат обучения (которыйтакже согласуется с bst.best_iteration), но часто это не итерация с лучшим баллом проверки. Разве я не должен быть в основном заинтересован в балле проверки? Я не хочу, чтобы итерация с безумно хорошей (переобученной) ошибкой обучения, я хочу, чтобы итерация показала лучший результат на проверочном наборе?

Я использую best_ntree_limit для прогнозирования (как описано здесь )), но означает ли это, что я использую модель с наименьшей ошибкой обучения, чтобы сделать свой прогноз? Я предполагаю, что я могу изменить это где-то, чтобы использовать ошибку проверки для «лучших» метрик, но я запутался, потому что я никогда не видел, чтобы кто-то делал это в примерах.

...