Сравнение двух методов сохранения баланса в классификации

Контекст:

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

Приводит ли изменение веса классов и порогового значения к одному и тому же результату?

Мы попытаемся решить этот вопрос, проведя моделируемые эмпирические исследования.

I. Резюме:

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

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

Мы предполагаем, что чрезмерно высокий уровень ложной отрицательности по сравнению с уровнем ложной положительности при использовании 0,5 в качестве порога связан с дисбалансом в наборе данных - слишком низкий уровень y = 1 по сравнению с y = 0 записей.

Это кажется логичным, потому что записи y = 0 имеют большее влияние на классификатор, чем записи y = 1. В результате частота ошибок в классе y = 0 ниже по сравнению с классом y = 1. Сначала мы проверим это предположение.

Если предположение верно, мы проверим, приводит ли манипулирование весами классов к той же цели, что и манипулирование пороговым пределом. Следовательно, нужно будет ответить на два вопроса -

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

II. Подготовка смоделированных обучающих данных

Сначала мы определяем особенности набора обучающих данных.

Особенности обучающих данных:

  1. Будет одна функция, кредитный баланс - число от 0 до 20 000 и ответ - статус по умолчанию. 1 означает по умолчанию = да, а 0 означает по умолчанию = нет. Размер обучающей выборки будет 1000.
  2. Мы возьмем такое распределение вероятностей P (y = 1 | x), чтобы люди с более высоким кредитным балансом имели более высокий шанс дефолта. Это распределение вероятностей будет использоваться для создания набора обучающих данных - (X, Y).
  3. В обучающем наборе (записи с y = 1) / (количество выборок) = доля положительных записей в классе.

Мы используем логистическую функцию e ^ (b_0 + b_1.x) / (1 + e ^ (b_0 + b_01.x)), b_0 и b_1, выбранные в соответствии с нашими вышеуказанными требованиями, чтобы сгенерировать y для любого заданного x. Ниже приводится полученная кривая распределения вероятностей -

Мы также обеспечиваем заданную пропорцию y = 1 записи в обучающей выборке.

Ниже приводится распределение кредитного баланса для записей default = yes и default = no в обучающем наборе, сгенерированных с 10% записей default = yes.

И сформированный таким образом обучающий набор (первые 5 записей) -

Это классический случай логистической регрессии.

III. Нахождение ложного негатива

С обучающим набором, как указано выше, с применением логистической регрессии получены следующие прогнозы:

Соответствующая матрица путаницы ниже -

Согласно матрице неточностей, ложноотрицательные и истинно положительные результаты составляют 44% и 56% соответственно. Частота ложных срабатываний составляет 2,22%, а общая частота ошибок (здесь не показана) составляет 6,4%.

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

IV. Частота ошибок и дисбаланс в наборе обучающих данных

Мы продолжаем изменять пропорцию default = yes от 1% до 50% за 100 шагов, и для каждого значения пропорции мы наносим на график ложноотрицательные, ложноположительные и общие коэффициенты ошибок соответственно.

Нижеприведенный сюжет получается -

По мере того, как набор обучающих данных переходит от дисбаланса (меньшая пропорция 𝑦 = 1) к балансу, количество ложных отрицательных результатов будет уменьшаться (зеленые точки). Это логично, поскольку модель будет более «изученной» в области y = 1, следовательно, будет меньше ошибок в этой области. Также увеличится количество ложных срабатываний (красные точки), поскольку модель получит сравнительно меньше возможностей для изучения области y = 0.

Однако почему общий коэффициент ошибок, который обозначает общий "недостаток обучения" моделей, увеличивается? Оно могло в равной степени остаться прежним или уменьшиться.

Чтобы ответить на этот вопрос, мы более внимательно рассмотрим исходные и прогнозируемые границы решения, то есть значения x, для которых P (y = 1 | x) = 0,5.

IV а. Почему общий коэффициент ошибок увеличивается с увеличением баланса?

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

Мы берем три обучающих набора с 10, 30 и 50 процентным соотношением по умолчанию = да соответственно, переходя от дисбаланса к балансу и изучаем исходные и предсказанные границы.

Ниже представлен график, который мы получаем -

Три ряда цифр соответствуют соотношению 10, 30 и 50 процентов по умолчанию = да в данных. На графиках слева показаны исходные данные, для которых по умолчанию = да (зеленым цветом). На графиках справа показаны исходные данные, где default = no (красным). На каждом рисунке задняя вертикальная линия показывает границу решения, определяемую функцией моделирования; он остается неизменным во всем. Синяя вертикальная линия показывает прогнозируемую границу решения.

Сначала мы просматриваем 3 левых графика, где показаны только варианты default = yes.

Вверху значение по умолчанию = да составляет 10%.

  • Случаи слева от исходной границы решения - это те, в которых вероятность дефолта в соответствии с управляющей функцией составляет менее 50%; но случается дефолт. Это естественный способ подбрасывать неизбежные случайные ошибки.
  • Если бы граница прогноза была точно такой же, как и исходная граница, это было бы точным изучением природы моделью; лучший возможный сценарий. Даже в этом случае все точки данных слева от границы прогноза будут предсказаны как default = no, но изначально имеют default = yes; это ложноотрицательная ошибка. Когда граница прогноза совпадает с исходной границей, единственными ложноотрицательными ошибками являются те, которые вызваны неизбежной случайностью природы.
  • Однако граница прогнозирования лежит справа от исходной границы, потому что обучающий набор имеет небольшое количество выборок по умолчанию = да. Чтобы мотивировать этот момент - если бы не было выборок по умолчанию = да, граница прогноза была бы в крайнем правом углу, определяя все выборки как по умолчанию = нет.
  • Это источник более высокого, чем обычно, количества ложноотрицательных результатов; граница прогноза находится справа от исходной границы из-за низкой доли случаев по умолчанию = да или положительных.

Ниже во второй строке значение по умолчанию = да составляет 30%.

  • Поскольку по умолчанию = yes пропорция выборки увеличивается, граница прогноза смещается влево. Чтобы мотивировать это движение - если бы все обучающие образцы были по умолчанию = да. Граница прогноза была бы крайним левым, по умолчанию для всех случаев было бы «да».
  • По мере смещения границы прогноза влево количество ложноотрицательных ошибок уменьшается. Это попыталось бы снизить общую ошибку.

Внизу, где по умолчанию = да, доля составляет 50% -

  • Граница прогнозирования сдвигается еще дальше влево, что еще больше снижает количество ложноотрицательных ошибок.

Затем мы рассмотрим 3 правых рисунка, на которых показаны только значения по умолчанию = нет случаев.

Вверху значение по умолчанию = да составляет 10%.

  • Случаи справа от исходной границы решения - это те, в которых вероятность дефолта превышает 50%; пока дефолта не бывает. Вот это неизбежная случайная ошибка.
  • Граница прогноза находится справа от исходной границы. Случаи справа от границы прогноза - это те, в которых прогнозируется значение по умолчанию = да или y = 1, но изначально по умолчанию = нет или y = 0. Это ложноположительные ошибки.

Ниже во второй строке значение по умолчанию = да составляет 30%.

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

Внизу, где по умолчанию = да, доля составляет 50% -

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

При смещении границы прогноза влево ложноотрицательная ошибка уменьшается. Однако количество ложных срабатываний увеличивается. Но почему общая ошибка увеличивается? Здесь есть очень сложный момент.

  • Посмотрите на графики слева на рисунках 4-6. По мере того как синяя линия перемещается влево, количество наблюдений слева от нее, составляющих ложноотрицательные ошибки, уменьшается. Однако, когда пропорция по умолчанию = yes низкая, плотность этих зеленых точек низкая (low y = 1 выборка). Следовательно, даже при заметном движении синей линии влево уменьшение количества точек слева от нее невелико.
  • Теперь посмотрите на цифры справа. По мере того как синие линии перемещаются влево, количество наблюдений вправо увеличивается, т. Е. Увеличивается количество ложноположительных ошибок. Однако плотность красных точек больше (высокий y = 0 отсчетов). Следовательно, такое же движение синей линии влево может привести к относительно большему увеличению числа наблюдений справа от нее.
  • Следовательно, при увеличении выборки default = yes с 10 до 30 процентов увеличение количества ложных срабатываний обычно превосходит уменьшение количества ложных срабатываний.
  • Однако при более сбалансированном сценарии, скажем, default = yes, равном 30%, движение синей линии влево может не дать резких различий между уменьшением ложноотрицательных результатов и приращением ложных срабатываний. Таким образом, при переходе от 30 до 50 процентов общий коэффициент ошибок может быть относительно более постоянным.
  • Теперь посмотрите на рисунок 3. Общий коэффициент ошибок сначала возрастает, а затем постепенно стабилизируется, превышая 30% положительной пропорции.

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

V. Достигают ли одной и той же цели манипуляции с пороговыми пределами и весами классов?

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

Ниже полученная цифра -

Синяя кривая - это кривая ROC. Цветная полоса обозначает весовой коэффициент положительного класса или класса по умолчанию = да. Веса классов варьируются от 5,0 до 1,0 (при этом веса классов вообще не используются). Все графики разброса, лежащие на кривой ROC, означают, что манипулирование весами классов аналогично манипулированию порогом. Красная точка - это производительность классификатора, когда вес-класс = ’сбалансирован’, то есть вес класса от 5,0 до положительного класса. Мы видим, что без каких-либо весов классов, т. Е. Class-weight = 1.0, истинно положительный коэффициент будет наихудшим.

VI. Заключение:

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

  1. балансировать с помощью весов классов
  2. выбрать подходящий порог

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

PS:

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