← Назад к списку
ТехническаяData Science и MLMiddle

Как работать с сильным дисбалансом классов в задаче классификации?

Короткий ответ

  • Сначала правильные метрики: PR-AUC, F1, recall по классам
  • Взвешивание классов в функции потерь
  • Undersampling мажорного и oversampling минорного класса
  • SMOTE генерирует синтетические примеры, применять осторожно
  • Подбор порога под бизнес-требования вместо 0.5
  • Ресемплинг только на train, валидация на честном распределении
  • Иногда задача лучше решается как поиск аномалий

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

Как сказать вслух

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

Первое, что я делаю при дисбалансе — меняю метрики: accuracy тут бессмысленна, смотрю precision, recall и PR-AUC. Дальше самые дешёвые приёмы — задать веса классов в функции потерь и подобрать порог под задачу, а не оставлять ноль пять. Ресемплинг вроде SMOTE применяю аккуратно и только к обучающей части, потому что валидироваться нужно на реальном распределении.

Подробный ответ

Основной ответ

План работы с дисбалансом. Первое — метрики: accuracy заменяется на precision/recall, F1, PR-AUC, анализ матрицы ошибок; валидация стратифицированная. Второе — ценовая постановка: веса классов (class_weight, scale_pos_weight) или кастомная функция потерь, отражающая цену FN против FP. Третье — порог: модель учится на вероятностях, а рабочий порог подбирается по PR-кривой под бизнес-ограничение. Четвёртое — данные: undersampling мажорного класса (дёшево при избытке данных), oversampling или SMOTE для минорного; ресемплинг делается строго внутри train, иначе синтетические соседи утекут в валидацию. На экстремальном дисбалансе стоит рассмотреть постановку anomaly detection и обогащение данными. Начинать стоит с простого: веса и порог часто закрывают задачу без ресемплинга.

Ключевые моменты

  • Метрики раньше методов. Пока метрика accuracy — любые манипуляции бессмысленны; сначала договориться, что измеряем.
  • Веса и порог — дёшево. Class weights и подбор порога не искажают данные и чаще всего дают основной эффект.
  • Ресемплинг только в train. SMOTE до разбиения — утечка; валидация и тест держат реальное распределение классов.
  • Калибровка после. Ресемплинг и веса смещают предсказанные вероятности — перед использованием как вероятностей нужна рекалибровка.

Практический контекст

Типичный вопрос из антифрода, скоринга, медицины и предиктивного обслуживания, где позитивов меньше процента. Интервьюер смотрит, начнёт ли кандидат со SMOTE (красный флаг) или с метрик и цены ошибок. Сильный ответ строит иерархию: метрики → веса и порог → данные, и упоминает, что после ресемплинга вероятности смещены и требуют калибровки.

Частые ошибки

  • Сразу предлагают SMOTE, не поменяв метрики и не попробовав веса классов
  • Делают oversampling до разбиения на train и validation
  • Оставляют порог 0.5 по умолчанию, хотя задача требует иного баланса ошибок

ИП Кочкин Алексей Сергеевич · ИНН 390509026279 · ОГРНИП 325390000030973 · jiniys2005@yandex.ru