Ваше предположение верно.Ваша модель машинного обучения в основном переобучается вашим тренировочным данным, которые повторяют один и тот же шаблон для одного класса, и, таким образом, модель изучает этот шаблон и пропускает остальные шаблоны, которые присутствуют в тестовых данных.Это означает, что модель не будет хорошо работать в диком мире.
Если SMOTE не работает, вы можете экспериментировать, тестируя различные модели машинного обучения.Случайный лес, как правило, хорошо работает с наборами данных этого типа, поэтому попробуйте настроить свою радиочастотную модель, обрезав ее или настроив гиперпараметры.Другой способ - назначить веса классов при обучении модели.Вы также можете попробовать штрафные модели, что налагает дополнительные затраты на модель при неправильной классификации класса меньшинства.
Вы также можете попробовать занизить выборку, поскольку вы уже проверяли избыточную выборку.Но, скорее всего, ваша неполная выборка также пострадает от той же проблемы.Пожалуйста, попробуйте также использовать простую передискретизацию вместо SMOTE, чтобы увидеть, как изменяются ваши результаты.
Еще один более продвинутый метод, который вы должны экспериментировать, - это группирование.Возьмите весь свой класс меньшинства и равное количество записей из класса большинства и обучите модель.Продолжайте делать это для всех партий вашего большинства, и в итоге у вас будет несколько моделей машинного обучения, которые вы затем сможете использовать вместе для голосования.