2016-11-03 3 views
1

У меня есть несбалансированные данные по обучению, и я использую логистическую регрессию в weka для классификации.Как классифицировать несбалансированные данные в weka?

Есть два класса хорошо и плохо. Хорошее имеет 75000 экземпляров и плохое 3000. Мои данные теста имеют 10000 хороших данных.

Когда я тренируюсь, он более склонен к хорошим данным, то есть классифицирует почти все плохие примеры. Что мне делать ? Я пытался иметь 10000 хороших примеров в данных для обучения вместо 75000, но проблема такая же.

+0

сложно сказать без информации. у вас все еще есть анонимный уникальный идентификатор в вашем наборе данных? если это так, удалите этот атрибут. – knb

ответ

0

Не уверен в python, но в версии gui вы можете использовать SpreadSubsample, чтобы уменьшить дисбаланс класса. Если вы чувствуете, что «плохо» является хорошим представлением класса, тогда вы можете экспериментировать с различным количеством примеров «хорошего».

Для этого вам необходимо выбрать фильтр ==> Руководил ==> Instance ==> SpreadSubsample ==> изменить количество экземпляров с помощью «максимального количества»

0

Есть несколько вещей, которые вы могли бы пытаться.

  1. Использование Boosting (AdaBoostM1), так что для ошибочных экземпляров будет предоставлен дополнительный вес.
  2. Используйте weka.classifiers.meta.CostSensitiveClassifier и придайте «плохим» экземплярам больший вес, чем «хорошие» экземпляры. Примечание: Это, вероятно, снизит вашу общую точность, но сделает ваш классификатор лучше работать с идентификацией «плохих» экземпляров.
Смежные вопросы