Потери после обучения модели значительно отличаются от потерь, напечатанных в последнюю эпоху XGboost - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь сделать бинарную классификацию для прогнозирования оттока. Я использую потерю журнала в качестве моей метрики оценки. Окончательная эпоха приводит к примерно 0,13 потерям логарифма как для обучающих, так и для проверочных наборов. Однако, когда я пытаюсь предсказать и оценить результаты на тренировочном наборе, он сообщает о значительно более высокой потере обучения. Валидационные и тестовые наборы сообщают о похожих результатах.

X_train, X_validation, y_train, y_validation = model_selection.train_test_split(X_train, y_train, test_size=0.3, random_state = 111)
d_train = xgb.DMatrix(X_train, y_train)
d_valid = xgb.DMatrix(X_validation, y_validation)
watchlist = [(d_train,'train'), (d_valid,'valid')]

param = {'eta': 0.02, 
        'max_depth': 7,
        'objective': 'binary:logistic',
        'eval_metric': 'logloss',
        'seed': 100,
        'silent': True
         }

def xgb_score(preds, dtrain):
    labels = dtrain.get_label()
    bca = tf.keras.losses.BinaryCrossentropy()
    return 'log_loss', bca(labels, preds).numpy()

model = xgb.train(param, d_train, 300, watchlist, feval=xgb_score, maximize=False, 
                  verbose_eval=10, early_stopping_rounds=50)
[0] train-auc:0.916884  valid-auc:0.9153    train-log_loss:0.676236 valid-log_loss:0.676282
Multiple eval metrics have been passed: 'valid-log_loss' will be used for early stopping.

////////////////////////////////////////////////////////////////////////////////////////////

Will train until valid-log_loss hasn't improved in 50 rounds.
[50]    train-auc:0.92743   valid-auc:0.925878  train-log_loss:0.273744 valid-log_loss:0.275314
[100]   train-auc:0.931298  valid-auc:0.929474  train-log_loss:0.170755 valid-log_loss:0.173269
[150]   train-auc:0.936368  valid-auc:0.933754  train-log_loss:0.139556 valid-log_loss:0.143013
[200]   train-auc:0.939979  valid-auc:0.936665  train-log_loss:0.129754 valid-log_loss:0.134133
[250]   train-auc:0.942428  valid-auc:0.938327  train-log_loss:0.125872 valid-log_loss:0.131139
[299]   train-auc:0.944344  valid-auc:0.939238  train-log_loss:0.123966 valid-log_loss:0.13004

evaluation_score(model, X_train, y_train)
AUC : 79.92%
Log loss:  0.6529614925384521
...