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

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

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

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

Класс большинства

Класс большинства — это просто класс, который получил большее количество выборок в наборе данных. В приведенных выше двух примерах классы «отсутствие мошенничества» и «отсутствие болезней» составляли большинство классов этих наборов данных.

Класс меньшинства

Класс меньшинства — это класс, который получил меньше выборок в наборе данных. В приведенных выше двух примерах классы «мошенничество» и «заболевание» были классами меньшинства в этих наборах данных.

Модели ML смещены в сторону класса большинства при работе с несбалансированной задачей классификации, но класс меньшинства — это класс, который представляет наибольший интерес. Как классы «болезнь» и «мошенничество» в предыдущих примерах.

Теперь, когда вы знаете, что это за термины, давайте поработаем над тем, как с ними работать. Вот пять техник, которые мы собираемся изучить:

  • Недостаточная выборка класса большинства
  • Чрезмерная выборка класса меньшинства
  • Избыточная выборка класса меньшинства с использованием SMOTE
  • Метод ансамбля
  • Очаговая потеря

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

Под выборкой класса большинства

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

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

Чрезмерная выборка класса меньшинства

В методе Simple Over-Sampling мы используем дублирование, чтобы сделать класс меньшинства равным классу большинства. Мы случайным образом дублируем выборки класса меньшинства много раз, чтобы уравнять их с классом большинства. Этот метод называется передискретизацией.

Существует улучшенная версия передискретизации, которая называется SMOTE. Давайте посмотрим на это.

Избыточная выборка класса меньшинства с использованием SMOTE

Наиболее распространенный метод, используемый для передискретизации класса меньшинства, называется SMOTE. SMOTE расшифровывается как Synthetic Minority OverSampling Technique. В простом методе избыточной выборки дублирование выборок не добавляет нового количества информации для класса меньшинства. SMOTE создает синтетические сэмплы миноритарного класса для передискретизации, а не просто дублирует их. SMOTE использует алгоритм k ближайших соседей, чтобы выбрать выборку и добавить к ней несколько случайных ближайших соседей в данных передискретизации.

Существует модуль Python с именем imblearn, который можно использовать для передискретизации SMOTE. Другим подходом к работе с несбалансированными данными является метод Ensemble. Давайте посмотрим на это.

Метод ансамбля

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

Для лучшего понимания давайте рассмотрим пример. Предположим, у вас есть 3000 образцов в вашем классе большинства и 1000 образцов в вашем классе меньшинства. Теперь мы обучаем 3 модели со случайным подмножеством класса большинства и класса меньшинства. Обратите внимание, что в каждой модели классы большинства и меньшинства находятся в равновесии. После обучения модели проводим голосование среди этих моделей. И большинством голосов мы выбираем наш настоящий лейбл. Этот метод очень похож на алгоритм случайного леса, где мы берем большинство деревьев решений. Давайте поговорим о нашей последней технике на сегодня, а именно о потере фокуса.

Очаговая потеря

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

Вот отличная статья Яша Марата о потере фокуса. Если вы хотите углубиться в это, вы можете прочитать это здесь.



Это для этой статьи. Теперь вы знаете, что такое дисбаланс данных и методы борьбы с ним.

Счастливого обучения.