1

Я работаю над предсказанием анализа настроений с использованием набора данных обзоров фильмов Rotten Tomatoes. Набор данных имеет 5 классов {0,1,2,3,4} где 0 означает очень отрицательное, а 4 очень позитивный Набор данных крайне неуравновешенным,Как сбалансировать набор учебных материалов, который имеет очень большое количество выборок для определенного класса?

total samples = 156061

'0': 7072 (4.5%), '1': 27273 (17.4%), '2': 79583 (50.9%), '3': 32927 (21%), '4': 9206 (5.8%)

как вы можно увидеть класс 2 имеет почти 50% проб и 0 и 5 вклад ~ 10% от обучающего множества

Так есть очень сильный уклон для класса 2, таким образом, уменьшая точность классификации для класса 0 и 4.

Что я могу сделать, чтобы сбалансировать набор данных? Одним из решений было бы получить равное количество выборок, уменьшив выборки до 7072 для каждого класса, но это значительно сократит набор данных! Как оптимизировать и сбалансировать набор данных, не влияя на точность общей классификации?

+0

Вы также можете взглянуть на следующем [ответы от CrossValidated ] (https://stats.stackexchange.com/questions/152823/how-to-balance-my-dataset). – sophros

ответ

5

Вы не должны балансировать набор данных, вы должны обучить классификатор сбалансированным образом. Практически все существующие классификаторы могут быть обучены некоторым объектам с учетом стоимости. Например, SVM позволяют «весить» ваши образцы, просто весовые образцы меньшего класса. Точно так же у Наивного Байеса есть классы priors - измените их! Случайный лес, нейронные сети, логистическая регрессия, все они позволяют вам как-то «весовые» образцы, это основной метод получения более сбалансированных результатов.

+0

для модели эластичной сети, может кто-то указать на код для этого в sklearn? Я вижу это в SVM, но не Elastic net – Paul

+0

@Paul эластичная сеть - это ** регрессивный **, а не ** классификатор **, поэтому нет концепции балансировки класса. – lejlot

+0

Да, в регуляции python для задач классификации включен в LogisticRegression(). Я дал ему отдельный ответ. благодаря! – Paul