Данные

Imbalanced Data

Дисбаланс классов

актуальноТекущий рабочий стандарт

Направления: Машинное обучение · Классический ML, Прикладные направления · Рекомендательные системы, Доверенный ИИ · Справедливость

Когда положительных объектов 1% или меньше: как обучать, чем мерить и что делать с порогом.

Ключевые тезисы

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

Какую задачу решает

Когда положительных объектов 1% или меньше, привычные инструменты перестают работать. бессмысленна: модель, всегда отвечающая «нет», получит 99%. Обучение тоже перекошено — вклад редкого класса в ничтожен, и модели выгодно его игнорировать.

Лечение состоит из трёх независимых частей, и путать их не стоит. Метрика — берите , или экономическую функцию вместо . Обучение — перевзвешивание классов или focal loss. Решение — порог, подобранный по цене ошибок, а не 0.5. Чаще всего правильно настроенных метрики и порога достаточно, а до ресэмплинга дело не доходит.

Порядок действий при дисбалансе

1) Смените метрику: вместо и — при 1% положительных ROC-AUC выглядит красиво даже у бесполезной модели. 2) Добавьте class_weight='balanced' — это одна строка и обычно основной эффект. 3) Постройте PR-кривую и выберите порог по цене ошибок вашей задачи, а не 0.5. 4) Только если этого не хватило — пробуйте focal loss или SMOTE, обязательно внутри фолда. В большинстве проектов шаги 1–3 закрывают вопрос, а начинают почему-то с четвёртого.

Подробный разбор

2 подтемы — объяснения, формулы, примеры и интерактивные графики.

ПриёмКак работаетРиск
Веса классовредкий класс весит больше в ломает
Undersamplingвыбрасываем часть большого классатеряем данные
Oversampling / SMOTEдублируем или синтезируем редкий класс на синтетике
Порог + правильная метрикамодель не трогаем, меняем решениеничего не ломает
На практике

Начинайте с последней строки: часто «проблема дисбаланса» — это на самом деле проблема выбора метрики и порога, а не обучения.

  • Ресэмплинг до разбиения: синтетические объекты попадают и в train, и в валидацию — метрика взлетает.
  • Accuracy как метрика: при 1% положительных она бесполезна; смотрите и MCC.
  • Потеря калибровки: после перевзвешивания вероятности смещены — калибруйте отдельно, если они нужны.
0.000.250.500.751.00оценка моделипорогкласс 0класс 1
Precision0.941
Recall0.841
F10.888
Accuracy0.936
TP / FP / FN252 / 16 / 48
Поставьте долю класса 1 на 5% и посмотрите, как ведут себя precision и recall при разных порогах

Где применяется

  • АнтифродДоля мошенничества — доли процента, цена пропуска на порядки выше цены проверки.
  • Медицинская диагностикаРедкое заболевание: пропуск недопустим, ложная тревога приемлема.
  • Отток и дефолтНесколько процентов положительного класса — типичная ситуация в скоринге.
  • Промышленный контрольДефектных изделий единицы на тысячу.

Плюсы, минусы и альтернативы

Плюсы

  • Перевзвешивание решает большинство случаев одной строкой кода.
  • Правильный порог часто даёт больший эффект, чем смена модели.
  • Метрики, устойчивые к дисбалансу, сразу делают прогресс измеримым.

Минусы

  • Ресэмплинг ломает вероятностей — их придётся восстанавливать.
  • SMOTE на больших и высокоразмерных данных обычно не помогает, а иногда вредит.
  • Ресэмплинг вне фолда даёт утечку и завышенные метрики.
  • При экстремальном дисбалансе (1 к 10 000) простого решения может не быть вовсе.

Брать, если

  • Доля положительного класса ниже 5–10%.
  • Цена ошибок первого и второго рода различается на порядок и больше.

Не брать, если

  • Не начинайте с SMOTE: сначала метрика, вес класса и порог.
  • Не балансируйте выборку, если нужны честные вероятности, — это прямой конфликт.

Чем заменяют

Тема также относится к главам:Практика MLРабота с данными

Видеолекции

Тайм-кода именно на эту тему в записях нет. Но глава «Данные» разобрана в курсах целиком — с той оговоркой, что место в записи придётся искать самому.

Связанные темы

Редкие классы и события

Isolation Forest80%

Isolation Forest · Классическое машинное обучение

Обнаружение аномалий случайными разбиениями: аномальный объект отделяется от остальных за меньшее число разрезов.

Anomaly Detection80%

Поиск аномалий · Обучение без учителя

Выделение объектов, не похожих на основную массу данных, при отсутствии меток.

PR-AUC80%

PR-AUC · Метрики

Площадь под кривой precision–recall; честнее ROC-AUC при редком положительном классе.

MCC80%

Коэффициент Мэтьюса · Метрики

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

Loss functions80%

Функции потерь · Глубокое обучение

Формализуют цель обучения. Выбор потерь важнее выбора архитектуры чаще, чем кажется.

Extreme Value Theory80%

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

Аппарат для моделирования максимумов и хвостов: как оценить вероятность события, которого ещё не случалось.

Кому эта тема нужна

Усиливает профиль: Data Scientist, Инженер рекомендаций.

Спрашивают на собеседовании: Яндекс — Classic ML, Сбер — Скоринг и риски, Сбер — Рекомендации и персонализация, Т-Банк — Антифрод и риски, Авито — Модерация контента, VK — Зрение и модерация контента, Ozon — Спрос и логистика, Wildberries — Каталог, поиск и атрибуты, МТС — Отток и персональные предложения, Альфа-Банк — Скоринг и кредитные риски, Совкомбанк — Скоринг и взыскание, Точка — Антифрод и комплаенс, ЮMoney — Антифрод платежей, Магнит — Лояльность и персонализация, Lamoda — Рекомендации и поиск, Lamoda — Зрение и атрибуты каталога, HeadHunter — Матчинг и рекомендации, Циан — Поиск, ранжирование и достоверность, МегаФон — Отток и предложения, билайн — Маркетинг и удержание, Ростелеком — Качество сети и отток, Лаборатория Касперского — Детектирование вредоносного ПО, Positive Technologies — Аналитика событий и приоритизация, BI.ZONE — Антифрод и защита от автоматизации, СИБУР — Предиктивное обслуживание, Северсталь — Зрение в контроле качества, Росатом — Промышленный ИИ.

Проверить себя

Тема встречается в тестах по направлениям — ошибки приведут обратно на эту страницу.

Тема в работе целиком

Разбор архитектуры, где эта тема — один из кирпичей: требования, развилки, цифры и режимы отказа.

Следующий шагПроверить себя: Классический MLТема встречается в этом тесте 1 раз. Ошибка приведёт обратно на эту страницу — с объяснением, что именно не сошлось.Перейти →

Глава «Данные» последний раз правилась . Нашли ошибку — напишите.