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

  • Обнаружение мошенничества
  • Претензия Прогноз
  • Прогноз по умолчанию
  • Прогноз оттока
  • Обнаружение спама
  • Обнаружение аномалий
  • Обнаружение выбросов
  • Обнаружения вторжений

Что такое классификация дисбаланса?

Проблема несбалансированной классификации — это пример проблемы классификации, в которой распределение примеров по известным классам смещено или искажено.

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

Причины дисбаланса классов

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

  1. выборка данных

2. свойства домена.

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

  • Предвзятая выборка.
  • Ошибки измерения.

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

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

Метрическая ловушка

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

Метрики, которые могут обеспечить лучшее понимание:

  • Матрица путаницы: таблица, показывающая правильные прогнозы и типы неправильных прогнозов.
  • Точность:количество истинных положительных результатов, разделенное на все положительные прогнозы. Точность также называется положительной прогностической ценностью. Это мера точности классификатора. Низкая точность указывает на большое количество ложных срабатываний.
  • Отзыв: количество истинных положительных результатов, разделенное на количество положительных значений в тестовых данных. Отзыв также называется чувствительностью или истинной положительной скоростью. Это мера полноты классификатора. Низкий отзыв указывает на большое количество ложноотрицательных результатов.
  • F1: оценка: средневзвешенное значение точности и полноты.
  • Площадь под кривой ROC (AUROC): AUROC представляет вероятность того, что ваша модель различает наблюдения из двух классов.
    Другими словами, если вы случайным образом выбираете одно наблюдение из каждого класса, какова вероятность того, что ваша модель сможет их правильно «ранжировать»?

Техника повторной выборки

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

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

Преимущества и недостатки недостаточной выборки

Преимущества

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

Недостатки

  • Он может отбросить потенциально полезную информацию, которая может быть важна для построения классификаторов правил.
  • Выборка, выбранная путем случайной недостаточной выборки, может быть необъективной. И это не будет точным представлением населения. Это приводит к неточным результатам с фактическим набором тестовых данных.

Преимущества и недостатки избыточной выборки

Преимущества

  • В отличие от недостаточной выборки, этот метод не приводит к потере информации.
  • Превосходит при выборке

Недостатки

  • Это увеличивает вероятность переобучения, поскольку повторяет события класса меньшинства.

Python IMB Узнать

Мы можем применить некоторые из этих методов повторной выборки, используя несбалансированную библиотеку Python. Он совместим с scikit-learn и является частью проектов scikit-learn-contrib.

импортировать

Случайная недостаточная выборка

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

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

В python RandomUnderSampler() из imblearn обеспечивает такую ​​выборку.

# import library
from imblearn.under_sampling import RandomUnderSampler

rus = RandomUnderSampler(random_state=42, replacement=True)# fit predictor and target variable

Случайная передискретизация

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

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

# import library
from imblearn.over_sampling import RandomOverSampler

ros = RandomOverSampler(random_state=42)