В чем причина проблемы дисбаланса классов?

30

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

Сначала позвольте мне определить (или попытаться) определить мои термины:

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

Так, в приведенном выше примере, например, если для каждого отдельного класса было сто классов , я бы сказал, что дисбаланс классов составляет от до или .0111001%

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

Обзор стандартных текстов в машинном / статистическом обучении мало что дает:

  • Элементы статистического обучения и введение в статистическое обучение не содержат «дисбаланса классов» в индексе.
  • Машинное обучение для прогнозирующей аналитики данных также не содержит «дисбаланса классов» в индексе.

  • Машинное обучение Мерфи : Вероятностная перспектива действительно содержит «дисбаланс классов *» в индексе. Ссылка на раздел о SVM, где я нашел следующий дразнящий комментарий:

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

Этот комментарий сочетается с моей интуицией и опытом: на моей предыдущей работе мы обычно подгоняли логистические регрессии и модели дерева с градиентным ускорением (чтобы минимизировать биномиальную логарифмическую вероятность) для несбалансированных данных (порядка дисбаланса класса ), с нет явных проблем с производительностью.1%

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

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

  • Это то, что мы делаем для себя с плохо выбранными алгоритмами и ленивыми порогами классификации по умолчанию?
  • Исчезает ли оно, если мы всегда подходим к вероятностным моделям, которые оптимизируют надлежащие критерии оценки? Иными словами, является ли причина просто неудачным выбором функции потерь, то есть оценки предсказательной силы модели, основанной на жестких правилах классификации и общей точности?
  • Если да, то являются ли модели, которые не оптимизируют правильные правила оценки, бесполезными (или, по крайней мере, менее полезными)?

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

Мэтью Друри
источник
1
Очевидная проблема может возникнуть, когда учащийся наказывает потерю каждого класса одинаково. Возвращение всего того же класса теоретически может минимизировать общие потери.
Firebug
1
Я забыл добавить poor choice of loss functionв свой список. Итак, вы думаете, это верно даже для правильных правил подсчета в качестве функций потерь?
Мэтью Друри
Я так думаю. Я предполагаю, что мы можем сформулировать проблему, в которой минимизация потерь более крупного класса сводит к минимуму также и потерю всей проблемы, в то время как в целом класс меньшинства представляет больший интерес.
Firebug
3
Я согласен с мнением вопроса. У меня была рабочая гипотеза (хотя я и рада ее отвергнуть), что проблемы дисбаланса классов как таковой нет, просто мы тренируемся с функциями потерь, которые не представляют то, что мы будем использовать для измерения успеха на тестовых данных. И это трудно назвать ошибкой, так как это почти стандартная практика: например, это не стандартная прямая оптимизация баллов AUC или F1, но это общие показатели успеха для проблем с дисбалансом классов. Так может быть, это проблема дисбаланса класса?
DavidR
9
Причиной проблемы дисбаланса классов является соглашение использовать точность в качестве функции потерь. Классовый дисбаланс является характеристикой проблемы (например, диагностика редких заболеваний), которая может быть решена с использованием нескольких стратегий. Использование веса класса, обратно пропорционального размеру класса, при вычислении функции потерь является одним из них. Помимо этого, AUC как функция потерь является хорошей идеей, поскольку в ней конкретно проводится различие между истинно-положительным и ложно-положительным. Поэтому основной проблемой проблемы дисбаланса классов является функция потерь. Отличный вопрос, на который я не смею отвечать.
Николас Рибл

Ответы:

4

Запись из Энциклопедии машинного обучения ( https://cling.csd.uwo.ca/papers/cost_sensitive.pdf ) помогает объяснить, что то, что называют «проблемой дисбаланса классов», лучше понимать как три отдельные проблемы:

 (1) assuming that an accuracy metric is appropriate when it is not

 (2) assuming that the test distribution matches the training 
     distribution when it does not

 (3) assuming that you have enough minority class data when you do not

Авторы объясняют:

Наборы данных с дисбалансом классов встречаются во многих реальных приложениях, где распределение данных по классам сильно дисбалансировано. Опять же, без потери общности мы предполагаем, что меньшинство или редкий класс является положительным классом, а класс большинства - отрицательным. Часто класс меньшинства очень мал, например, 1% набора данных. Если мы применим большинство традиционных (нечувствительных к стоимости) классификаторов к набору данных, они, скорее всего, будут предсказывать все как отрицательные (класс большинства). Это часто рассматривалось как проблема при обучении из сильно несбалансированных наборов данных.

Однако, как указывает (Provost, 2000), в традиционных классификаторах, не учитывающих затраты, часто делаются два фундаментальных предположения. Во-первых, цель классификаторов - максимизировать точность (или минимизировать частоту ошибок); во-вторых, распределение классов учебных и тестовых данных по классам одинаково. В соответствии с этими двумя предположениями прогнозирование всего как негативного для сильно несбалансированного набора данных часто является правильным решением. (Drummond and Holte, 2005) показывают, что в этой ситуации обычно очень трудно превзойти этот простой классификатор.

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

В случае, когда стоимость ошибочной классификации не равна, обычно более ошибочно классифицировать миноритарный (положительный) пример в мажоритарный (отрицательный) класс, чем мажоритарный пример в класс меньшинства (в противном случае более правдоподобно предсказать все как отрицательный). То есть FN> FP. Таким образом, учитывая значения FN и FP, для решения проблемы дисбаланса в классе можно было бы использовать различные чувствительные к стоимости методы мета-обучения (Ling and Li, 1998; Japkowicz and Stephen, 2002). Если значения FN и FP явно неизвестны, FN и FP могут быть назначены пропорциональными p (-): p (+) (Japkowicz and Stephen, 2002).

В случае, если распределения классов обучающих и тестовых наборов данных различаются (например, если данные обучения сильно разбалансированы, но данные теста более сбалансированы), очевидным подходом является выборка данных обучения таким образом, чтобы распределение классов было таким же, как данные испытаний (путем избыточной выборки класса меньшинства и / или недостаточной выборки класса большинства) (Provost, 2000).

Обратите внимание, что иногда число примеров класса меньшинства слишком мало для того, чтобы классификаторы не могли адекватно учиться. Это проблема недостаточных (небольших) обучающих данных, отличных от несбалансированных наборов данных.

Таким образом, как предполагает Мерфи, нет ничего изначально проблемного в использовании несбалансированных классов, при условии, что вы избежите этих трех ошибок. Модели, дающие апостериорные вероятности, позволяют избежать ошибки (1), чем дискриминантные модели, такие как SVM, потому что они позволяют отделить вывод от процесса принятия решений. (См. Раздел епископа 1.5.4 « Выводы и решения» для дальнейшего обсуждения этого последнего пункта.)

Надеюсь, это поможет.

Билл Вандер Люгт
источник
1
Я собирался опубликовать что-то подобное. один небольшой комментарий - я думаю, что безумно занижать выбор более крупного класса. Это отбрасывает ваши данные, и, конечно, не даст лучшего результата. Мне нравится понятие разделения деления и классификации. На выводную часть не влияет дисбаланс, но принятие решений (классификация) может быть сильно затронуто.
вероятностная
@probabilityislogic (и Билл Вандер Лугт): есть еще одна возможная проблема, которая не обсуждается в этом тексте: адекватен ли дискриминационный ансац. Неадекватное использование дискриминационной модели, в которой более подходящим был бы один класс, также может привести к «проблемам дисбаланса классов».
cbeleites поддерживает Монику
8

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

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

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

yf=f(x)

Мы используем для создания модели , которая присваивает порог неявным или явным образом выводу , так что, когда выводит значение, большее, чем тогда модель предсказывает класс B, иначе это предсказывает класс A.G b F F b GFGbFFbG

yg={Bif f(x)>bAotherwise

Изменяя порог который изучает модель , мы можем варьировать пропорцию примеров, которые классифицируются как класс A или класс B. Мы можем двигаться по кривой точности / отзыва для каждого класса. Более высокий порог дает меньший отзыв для класса B, но, вероятно, более высокую точность.GbG

Представьте, что модель такова, что если мы выберем порог, который дает одинаковую точность, и вспомним любой класс, то точность модели G будет равна 90% для любого класса (по симметрии). Таким образом, с учетом обучающего примера, мог бы привести пример правильно в 90% случаев, независимо от того, что является основной истиной, A или B. Это, по-видимому, куда мы хотим добраться? Давайте назовем это «идеальным порогом», или «идеальной моделью G», или, возможно, .G G FGG

Теперь, скажем, у нас есть функция потерь, которая:

L=1Nn=1NIyig(xi)

где - это индикаторная переменная, когда истинно, иначе , - истинный класс для примера , а - прогнозируемый класс для примера по модели G. 1 c 0 y i i g ( x i ) iIc1c0yiig(xi)i

Представьте, что у нас есть набор данных, который содержит в 100 раз больше обучающих примеров класса А, чем класса В. И затем мы проходим примеры. Для каждых 99 примеров A мы ожидаем получить правильные и неправильные примеры. Аналогично, для каждого 1 примера B мы ожидаем, что правильных примеров и неправильных примеров. Ожидаемая потеря будет:99 * 0,1 = 9,9; 1 * 0,9 = 0,9; 1 * 0,1 = 0,1.990.9=89.1990.1=9.910.9=0.910.1=0.1

L=(9.9+0.1)/100=0.1

Теперь давайте рассмотрим модель которой порог установлен так, что класс A выбирается систематически. Теперь для каждых 99 примеров A все 99 будут правильными. Нулевая потеря. Но каждый пример B будет систематически не выбираться, что дает потерю , поэтому ожидаемая потеря по тренировочному набору будет:1 / 100G1/100

L=0.01

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

Следовательно, функция потерь заставит модель выбрать порог, который выбирает A с большей вероятностью, чем класс B, увеличивая отзыв для класса A, но снижая его для класса B. Получившаяся модель больше не соответствует тому, на что мы могли надеяться, нет больше соответствует нашей идеальной модели .G GG

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

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

Хью Перкинс
источник
4
Можете ли вы попытаться сделать свой ответ немного более конкретным к задаваемым вопросам? В то время как ясно вдумчивый, это читает главным образом как комментарий, а не ответ. Например, просто для целей комментирования можно утверждать, что использование неправильного правила оценки, такого как определенная функция потерь, в корне неверно и, следовательно, последующий анализ недопустим.
usεr11852 говорит восстановить Monic
Я не думаю, что можно сказать, что функция потерь является «правильной» или «неправильной», не зная действительной цели модели. Если цель состоит в том, чтобы модель машинного обучения «выглядела круто / полезно», то модель лучше, но если она максимизируется, например, оценка по какому-либо тесту / экзамену, где на 99 вопросов есть ответ А и один имеет ответ B, и у нас есть только 90% шанс правильно предсказать ответ, нам лучше всего выбрать A для всего, и это то, что делает функция потери выше. G
Хью Перкинс
2
Я в целом согласен; Я не полностью убежден в необходимости правильного правила подсчета очков, но с другой стороны, «фактическая цель» любой модели классификации - это полезный прогноз членства в классе, т.е. вам нужна информированная функция полезности. Я считаю , что в целом за несбалансированной проблем , присваивающих стоимость / прибыль до FP, TPи т.д., вероятно, лучший способ иметь разумную функцию полезности; в отсутствие соответствующих знаний об этом может быть сложно. По этой причине я почти всегда использую в качестве своего первого выбора Коэна , несколько консервативный показатель «согласия». k
usεr11852 говорит восстановить Monic
Я погуглил на «полезность функции», но ничего не вышло. У вас есть ссылка / ссылка? Я думаю из контекста, что вы называете «служебной функцией», по сути, модель выше? Модель инвариантна для различных сценариев. Возможно, один интересный вопрос заключается в том, что если обучить модель напрямую, используя несбалансированные данные, будет ли базовая, возможно неявная, модель аналогична / идентична модели обученной с помощью модели обучения , по сбалансированным данным? F G F F GFFGFFG
Хью Перкинс
3
Это подразумевает неявно (1), что KPI, который мы пытаемся максимизировать, является точностью, и (2) что точность является подходящим KPI для оценки модели классификации. Это не так.
С. Коласса - Восстановить Монику
0

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

Многие проблемы, которые были бы более подходящим образом смоделированы одноклассными классификаторами, приводят к плохо определенным моделям при использовании дискриминативных подходов, одним из симптомов которых являются «проблемы дисбаланса классов».

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

class         | "good"                        | "not good"
--------------+-------------------------------+------------------------------------------
sample size   | large                         | small
              |                               |
feature space | single, well-delimited region | many possibilities of *something* wrong 
              |                               | (possibly well-defined sub-groups of
              |                               |    particular fault reasons/mechanisms) 
              |                               | => not a well defined region, 
              |                               | spread over large parts of feature space
              |                               |
future cases  | can be expected to end up     | may show up *anywhere* 
              | inside modeled region         | (except in good region)

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

Этот тип «проблемы дисбаланса классов» исчезнет, ​​когда задача будет смоделирована как распознавание одного класса четко определенного «хорошего» класса.

cbeleites поддерживает Монику
источник