Как сбалансировать данные в многоклассовой задаче классификации текста? - PullRequest
0 голосов
/ 17 января 2019

У меня проблема классификации классов с 29 классами вывода. Это распределение записей по 29 классам в наборе учебных данных.

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

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Повышение выборки (или избыточная выборка) может привести к более сбалансированному набору данных, но оно также поощряет перенастройку из-за дублирования примеров классов меньшинства ( Kotsiantis et al. ).

Как упомянуто user2974951 , SMOTE - это метод, который производит выборки на основе существующих данных, снижая вышеупомянутый риск переобучения классов меньшинства ( Chawla et al. показывают заметное улучшение, используя SMOTE по сравнению с настройкой смещения).

В качестве альтернативы, вы можете попробовать выбрать алгоритм обучения, который менее восприимчив к смещению на основе дисбаланса (например, SVM хорошо работает с несбалансированными данными Sun et al. ).

Если это невозможно, взвешивание на основе термина , как предложено Liu и др. или аналогичные методы взвешивания, как упомянуто Mark.F , может помочь повысить точность прогнозирования при обучении с использованием несбалансированного набора данных.

Удачи!

0 голосов
/ 17 января 2019

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

Например, потеря класса с наименьшим количеством выборок ("БЕЗОПАСНОСТЬ КОНВЕЙЕРА")будет L*1337/45, а потеря класса с наибольшим количеством образцов будет L*1337/1337=L.

...