Как сбалансировать тематический набор данных двух классов, когда одна из тем слишком широка, а другая очень узка? - PullRequest
0 голосов
/ 02 марта 2019

У меня есть простое предсказание, где набор данных состоит из 2300 выборок для каждого класса ei total = 4600 (двоичная классификация).Первый класс охватывает все типы новостей, кроме другого, что является очень узкой темой.Я использовал Наивный-Байесовский классификатор NLTK для выполнения задачи, где классификатор берет образцы с горячим кодированием.Хотя классификатор показал хорошие результаты в тестовой части набора данных (точность 94%), он с треском проваливается, когда классифицирует просканированные новости (в производстве).enter image description here Я думаю, что проблема в том, что эти два класса несбалансированы в реальном слове.Если это причина, то как преодолеть эту проблему?как сбалансировать мой набор данных?Предположим, что я могу собрать много образцов дополнительно для широкого класса (A), но очень мало образцов для узкого класса (B).

1 Ответ

0 голосов
/ 02 марта 2019

Вы можете использовать Синтетическую методику передискретизации меньшинства, SMOTE, чтобы увеличить размер класса меньшинства.

from imblearn.over_sampling import SMOTE
sm = SMOTE()
x1, y1 = sm.fit_sample(X_train, Y_train)

Кроме того, Наивный Байес не является хорошим алгоритмом для несбалансированных классов, попробуйте использовать Random Forest (безSMOTE) или деревья с градиентным усилением (с SMOTE).

...