Почему вы хотите использовать CNN здесь? Рассматривали ли вы другие модели, которые на самом деле обрабатывают несбалансированные данные?
Например, я обнаружил, что следующие два метода очень хорошо работают для меня:
Случайные леса с SMOTE Boosting : используйте гибрид, SMOTE
который занизит выборку класса большинства и переделит выборку класса меньшинства на регулируемые проценты. Выберите эти проценты в зависимости от распределения вашей переменной ответа в обучающем наборе. Подайте эти данные в вашу модель RF. Всегда перекрестно проверяйте / выполняйте поиск по сетке, чтобы найти лучшие настройки параметров для ваших RF.
XGBoost с оптимизацией гиперпараметров : снова проведите перекрестную проверку или выполните поиск в гирде, чтобы найти наилучшие настройки параметров для модели. Кроме того, xgboost
позволяет балансировать положительные и отрицательные веса классов с помощью scale_pos_weight
. См. Документацию параметров для полного списка.
Я также должен добавить, что набор данных, над которым я работал, имел одинаковый процент перекоса, и я смог получить показатель чувствительности 0,941 и специфичность 0,71 с xgboost
, что означает, что модель довольно точно предсказывает истинные положительные результаты, и это свидетельствует о том, что хорошо для меня.
(Извините, я не могу оставить комментарий, недостаточно репутации, и я действительно хотел знать, почему вы выбрали CNN)