Можно ли построить модель на несбалансированных данных? - PullRequest
0 голосов
/ 10 июля 2020

Фон - Набор данных, над которым я работаю, сильно несбалансирован, а количество классов составляет 543. Данные ограничены датой. Изучив данные в течение 5 лет, я пришел к выводу, что дисбаланс является внутренним и устойчивым. Тестовые данные, которые получит модель, также будут ограничены диапазоном дат, и у них также будет подобный дисбаланс.

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

Вопросы - Можно ли в таком случае продолжить построение модели на основе несбалансированных данных?

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

1 Ответ

2 голосов
/ 10 июля 2020

В зависимости от того, что вы пытаетесь моделировать, это может быть правильным или неправильным. предвзятость в лучшем случае по отношению к этим образцам или отсутствие понимания недостаточно представленных выборок в худшем. Если вы пытаетесь смоделировать естественное появление некоторой информации, то несбалансированный набор данных по сути уже имеет априорную вероятность, примененную к нему, поэтому результирующее смещение может быть желательным. В этих случаях количество элементов в классе, скажем, , составляет часть фактической информации. Однако такое смещение можно (не) смоделировать искусственно, например, путем применения масштабного коэффициента для классификации (например, с помощью весов классов) и т.д. c. Чтобы избежать такой предвзятости, относительно хорошо работают методы усиления и ансамбля, такие как Xgboost (или Adaboost в более тривиальных случаях) или просто случайные леса. Если у вас есть время, k-кратная перекрестная проверка может помочь еще больше уменьшить ошибку.

Чтобы убедиться, что каждая выборка адекватно представлена, вы можете выбрать избыточную выборку для недостаточно представленных классов или заниженную выборку для избыточно представленных. Чтобы определить правильную вероятность, убедитесь, что вы также зафиксировали априорное распределение и использовали его для формирования апостериорного распределения. Увеличение данных может помочь вам, если количество образцов мало; в зависимости от вашего случая генерация данных syntheti c может быть хорошим подходом. Вы можете, скажем, попробовать обучить GAN только на недостаточно представленных выборках и использовать это для генерации большего количества - как в идее: сначала обучите его на всех доступных данных, а затем измените потерю дискриминатора, чтобы заставить его подделывать и распознавать только недостаточно представленные классы. Без входа в область глубокого обучения могут работать такие методы, как SMOTE или ADASYN. Оба доступны в пакете imblearn Python, который основан на scikit-learn.

Наконец, может помочь тщательный выбор показателя потерь c. Вы можете найти более подробную (и более подробную) информацию в таких статьях, как Обзор глубокого обучения с классовым дисбалансом .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...