Вопрос или проблема
Это проект многоклассовой классификации.
Каждая модель сильно переобучается. Дерево решений, Random Forest и особенно XGBoost. И отчет по классификации это отражает.
где находится csv
https://github.com/MortalWombat-repo/Fetal-Health-Classification
ноутбук с моделями и настройкой параметров
У меня есть подробный анализ графиков в ноутбуке, но я не прикрепляю его к посту, так как не знаю, какой из них будет самым важным.
Подробный анализ находится в разделе “Итоговая модель XGBoost”
Я настроил ее, я стратифицировал train_test_split и сбалансировал несбалансированный набор данных.
Баланс набора данных: 70 процентов для первого класса, 20 для второго и 10 для третьего.
Я только могу подумать о добавлении ручных весов к классам, но не могу понять, как их распределить.
1-й класс Здоровый предсказывается с вероятностью в высоких 90-х, 2-й класс Подозрительный является худшим с предсказанием около 69%, а 3-й Критический также около 90.
Я думаю, проблема в том, что второй класс усложняет ситуацию своими чуть лучшими, чем случайные, догадками и таким образом влияет на другие классы.
.
Ответ или решение
Проблема переобучения моделей на основе деревьев для задачи многоклассовой классификации может быть вызвана несколькими факторами, среди которых находятся как специфика данных, так и конструкция самих моделей. Рассмотрим основные причины и возможные пути их решения, применимые в вашем случае.
Теория
Переобучение возникает, когда модель слишком хорошо запоминает обучающий набор данных, в результате чего она теряет способность к генерализации на новые, невиданные раньше данные. Это ведет к дроблению модели на мелочи и специфические особенности, которые не являются существенными для общего решения задачи, особенно в случае сложных моделей, таких как глубокие деревья в Decision Tree или многочисленные деревья в Random Forest и XGBoost.
Причины переобучения включают в себя избыточную сложность модели, дисбаланс класса, недостаточный объем данных, а также специфические особенности данных.
Примеры
Из вашего описания следует, что применяется несколько моделей деревьев, в том числе Decision Tree, Random Forest и XGBoost. Каждая из этих моделей имеет потенциальные проблемы с переобучением:
-
Decision Tree: Очень чувствительна к изменениям в данных и склонна к переобучению, особенно если дерево сильно разветвлено.
-
Random Forest: Использует многочисленные деревья, каждое из которых может быть глубоко разветвленным, что может привести к аналогичной проблеме, если не контролировать глубину деревьев.
-
XGBoost: Хотя она часто показывает высокую производительность, она тоже чувствительна к переобучению, особенно если присутствует дисбаланс классов или не полностью соблюдены принципы кросс-валидации.
Применение
Рассмотрим несколько способов уменьшить переобучение ваших моделей:
-
Регуляризация: Для уменьшения сложности модели применяйте регуляризацию. В XGBoost это может быть реализовано с помощью параметров
lambda
иalpha
, которые контролируют L2 и L1 регуляризация соответственно. -
Ограничение глубины деревьев: В Random Forest и Decision Tree убедитесь, что глубина деревьев ограничена (
max_depth
). Это поможет избежать излишней специфичности моделей по отношению к тренировочным данным. -
Балансировка данных: Вы уже приложили усилия для балансировки данных, но можете дополнительно использовать метод взвешивания классов, чтобы модель уделяла больше внимания менее представленным классам. В XGBoost это можно сделать с помощью параметра
scale_pos_weight
. -
Дополнительные признаки: Исследуйте возможность создания дополнительных признаков (feature engineering), которые могут помочь модели лучше различать случаи второго класса, который на данный момент предсказывается недостаточно хорошо.
-
Кросс-валидация: Убедитесь, что используете кросс-валидацию при оценке ваших моделей. Stratified K-Fold подход может помочь в учете дисбаланса классов.
-
Удаление избыточных признаков: Проведите анализ значимости признаков, чтобы определить, возможно, некоторые признаки не вносят полезную информацию и могут быть удалены.
-
Анализ ошибок: Проведите тщательный анализ ошибок, чтобы понять, в чем именно модель не справляется с задачей. Это может дать представление о том, какие изменения в приложении или моделировании могут улучшить результаты.
-
Hyperparameter Tuning: Используйте сеточный поиск или байесовскую оптимизацию для оптимизации параметров моделей. Убедитесь, что для каждого испытания выполняется правильная кросс-валидация.
По вашему описанию видно, что вы уже провели определенные действия, такие как стратификация и балансировка, но судя по описанию моделей, возможно стоит обратить большее внимание на оптимизацию глубины деревьев и более надежную кросс-валидацию.
Подводя итог, чем более обдуманно вы будете подходить к каждой из этих областей, тем больше шансов у вас будет на создание моделей, которые лучше обобщают данные, уменьшая при этом количество ошибок, связанных с вторым классом. Удачи в решении этой значимой задачи в области здравоохранения.