Мои модели на основе деревьев продолжают переобучаться.

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

Это проект многоклассовой классификации.
Каждая модель сильно переобучается. Дерево решений, Random Forest и особенно XGBoost. И отчет по классификации это отражает.

где находится csv

https://github.com/MortalWombat-repo/Fetal-Health-Classification

ноутбук с моделями и настройкой параметров

https://nbviewer.org/github/MortalWombat-repo/Fetal-Health-Classification/blob/main/3.%20Model%20selection%20process.ipynb.ipynb

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

Подробный анализ находится в разделе “Итоговая модель XGBoost”

Я настроил ее, я стратифицировал train_test_split и сбалансировал несбалансированный набор данных.
Баланс набора данных: 70 процентов для первого класса, 20 для второго и 10 для третьего.

Я только могу подумать о добавлении ручных весов к классам, но не могу понять, как их распределить.

1-й класс Здоровый предсказывается с вероятностью в высоких 90-х, 2-й класс Подозрительный является худшим с предсказанием около 69%, а 3-й Критический также около 90.

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

.

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

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

Теория

Переобучение возникает, когда модель слишком хорошо запоминает обучающий набор данных, в результате чего она теряет способность к генерализации на новые, невиданные раньше данные. Это ведет к дроблению модели на мелочи и специфические особенности, которые не являются существенными для общего решения задачи, особенно в случае сложных моделей, таких как глубокие деревья в Decision Tree или многочисленные деревья в Random Forest и XGBoost.

Причины переобучения включают в себя избыточную сложность модели, дисбаланс класса, недостаточный объем данных, а также специфические особенности данных.

Примеры

Из вашего описания следует, что применяется несколько моделей деревьев, в том числе Decision Tree, Random Forest и XGBoost. Каждая из этих моделей имеет потенциальные проблемы с переобучением:

  1. Decision Tree: Очень чувствительна к изменениям в данных и склонна к переобучению, особенно если дерево сильно разветвлено.

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

  3. XGBoost: Хотя она часто показывает высокую производительность, она тоже чувствительна к переобучению, особенно если присутствует дисбаланс классов или не полностью соблюдены принципы кросс-валидации.

Применение

Рассмотрим несколько способов уменьшить переобучение ваших моделей:

  1. Регуляризация: Для уменьшения сложности модели применяйте регуляризацию. В XGBoost это может быть реализовано с помощью параметров lambda и alpha, которые контролируют L2 и L1 регуляризация соответственно.

  2. Ограничение глубины деревьев: В Random Forest и Decision Tree убедитесь, что глубина деревьев ограничена (max_depth). Это поможет избежать излишней специфичности моделей по отношению к тренировочным данным.

  3. Балансировка данных: Вы уже приложили усилия для балансировки данных, но можете дополнительно использовать метод взвешивания классов, чтобы модель уделяла больше внимания менее представленным классам. В XGBoost это можно сделать с помощью параметра scale_pos_weight.

  4. Дополнительные признаки: Исследуйте возможность создания дополнительных признаков (feature engineering), которые могут помочь модели лучше различать случаи второго класса, который на данный момент предсказывается недостаточно хорошо.

  5. Кросс-валидация: Убедитесь, что используете кросс-валидацию при оценке ваших моделей. Stratified K-Fold подход может помочь в учете дисбаланса классов.

  6. Удаление избыточных признаков: Проведите анализ значимости признаков, чтобы определить, возможно, некоторые признаки не вносят полезную информацию и могут быть удалены.

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

  8. Hyperparameter Tuning: Используйте сеточный поиск или байесовскую оптимизацию для оптимизации параметров моделей. Убедитесь, что для каждого испытания выполняется правильная кросс-валидация.

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

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

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

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