Сжатое руководство по обработке дисбаланса классов в данных

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

Точность составляет 99,27%. Это вообще возможно?

: Да. Это произошло из-за дисбаланса данных. Вы смотрите на правильный показатель точности, но точность — это не та метрика, на которую вам следует обращать внимание.

Понимание дисбаланса данных

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

Проблемы и последствия

В приведенном выше примере мошенничества с кредитными картами наша зависимая переменная достоверность транзакции имеет два класса: Мошенничество и Законность. Однако, к счастью для банка, операции с кредитными картами, как правило, имеют очень меньшую (‹ 1%) долю мошенничества, остальные транзакции являются законными. Это означает, что класс Легитимный перевешивает класс Мошенничество.

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

Общая точность

= правильно классифицированные транзакции/общее количество транзакций

= Процент законных транзакций (поскольку все законные транзакции правильно классифицированы)

= 99,27% (точность очень высокая)

Точность для легитимного класса

= Правильно классифицированная Легитимная транзакция / общее количество Легитимных транзакций

= 100 %

Точность мошеннических транзакций

= Правильно классифицированные мошеннические транзакции / Всего мошеннических транзакций

Поскольку модель ничего не классифицировала как мошенничество,

= 0%

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

Как справиться с дисбалансом данных?

  1. Соберите больше данных —если возможно, соберите больше данных, особенно для меньшинства. Увеличение количества выборок в классе меньшинства может предоставить модели больше информации для изучения и улучшить ее способность к обобщению.

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

  • Случайная избыточная выборка. Этот метод случайным образом дублирует выборки из класса меньшинства, чтобы увеличить его представление в наборе данных. Это помогает сбалансировать распределение классов, но может привести к переоснащению, если не применять его осторожно.
  • Случайная недостаточная выборка — этот метод случайным образом удаляет выборки из большинства классов, чтобы уменьшить их доминирование в наборе данных. Это помогает сбалансировать распределение классов, но может отбросить потенциально полезную информацию и привести к потере информации.
  • Кластеризация центроидов — этот метод выбирает центроиды из класса большинства с помощью методов кластеризации и уменьшает количество выборок класса большинства. Он направлен на то, чтобы сохранить репрезентативную информацию о классе большинства, одновременно уменьшая дисбаланс классов.
  • NearMiss — NearMiss — это метод недостаточной выборки, который выбирает образцы из класса большинства на основе их близости к экземплярам класса меньшинства. Он выбирает образцы, наиболее близкие к экземплярам класса меньшинства, эффективно сохраняя информацию о границах.
  • Редактируемые ближайшие соседи (ENN) — ENN – это метод недостаточной выборки, который удаляет выборки из основного класса, если их метка класса неправильно классифицируется их ближайшими соседями. Он направлен на удаление зашумленных образцов, которые могут негативно повлиять на производительность классификации.
  • Сочетание избыточной и недостаточной выборки — этот подход сочетает избыточную выборку класса меньшинства с недостаточной выборкой класса большинства. Путем одновременной передискретизации и недостаточной выборки он стремится уловить важные закономерности обоих классов, одновременно уравновешивая распределение классов.

3. Балансировка веса классов (наказание) —назначайте разные веса классам во время обучения модели, чтобы придать большее значение классу меньшинства. Этого можно добиться, настроив веса классов в функции потерь или используя алгоритмы, которые по своей сути поддерживают веса классов, такие как параметр class_weight в scikit-learn.

4. Увеличение данных. Генерация синтетических данных для класса меньшинства может помочь смягчить дисбаланс классов. SMOTE и ADASYN — некоторые популярные методы расширения данных.

  • Synthetic Minority Over-sampling Technique (SMOTE) —SMOTE (Synthetic Minority Over-sampling Technique) создает синтетические выборки на основе характеристик существующих выборок классов меньшинств.
  • Adaptive Synthetic (ADASYN) — ADASYN — это расширение SMOTE, которое создает больше синтетических образцов для экземпляров класса меньшинства, которые труднее изучить. Он учитывает распределение пространства признаков для каждой выборки класса меньшинства и пропорционально генерирует синтетические выборки.

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

6. Методы ансамбля. Методы ансамбля, такие как бэггинг и бустинг, могут быть эффективными при устранении дисбаланса классов. Они включают в себя обучение нескольких моделей и объединение их прогнозов для повышения общей производительности. Такие методы, как Adaptive Boosting (AdaBoost) и Gradient Boosting (XGBoost, LightGBM), могут быть полезны для несбалансированных наборов данных.

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

8. Сбор более разнообразных данных. Иногда дисбаланс возникает из-за предубеждений в процессе сбора данных. Обеспечение более разнообразного и репрезентативного набора данных может помочь смягчить проблему дисбаланса.

9. Выбор алгоритма. Некоторые алгоритмы машинного обучения по своей природе более устойчивы к дисбалансу классов, чем другие. Такие алгоритмы, как случайные леса и машины опорных векторов (SVM), могут более эффективно обрабатывать несбалансированные данные.

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

Заключение

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

Спасибо за чтение! Я надеюсь, что этот блог помог вам найти эффективные решения для устранения дисбаланса классов. Если у вас есть дополнительные вопросы или вам нужна помощь, не стесняйтесь обращаться к нам. Удачного моделирования!

Какой из этих методов вы уже использовали? Поделитесь в комментариях :)