Работа с сильно несбалансированными классами в алгоритмах классификации

26 октября я имел удовольствие выступить от имени Bluekiri с речью в PyData Mallorca, международном сообществе пользователей и разработчиков инструментов анализа данных.

Целью доклада было затронуть одну из самых горячих тем в алгоритмах классификации из-за ее общего присутствия: работа с сильно несбалансированными классами.

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

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

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

После того, как мы обосновали тему крайне несбалансированных классов в классификации, давайте перейдем к некоторым ее важным вопросам. Давайте начнем с своего рода «пугающего» предложения, которое будет иметь смысл в следующих строках: выполнение классификации, когда классы сильно несбалансированы, приводит к недооценке условных вероятностей класса меньшинства. Чтобы визуализировать это, мы используем изображение из академической статьи Улучшение оценок вероятности класса для несбалансированных данных, написанных Брайоном К. Уолленсом и Иссой Дж. Дахебре.

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

Как только будут поняты последствия работы с сильно несбалансированными классами, пора предложить некоторые решения, чтобы избавиться от систематической ошибки в оценке вероятности, показанной выше. Очень распространенная процедура - сделать проблему сбалансированной или, по крайней мере, менее несбалансированной. Наиболее часто используемые стратегии выборки для достижения этой цели:

- Недостаточная выборка (сбалансированная): все наблюдения из класса меньшинства сохраняются, а выборка без замены выполняется в классе большинства, где количество выбранных наблюдений равно выборке. размер класса меньшинства.

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

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

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

Сколько наблюдений из класса большинства следует использовать?

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

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

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

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

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