400 экземпляров в наборе данных XGBoost, переобучается ли моя модель?

Вопрос или проблема

Я работаю над задачей регрессии с 400 образцами и 7 признаками. Я использую XGboost, и разделение (90,10) работает лучше, чем (80,20). Это нормально? Я думаю, что у меня происходит переобучение, но не знаю, как правильно это проверить.

(90,10) разделение
R2 на обучении: 0.99 R2 на тесте: 0.96

(80,20) разделение
R2 на обучении: 0.91 R2 на тесте: 0.76

Существует два эффекта, которые имеют место при различных размерах тестового набора: больший обучающий набор должен улучшать модель, в общем; но меньший тестовый набор означает, что R2, который вы сообщаете, вероятно, является менее точной оценкой истинной производительности модели на будущих данных. Из-за последнего вы не можете “тестировать” разные разделения и выбирать лучший результат, поэтому размер разбиения должен основываться не только на данных: достаточно ли 40 данных в вашем контексте, чтобы разумно точно оценить производительность?

Вероятно, лучше всего, особенно когда у вас небольшой размер выборки, как здесь, выполнять повторное тестирование, например, с помощью k-кратной кросс-валидации или бутстрепинга.

Что касается переобучения, в смысле “модели изучили информацию, специфичную для обучающих данных (и не обобщающуюся, или “шум”)”, да, обе модели переобучены, как видно по падению оценок между обучением и тестом. Но это почти всегда верно для GBM, и это не всегда проблема.

Наконец, хотелось бы поделиться проблемой с измерением R2 тестового набора в sklearn: https://stats.stackexchange.com/q/590199/232706

Ответ или решение

В анализе работы модели на небольшом наборе данных, как в вашем случае, ключевым является понимание концепции переобучения и правильная оценка моделей. Вы работаете с задачей регрессии, используя XGBoost на наборе данных с 400 образцами и 7 признаками. В этой ситуации важно разобраться, какие аспекты могли бы указать на переобучение и как правильно оценивать качество модели.

Теория (Theory)

Переобучение (overfitting) в машинном обучении происходит, когда модель слишком хорошо подстраивается под тренировочные данные, включая шум и случайные колебания, не отражающие общие тенденции. Это приводит к ухудшению ее обобщающей способности на новых данных. Основная цель любой ML-модели заключается в том, чтобы она хорошо предсказывала не только на тренировочных, но и на ранее невиданных данных. Метрики, такие как коэффициент детерминации R², используются для оценки качества модели. Высокий R² на обучающем наборе и заметно более низкий на тестовом подсказывает возможное переобучение.

Пример (Example)

Вы рассмотрели два метода разбиения данных: 90/10 и 80/20. Для первого разбиения вы получили R²: 0.99 на обучающей выборке и 0.96 на тестовой. Во втором случае R² составило 0.91 и 0.76 соответственно. Наблюдаемое значительное падение R² в случае 80/20 разбиения может говорить о переобучении, особенно если учесть большую разницу между тренировочными и тестовыми значениями.

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

Применение (Application)

  1. Кросс-валидация: Чтобы более точно определить уровень переобучения, используйте методы перекрёстной проверки, такие как K-фолдовая кросс-валидация. Это позволит оценить производительность модели на различных подвыборках данных, снизив влияние случайных эффектов в небольших тестовых наборках.

  2. Раннее остановка: В XGBoost реализован механизм ранней остановки, который позволяет приостановить обучение модели, если её производительность на валидационном наборе ухудшается. Настройка параметров early_stopping_rounds может помочь предотвратить переобучение, останавливая (n) итераций тренировку до ухудшения качества.

  3. Регуляризация: XGBoost поддерживает методы регуляризации, такие как L1 (Lasso) и L2 (Ridge), которые могут помочь в контроле за сложностью модели, сокращая вероятность переобучения.

  4. Bootstrap агрегация: Используйте бэггинг для создания набора моделей, уменьшая вариативность результата. Это улучшит способность модели обобщать, уменьшая переобучение.

  5. Анализ результатов: Оцените важность признаков и определите возможные корреляции, популярные для вашего набора данных. Это поможет избежать перенизации моделей, обеспечивая обработку только значимых переменных.

В отношении вопроса о том, достаточно ли 40 тестовых наблюдений, это зависит от сложности задачи и варианта использования. В общем, с небольшими выборками результаты могут значительно варьироваться, что делает перекрёстную проверку предпочтительной стратегией.

Заключая, нужно определять возникновение переобучения через сочетание разных методов и практик, обеспечивая надежность и точность моделей машинного обучения. Используя описанные подходы, вы сможете лучше понять особенности своей модели и принять обоснованные решения для улучшения ее предсказательных качеств.

Оцените материал
Добавить комментарий

Капча загружается...