Как улучшить оценки точности отзыва, так как отрицательные метки в наборе тестов увеличены - PullRequest
0 голосов
/ 04 февраля 2019

Рассмотрим следующий сценарий: у меня есть пакеты данных, чьи функции и метки имеют одинаковое распределение.

Скажем, что-то вроде 4000000 отрицательных меток и 25000 положительных меток

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

Теперь я пытаюсь измерить точность и отозвать из тестового набора послетренировка (сгенерированная из другой партии) Я использую XGBoost с 30 оценщиками.

Теперь, если я использую все 40000000 отрицательных меток, я получаю (прецизионность 0,1 и отзыв 0,1 при пороге 0,7) хуже оценка точности отзывачем если бы я использовал подмножество, скажем, только 500000 отрицательных меток (точность 0,4 с 0,1 отзыва с порогом 0,3) ..

Какая может быть потенциальная причина, по которой это может произойти?

Мало мыслейчто у меня было:

  1. Особенности 500000 негативных меток сильно различаютсяот остальных в общей сложности 40000000 негативных меток.Но когда я рисую отдельные особенности, их центральные тенденции близко совпадают с подмножеством.

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

Есть ли способы сравнить распределения?

Является ли моя тренировка недостаточной выборки причиной этого?

1 Ответ

0 голосов
/ 04 февраля 2019

Чтобы понять это, нам сначала нужно понять, как вычисляются точность и отзыв.Для этого я буду использовать следующие переменные:

P - общее количество позитивов

N - общее количество негативов

TP - количество истинных позитивов

TN - количество ложных срабатываний

FP - количество ложных срабатываний

FN - количество ложных отрицаний

Важно отметить, что:

P = TP + FN

N = TN + FP

Теперь точность равна TP / (TP + FP)

, отзыв равен TP / (TP + FN), поэтомуTP / P.

Точность составляет TP / (TP + FN) + TN / (TN + FP), следовательно (TP + TN) / (P + N)

В вашем случае, гдеданные несбалансированы, мы имеем N >> P.

А теперь представьте какую-нибудь случайную модель.Обычно мы можем сказать, что для такой модели точность составляет около 50%, но это только в том случае, если данные сбалансированы.В вашем случае будет больше FP и TN, чем TP и FN, потому что случайный выбор данных имеет больше вероятности возврата отрицательной выборки.

Таким образом, мы можем установить, что больше% отрицательных выборокN / (T + N), тем больше FP и TN мы получаем.То есть, когда ваша модель не может выбрать правильную метку, она выберет случайную метку из P и N, и в большинстве случаев это будет N.

Напомним , что FPзнаменатель в точности?Это означает, что точность также уменьшается с увеличением N / (T + N).

Напомним, у нас нет ни FP, ни TN при его выводе, поэтому, скорее всего, не сильно изменится с увеличением N / (T + N).Как видно из вашего примера, он явно остается прежним.

Поэтому я бы попытался сбалансировать данные, чтобы получить лучший результат.Соотношение 1: 1,5 должно подойти.Вы также можете использовать другую метрику, например, показатель F1, которая сочетает в себе точность и отзыв, чтобы лучше понять производительность.

Также посмотрите некоторые другие замечания о том, как бороться с дисбалансом данных

...