1

Предположим, что проблема классификации двух классов. Один класс имеет более 95% помеченных данных, а другой класс имеет 5% помеченных данных. Два класса очень предвзяты.точность и отзыв на предвзятый набор данных

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

Здесь приведены методы/показатели (с использованием точности/отзыва), которые я использую. Мне интересно, если какие-либо другие лучшие показатели или метод для оценки с учетом второстепенного 5% класса? Я назначаю вес второму классу 5%, но я прошу здесь более систематический метод измерения смещенного набора данных.

Использование scikit learn + python 2.7.

scores = cross_validation.cross_val_score(bdt, X, Y, cv=10, scoring='recall_weighted') 
print("Recall: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2)) 
scores = cross_validation.cross_val_score(bdt, X, Y, cv=10, scoring='precision_weighted') 
print("Precision: %0.2f (+/- %0.2f)" % (scores.mean(), scores.std() * 2)) 
+1

Зачем оставлять сообщения об этих типах вопросов так? Они принадлежат http://stats.stackexchange.com/ – Merlin

+0

@Merlin, я могу сделать «статистику», спасибо за идеи. Я просто чувствую больше экспертов здесь. :)) –

+1

Так как вы, похоже, не понимаете. ВАШИ ВОПРОСЫ ОТКЛЮЧАЮТСЯ НА СТЕКОВОЙ. см. ссылку. http://stackoverflow.com/help/on-topic – Merlin

ответ

4

Это распространенная проблема в статистике, поэтому вы найдете много ресурсов в Интернете. Проверьте, например, 8 Tactics To Combat Imbalanced Training Data.

Вероятно, самым простым способом является повторная выборка ваших данных. Самый простой способ - дублировать класс меньшинства, пока оба класса не будут одинаково представлены. Статистически более здравый подход состоял в том, чтобы сначала изучить распределение вероятности для охвата ваших классов, а затем провести n образцов для каждого класса. Таким образом, у вас есть сбалансированный набор данных.

Это, конечно же, зависит от ваших данных или просто изучает только объективное подмножество ваших данных. См. Статью для получения дополнительных сведений.

+0

Спасибо, Мартин, что вы имеете в виду повторно? Если мы используем стратифицированную выборку, все равно получаем большинство одного класса v.s. другой. –

+0

Спасибо, Мартин, вы знаете, есть ли какое-нибудь решение для изучения scikit для решения, основанного на повторной выборке, например «Статистически более разумный подход заключается в том, чтобы сначала изучить распределение вероятности для охвата ваших классов, а затем нарисуйте n выборок для каждого класс"? –

+0

Еще один немой вопрос: когда scikit-learn вычисляет точность и отзыв (см. Мой код выше), он вычисляет среднюю точность и отзыв каждого класса? Что означает, что если предсказание одного класса имеет высокую точность/отзыв, другой класс имеет относительно низкую точность/отзыв, конечные результаты все еще в порядке? –

Смежные вопросы