Когда я должен сбалансировать классы в наборе данных обучения?

29

У меня был онлайн-курс, где я узнал, что несбалансированные классы в данных обучения могут привести к проблемам, потому что алгоритмы классификации идут по правилу большинства, поскольку это дает хорошие результаты, если дисбаланс слишком велик. При выполнении задания необходимо было сбалансировать данные с помощью заниженной выборки для большинства классов.

Однако в этом блоге кто-то утверждает, что сбалансированные данные еще хуже:

https://matloff.wordpress.com/2015/09/29/unbalanced-data-is-a-problem-no-balanced-data-is-worse/

Так какой это? Должен ли я сбалансировать данные или нет? Зависит ли это от используемого алгоритма, так как некоторые могут быть в состоянии приспособиться к несбалансированным пропорциям классов? Если да, то какие из них надежны на несбалансированных данных?

Зельфир Кальцталь
источник

Ответы:

28

Интуитивное объяснение было объяснено в блоге:

Если нашей целью является прогнозирование, это вызовет определенный уклон. И что еще хуже, это будет постоянный уклон, в том смысле, что у нас не будет последовательных оценок по мере роста объема выборки.

Таким образом, возможно, проблема (искусственно) сбалансированных данных хуже, чем несбалансированный случай.

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

Допустим, вы узнаете рукописные буквы английского алфавита (26 букв). Избыточный баланс каждой буквы даст каждой букве вероятность быть классифицированной (правильно или нет) примерно 1/26, поэтому классификатор забудет о фактическом распределении букв в исходном образце. И это нормально, когда классификатор может обобщать и распознавать каждую букву с высокой точностью .

Но если точность и, что самое важное, обобщение не настолько «высоки» (я не могу дать вам определение - вы можете думать об этом просто как о «наихудшем случае») - неправильно классифицированные баллы, скорее всего, будут равномерно распределены между всеми буквами , что-то типа:

"A" was misclassified 10 times
"B" was misclassified 10 times
"C" was misclassified 11 times
"D" was misclassified 10 times
...and so on

В отличие от без балансировки (при условии, что «А» и «С» имеют гораздо более высокие вероятности появления в тексте)

"A" was misclassified 3 times
"B" was misclassified 14 times
"C" was misclassified 3 times
"D" was misclassified 14 times
...and so on

Так что частые случаи получат меньше ошибочных классификаций. Хорошо это или нет, зависит от вашей задачи. Для естественного распознавания текста можно утверждать, что буквы с более высокими частотами более жизнеспособны, поскольку они сохранят семантику исходного текста, приближая задачу распознавания к предсказанию (где семантика представляет тенденции ). Но если вы пытаетесь распознать что-то вроде скриншота ECDSA-ключа (больше энтропии -> меньше прогноза) - сохранение несбалансированных данных не поможет. Итак, опять же, это зависит.

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

PS Вы всегда можете сначала отследить эффективность несбалансированной классификации с помощью метрик Precision / Recall и решить, нужно ли вам добавлять балансировку или нет.


п(Икся|θ)п(Икся|θ^)θ^я-θяИногда рекомендуется перебалансировать классы в соответствии либо с самой популяцией, либо с параметрами, известными из большой выборки (таким образом, с лучшей оценкой). Однако на практике нет гарантии, что «большая выборка» будет одинаково распределена из-за риска получения смещенных данных на каждом шаге (скажем, английские буквы, собранные из технической литературы против художественной литературы против всей библиотеки), так что балансировка все еще может быть вредной.

Этот ответ также должен уточнить критерии применимости для балансировки:

Проблема дисбаланса классов вызвана отсутствием достаточного количества образцов, принадлежащих к классу меньшинства, а не соотношением самих положительных и отрицательных образцов. Как правило, если у вас достаточно данных, «проблема дисбаланса класса» не возникает

В заключение, искусственный баланс редко бывает полезен, если тренировочный набор достаточно велик. Отсутствие статистических данных из более крупной идентично распределенной выборки также указывает на то, что нет необходимости в искусственном балансировании (особенно для прогнозирования), в противном случае качество оценки так же хорошо, как и «вероятность встретить динозавра»:

Какова вероятность встретить динозавра на улице?

1/2 вы либо встречаете динозавра, либо не встречаете динозавра

dk14
источник
5
Я думаю, что помимо объяснения проблемы, важным ответом на этот ответ является то, что сначала следует попытаться разбалансировать и проверить его результаты, и только при необходимости выполнить балансировку и проверить его результат. +1
Зельфир Кальцталь,
То есть, другими словами, при равномерно распределенных классах по обучающему подмножеству модель потеряет точность в невидимых данных, верно? Но в противоположном случае, когда вы попытаетесь случайным образом извлечь записи набора данных для ваших подмножеств обучения / тестирования, будет ли ваш классификатор работать лучше?
Христос К.
@ChristosK. Как отмечали многие, когда вы рассматриваете проблему как классификацию, трудно прогнозировать. В любом случае, если вы удалите смещение (выборка «случайно») - вам понадобится большая выборка для повышения производительности. Просто «обычно» выборка достаточно велика, чтобы сохранить семантику, поэтому перебалансировка только повредила бы и действовала бы как регуляризующий молот, который «выравнивает» все без должного рассмотрения. Кроме того, как показывает метафора динозавра, «сбалансированный» не означает «даже» - вы делаете правильное балансирование только тогда, когда знаете, что некоторые вероятности искажены в «случайной» выборке.
dk14
1
@ChristosK. Спасибо за некоторые разъяснения. Это не то, что я имел в виду, но подход очень похож. Обычная рекомендация для применения k-fold заключается в том, чтобы делать это, когда ваша первоначальная выборка «довольно мала». Не уверен, но сворачивание не должно повредить в любом случае - просто требуется больше прогонов, и чем меньше вы заботитесь о прогнозировании, тем меньше вы заботитесь о обобщении / производительности, как бы тавтологично это не звучало :). Но в целом - K-Fold означает меньше смещения по существу.
dk14
1
@ChristosK. Да, и как предупреждение, отношение спам / не спам может быть нестационарной случайной величиной само по себе. Со всеми этими «фальшивыми новостями», «русскими троллями» и другими вещами, я бы с осторожностью отнесся к таким предположениям - соотношение может быть и предвзятым. Возможно, вы захотите сначала оценить PrecisionRecall по вашим классификаторам, если что-то недостаточно выбрано - я бы предпочел собрать / сгенерировать (?) Больше данных.
dk14
17

В соответствии с комментариями @ kjetil-b-halvorsen быстрое внедрение машинного обучения сбило с толку исследователей в отношении прогнозирования и классификации. Как я описал более подробно здесь , классификация подходит только в меньшинстве случаев. Когда результат редок (или слишком распространен), вероятности - это все, потому что в этом случае можно только разумно говорить о тенденциях , а не о прогнозировании отдельных случаев.

В статистике мы узнали некоторое время назад, что любой метод, который требует один, чтобы исключить некоторые данные, является очень подозрительным. Таким образом, цель балансирования результатов неуместна. Прогнозирование тенденций (вероятностей) не требует этого. И как только вы оцените вероятность, вы можете принять оптимальное решение, применив функцию полезности / затрат / потерь к прогнозируемому риску.

Фрэнк Харрелл
источник
1

Зависит от того, чего вы хотите добиться от классификации?

Скажите, что это рак, а не рак, тогда обнаружение рака жизненно важно. Тем не менее, поскольку большая часть ваших данных будет составлять данные, не относящиеся к раку, классификатор может по существу отправлять все случаи в класс, не относящийся к раку, и получать очень высокую точность. Но мы не можем себе этого позволить, поэтому мы существенно сократили выборку не связанных с раком случаев, по сути, перенеся границы принятия решений из области рака в область без рака.

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

Например, если вы хотите классифицировать манго и апельсины, у вас есть обучающий набор данных с 900 манго и 30 апельсинами, но вы планируете развернуть его на рынке с равными манго и апельсинами, тогда в идеале вам следует произвести выборку в ожидаемом соотношении выборки, чтобы максимизировать точность.

Амитоз Дандиана
источник
Это то, что я понял из лекций, которые я имел. Тем не менее, я не понимаю, когда балансировка может быть плохой, как предполагает этот пост в блоге. Почему было бы плохо балансировать, если для каждого класса осталось достаточно данных?
Зельфир Кальцталь
Извините, но по вашей аналогии, как распределение рыночных фруктов связано с точностью модели? Вы либо научились отделять манго от апельсинов, либо нет. Другими словами, вы должны иметь возможность развернуть ту же модель на рынке только для апельсина или только для манго.
Фернандо
3
Но проблема с примером рака заключается в том, чтобы рассматривать его как классификацию , его следует рассматривать как оценку риска . Затем очевидная проблема с несбалансированными классами исчезает, см. Stats.stackexchange.com/questions/127042/…
kjetil b halvorsen
1

Когда ваши данные сбалансированы, вы можете проверить точность метрики. Но когда в такой ситуации ваши данные не сбалансированы, ваша точность неодинакова для разных итераций. Вам нужно сконцентрировать больше показателей, таких как точность (PPR), отзыв (чувствительность). Эти две метрики должны быть сбалансированы при сравнении. Также вам следует проверить F1-показатель, который является гармоническим средним значением точности и отзыва. Это применимо ко всем алгоритмам машинного обучения

Равиндар Мадишетти
источник