В последнее время я много размышлял о «проблеме дисбаланса классов» в машинном / статистическом обучении и все глубже погружаюсь в ощущение, что я просто не понимаю, что происходит.
Сначала позвольте мне определить (или попытаться) определить мои термины:
Проблема дисбаланса классов в машинном / статистическом обучении заключается в том, что некоторые алгоритмы двоичной классификации (*) не работают должным образом, когда соотношение классов от 0 к 1 очень искажено.
Так, в приведенном выше примере, например, если для каждого отдельного класса было сто классов , я бы сказал, что дисбаланс классов составляет от до или .
В большинстве формулировок проблемы, которые я видел, не хватает того, что я считаю достаточной квалификацией (какие модели борются, насколько несбалансированными является проблема), и это один из источников моего замешательства.
Обзор стандартных текстов в машинном / статистическом обучении мало что дает:
- Элементы статистического обучения и введение в статистическое обучение не содержат «дисбаланса классов» в индексе.
Машинное обучение для прогнозирующей аналитики данных также не содержит «дисбаланса классов» в индексе.
Машинное обучение Мерфи : Вероятностная перспектива действительно содержит «дисбаланс классов *» в индексе. Ссылка на раздел о SVM, где я нашел следующий дразнящий комментарий:
Стоит помнить, что все эти трудности и множество эвристических методов, которые были предложены для их устранения, в основном возникают из-за того, что SVM не моделируют неопределенность с использованием вероятностей, поэтому их выходные результаты не сопоставимы между классами.
Этот комментарий сочетается с моей интуицией и опытом: на моей предыдущей работе мы обычно подгоняли логистические регрессии и модели дерева с градиентным ускорением (чтобы минимизировать биномиальную логарифмическую вероятность) для несбалансированных данных (порядка дисбаланса класса ), с нет явных проблем с производительностью.
Я читал (где-то), что модели на основе дерева классификации (сами деревья и случайный лес) также страдают от проблемы дисбаланса классов. Это немного мутит воду, деревья в некотором смысле возвращают вероятности: запись голосования для целевого класса в каждом терминальном узле дерева.
Итак, в заключение, что я действительно хочу, так это концептуальное понимание сил, которые приводят к проблеме дисбаланса классов (если она существует).
- Это то, что мы делаем для себя с плохо выбранными алгоритмами и ленивыми порогами классификации по умолчанию?
- Исчезает ли оно, если мы всегда подходим к вероятностным моделям, которые оптимизируют надлежащие критерии оценки? Иными словами, является ли причина просто неудачным выбором функции потерь, то есть оценки предсказательной силы модели, основанной на жестких правилах классификации и общей точности?
- Если да, то являются ли модели, которые не оптимизируют правильные правила оценки, бесполезными (или, по крайней мере, менее полезными)?
(*) Под классификацией я подразумеваю любую статистическую модель, подходящую для данных бинарного отклика. Я не предполагаю, что моей целью является трудное задание одному или другому классу, хотя это может быть.
poor choice of loss function
в свой список. Итак, вы думаете, это верно даже для правильных правил подсчета в качестве функций потерь?Ответы:
Запись из Энциклопедии машинного обучения ( https://cling.csd.uwo.ca/papers/cost_sensitive.pdf ) помогает объяснить, что то, что называют «проблемой дисбаланса классов», лучше понимать как три отдельные проблемы:
Авторы объясняют:
Таким образом, как предполагает Мерфи, нет ничего изначально проблемного в использовании несбалансированных классов, при условии, что вы избежите этих трех ошибок. Модели, дающие апостериорные вероятности, позволяют избежать ошибки (1), чем дискриминантные модели, такие как SVM, потому что они позволяют отделить вывод от процесса принятия решений. (См. Раздел епископа 1.5.4 « Выводы и решения» для дальнейшего обсуждения этого последнего пункта.)
Надеюсь, это поможет.
источник
Все, что связано с оптимизацией для минимизации функции потерь, если будет достаточно выпуклым, даст решение, являющееся глобальным минимумом этой функции потерь. Я говорю «достаточно выпуклый», поскольку глубокие сети не являются в целом выпуклыми, но на практике дают разумные минимумы, с осторожным выбором скорости обучения и т. Д.
Поэтому поведение таких моделей определяется тем, что мы вкладываем в функцию потерь.
Представьте, что у нас есть модель , которая присваивает некоторый произвольный вещественный скаляр каждому примеру, так что больше отрицательных значений имеют тенденцию указывать на класс A, а больше положительных чисел указывают на класс B.F
Мы используем для создания модели , которая присваивает порог неявным или явным образом выводу , так что, когда выводит значение, большее, чем тогда модель предсказывает класс B, иначе это предсказывает класс A.G b F F b GF G b F F b G
Изменяя порог который изучает модель , мы можем варьировать пропорцию примеров, которые классифицируются как класс A или класс B. Мы можем двигаться по кривой точности / отзыва для каждого класса. Более высокий порог дает меньший отзыв для класса B, но, вероятно, более высокую точность.Gb G
Представьте, что модель такова, что если мы выберем порог, который дает одинаковую точность, и вспомним любой класс, то точность модели G будет равна 90% для любого класса (по симметрии). Таким образом, с учетом обучающего примера, мог бы привести пример правильно в 90% случаев, независимо от того, что является основной истиной, A или B. Это, по-видимому, куда мы хотим добраться? Давайте назовем это «идеальным порогом», или «идеальной моделью G», или, возможно, .G G ∗F G G∗
Теперь, скажем, у нас есть функция потерь, которая:
где - это индикаторная переменная, когда истинно, иначе , - истинный класс для примера , а - прогнозируемый класс для примера по модели G. 1 c 0 y i i g ( x i ) iIc 1 c 0 yi i g(xi) i
Представьте, что у нас есть набор данных, который содержит в 100 раз больше обучающих примеров класса А, чем класса В. И затем мы проходим примеры. Для каждых 99 примеров A мы ожидаем получить правильные и неправильные примеры. Аналогично, для каждого 1 примера B мы ожидаем, что правильных примеров и неправильных примеров. Ожидаемая потеря будет:99 * 0,1 = 9,9; 1 * 0,9 = 0,9; 1 * 0,1 = 0,1.99∗0.9=89.1 99∗0.1=9.9 1∗0.9=0.9 1∗0.1=0.1
Теперь давайте рассмотрим модель которой порог установлен так, что класс A выбирается систематически. Теперь для каждых 99 примеров A все 99 будут правильными. Нулевая потеря. Но каждый пример B будет систематически не выбираться, что дает потерю , поэтому ожидаемая потеря по тренировочному набору будет:1 / 100G 1/100
Десять раз меньше, чем потери при настройке порога, например, чтобы назначить равный отзыв и точность для каждого класса.
Следовательно, функция потерь заставит модель выбрать порог, который выбирает A с большей вероятностью, чем класс B, увеличивая отзыв для класса A, но снижая его для класса B. Получившаяся модель больше не соответствует тому, на что мы могли надеяться, нет больше соответствует нашей идеальной модели .G ∗G G∗
Чтобы исправить модель, нам нужно, например, изменить функцию потерь таким образом, чтобы ошибочный B стоил намного дороже, чем неправильный. Тогда это изменит функцию потерь так, чтобы иметь минимум ближе к более ранней идеальной модели , которая присваивала равную точность / отзыв каждому классу.G∗
В качестве альтернативы, мы можем изменить набор данных, клонируя каждый пример B 99 раз, что также приведет к тому, что функция потерь больше не будет иметь минимум в позиции, отличной от нашего более раннего идеального порога.
источник
FP
,TP
и т.д., вероятно, лучший способ иметь разумную функцию полезности; в отсутствие соответствующих знаний об этом может быть сложно. По этой причине я почти всегда использую в качестве своего первого выбора Коэна , несколько консервативный показатель «согласия».Обратите внимание, что у одноклассных классификаторов нет проблемы дисбаланса, поскольку они смотрят на каждый класс независимо от всех других классов, и они могут справиться с «не-классами», просто не моделируя их. (Конечно, у них могут быть проблемы со слишком маленьким размером выборки).
Многие проблемы, которые были бы более подходящим образом смоделированы одноклассными классификаторами, приводят к плохо определенным моделям при использовании дискриминативных подходов, одним из симптомов которых являются «проблемы дисбаланса классов».
В качестве примера рассмотрим продукт, который может быть хорошим для продажи или нет. Такая ситуация обычно характеризуется
Таким образом, класс «хорошо» четко определен, а класс «не хорошо» - плохо определен. Если такая ситуация моделируется с помощью дискриминационного классификатора, у нас возникает двоякая «проблема дисбаланса»: не только класс «нехороший» имеет небольшой размер выборки, но и еще более низкую плотность выборки (меньшее количество выборок разбросано по большая часть художественного пространства).
Этот тип «проблемы дисбаланса классов» исчезнет, когда задача будет смоделирована как распознавание одного класса четко определенного «хорошего» класса.
источник