#r #xgboost #overfitting-underfitting
Вопрос:
Я устанавливаю модель двоичной классификации с помощью XGBoost в R. В моем наборе данных 300 тыс. наблюдений с 3 непрерывными предикторами и 1 вариабелью факторов с одним горячим кодированием с 90 уровнями. Зависимая переменная y
является Истинной или Ложной.
Я произвел случайную подвыборку, чтобы найти оптимальные гиперпараметры. Для каждой настройки я сделал 5-кратное (сгруппированное) резюме. Приведенные ниже настройки гиперпараметра привели к наивысшему среднему значению AUC для 5-кратных складок данных оценки:
booster objective max_depth eta subsample colsample_bytree min_child_weight
gbtree binary:logistic 8 0.7708479 0.2861735 0.5338721 1
Затем я использовал эти настройки гиперпарамера в приведенной ниже подгонке модели XGBoost:
model_n <- xgb.train(data = xgb_trainval,
booster = "gbtree",
objective = "binary:logistic",
max_depth = 8,
eta = 0.7708479,
subsample = 0.2861735,
colsample_bytree = 0.5338721,
min_child_weight = 1,
nrounds = 1000,
eval_metric = "auc",
early_stopping_rounds = 30,
print_every_n = 100,
watchlist = list(train = xgb_trainval, val = xgb_val)
)
Я визуализировал журнал оценки таким образом:
model_iterations <- model_n$evaluation_log$iter
model_train_auc <- model_n$evaluation_log$train_auc
model_val_auc <- model_n$evaluation_log$val_auc
Я прихожу к выводу, что модель слишком подходит для обучающих данных, так как AUC становится близким к 1 после 200 итераций. В то же время модель все еще совершенствуется по данным валидации. С одной стороны, я бы пришел к выводу, что модель после 500 итераций не может быть хорошей моделью, поскольку она сильно подходит для обучающих данных. С другой стороны, эта модель имеет самый высокий AUC по данным валидации.
Может ли эта модель быть оптимальной, если она сильно подходит для данных о поездах, как показано выше, или мне следует дополнительно настроить модель, которая меньше подходит для данных обучения (с аналогичным или даже немного более низким AUC для данных проверки)?
Спасибо!
Комментарии:
1. Привет, в ответ на ваш комментарий ниже, можно перенастроить данные обучения, если модель стабильна на новых данных. См. В 2019 году: «Мы используем набор проверки, чтобы определить идеальный набор значений для гиперпараметров, а затем используем набор тестов для окончательной оценки точности». И machinelearningmastery.com/overfitting-machine-learning-models . Также на Kaggle он часто использовался для поддержания тренировок на уровне или около 100% с гораздо более низкой, но улучшающейся подгонкой по новым данным. Но вы должны проверить окончательные остатки. Подходит ли ваша модель для захвата наиболее важных наблюдений?
2. Спасибо вам за эти интересные статьи. Если я прочитаю источник из первой сноски статьи Инга, там упоминается, что «Например, было бы большим красным флагом, если бы наша модель показала точность 99% в обучающем наборе, но точность только 55% в тестовом наборе». См.: elitedatascience.com/overfitting-in-machine-learning . Кроме того, я бы ожидал, что модель с точностью 99% в обучающем наборе будет иметь много ненужной сложности. Хотя на самом деле сайт mlmastery упоминает об обратном.
3. Чем больше я читаю об этом предмете, тем больше понимаю, что существует много мнений о переобучении. Этот пост поддерживает сокращение разрыва между выступлениями на тренировках и тестовыми наборами. stats.stackexchange.com/questions/131233/… в то время как этот пост stats.stackexchange.com/questions/515588/… определяет переоснащение как: это означает, что модель начала изучать случайную изменчивость данных за счет снижения производительности обобщения. Я думаю, действительно, мы можем сделать вывод, что переобучение на traindata не является
4. плохо само по себе, хотя в то же время хорошо свести к минимуму разрыв между выступлениями на тренировках и тестовыми наборами.
5. Примечательно, что в статье Гроккинга они достигают 100% соответствия данным проверки. Я полагаю, что это возможно только в том случае, если в данных проверки нет шума?
Ответ №1:
Да, это жизнеспособная стратегия, но у вас есть окончательный набор невидимых тестов.
Также проверьте все данные, что вы довольны наблюдениями, они хорошо оцениваются по сравнению с наблюдениями, которых у него нет.
Вас устраивают случаи, с которыми модель не может справиться?
Если нет, тренируйтесь с взвешиванием, чтобы важные дела решались хорошо, а менее важные, возможно, нет.
Комментарии:
1. @ нильс Кристиан Шмидт Спасибо тебе. Извините, что мой вопрос недостаточно точен. Мой главный вопрос заключается в том, может ли модель быть оптимальной, если она сильно перегружена данными о поездах. Или мне следует еще больше настроиться на модель, которая меньше подходит для данных обучения. Я изменю вопрос выше.