В чем разница между "xgboost $ pred" и использованием xgboost.predict () на тренировочном наборе? - PullRequest
0 голосов
/ 19 января 2020

У меня есть две реализации, которые указывают на разные результаты с использованием одних и тех же данных, и я сомневаюсь, какому из результатов мне следует доверять:

Первая реализация

В первой реализации я реализую CV xgboost (которое использует перекрестную проверку) с гиперпараметром «PREDICTION = TRUE», поэтому я получаю вероятность обучения данных относительно переменной ответа в переменной «cv $ pred»:

cv <- xgb.cv(data = dtrain, nrounds = 3, nthread = 2, nfold = 5, metrics = list("rmse","auc"),
                  max_depth = 3, eta = 1, objective = "binary:logistic", prediction = TRUE)
calculate_ks(cv$pred)

Когда я вычисляю «Колмогорова Смирнова» (KS) по «cv $ pred» (вероятности обучающих переменных), я получаю KS 31%, что совместимо с результатом ИСПЫТАНИЯ ДАННЫХ, и это отличный результат для проблемы бизнеса, которую я моделирую.

Второе внедрение

Во втором сценарии я выполняю функцию «прогнозировать» в обучении данные и получить KS в среднем 55%, что указывает на переоснащение. Что касается тестовых данных, KS остался на уровне 31%, но когда показатель намного выше в тренировочных данных по сравнению с тестовыми данными, это также явный признак переобучения.

Вопрос, который не оставь мою голову: какой из результатов является правильным? Поскольку первый результат указывает на оптимальную модель (конечно, я должен оценить и другие метрики), а второй указывает на сильное переоснащение, при этом данные обучения и тестирования точно такие же.

...