Перейти к содержанию
Данные и AI

11 вопросов по теме «Метрики и дисбаланс классов» на собеседовании

В этом материале — 11 вопросов из русской колоды RecallDeck по теме «Метрики и дисбаланс классов». Сначала сформулируйте короткий ответ сами, затем откройте подробный разбор и проверьте примеры, ограничения и отказные случаи.

10 мин чтения11 подробных ответовОбновлено
Главная мысль

Сначала зафиксируйте grain данных, допущения, метрику и риск leakage, затем обсуждайте модель, инструмент или инфраструктуру.

Вопросы и ответы

11 подробных ответов

Проверка по первоисточникам опубликована для 3 из 11 ответов. Дата и область проверки указаны у каждого проверенного ответа.

01

Дайте определение precision и recall через матрицу ошибок. Когда какая метрика важнее?

Короткий ответ: Precision (точность) = TP/(TP+FP) — доля настоящих позитивов среди всех, кого модель назвала позитивными. Recall (полнота) = TP/(TP+FN) — доля найденных среди всех реальных позитивов. Recall критичен там, где дорог пропуск (скрининг рака, fraud); precision — там, где дорога ложная тревога (спам-фильтр, блокировка контента).

Подробно:

Факт: 1 Факт: 0
Прогноз: 1 TP FP
Прогноз: 0 FN TN
  1. Precision — читаем строку «прогноз: 1»: сколько из срабатываний модели настоящие. Метрика цены ложной тревоги.
  2. Recall — читаем столбец «факт: 1»: какую долю реальных позитивов мы поймали. Метрика цены пропуска.
  3. Trade-off через порог — на фиксированной выборке снижение порога не уменьшает recall, но precision может вырасти или упасть в зависимости от меток добавленных объектов. При скорах 0.9 (негатив) и 0.8 (позитив) снижение порога с 0.9 до 0.8 повышает precision с 0 до 1/2. Проверяйте фактическую precision–recall-кривую, а не предполагайте монотонность precision.

⚠️ Частая ошибка: назвать формулы и остановиться. Сильный ответ начинается с вопроса «что дороже — пропустить или ложно сработать», и только из него следует, какая метрика главная.

Источник: scikit-learn: precision–recall curve.

02

Что на самом деле означает ROC-AUC = 0.8?

Короткий ответ: В бинарной классификации ROC-AUC — вероятность того, что случайный позитив получит скор выше случайного негатива, с половиной балла за равные скоры. Это качество ранжирования по всем порогам, а не калибровка вероятностей. Постоянный скор даёт AUC 0.5, идеальное ранжирование — 1.

Подробно:

  1. Попарное определение: AUC = P(score(x⁺) > score(x⁻)) + 0.5 × P(score(x⁺) = score(x⁻)). AUC 0.8 означает 80% попарных баллов с половиной балла за ничью, а не обязательно 80% строго упорядоченных пар.
  2. Преобразования: Строго возрастающее преобразование сохраняет порядок и равенства, поэтому в точной арифметике сохраняет AUC. Убывающее преобразование переворачивает ранжирование; округление и нестрогое преобразование могут создать ничьи и изменить AUC.
  3. Калибровка: AUC не означает, что прогноз 0.8 соответствует вероятности события 80%. Когда решения зависят от вероятностей, проверяйте калибровку отдельно.
скоры по убыванию:  0.9  0.7  0.6  0.4  0.2
классы:              +    +    −    +    −
6 пар позитив–негатив, 5 упорядочены верно: AUC = 5/6

один позитив и один негатив, оба со скором 0.5:
строгих побед нет, одна ничья: AUC = 0.5

Важно: Для AUC нужны позитивные и негативные примеры. На выборке одного класса нельзя измерить ранжирование позитива относительно негатива.

Источник: scikit-learn: ROC-AUC.

03

Модель показывает accuracy 99%. Это хорошая модель?

Короткий ответ: Неизвестно — сначала нужно спросить про баланс классов. При 99% негативов константный прогноз «все негативные» даёт те же 99% accuracy при нулевом recall. Это accuracy paradox — классический скрининговый вопрос.

Подробно:

1000 объектов: 990 негативных, 10 позитивных
модель «всегда 0»: accuracy = 990/1000 = 99%
                   recall   = 0/10     = 0   ← бесполезна
  1. Сравнение с baseline — accuracy имеет смысл только относительно доли мажоритарного класса: 99% при 99% негативов — ноль информации о модели.
  2. Метрики по классам — precision и recall (полнота) по минорному классу, матрица ошибок, PR-AUC: они мгновенно вскрывают вырожденную модель.
  3. Правильный ход на собеседовании — встречный вопрос: «какой баланс классов и какова цена FP и FN?» Само наличие этого вопроса — уже половина ответа.

⚠️ Частая ошибка: ответить «да, 99% — отлично». Это вопрос-фильтр: секунда колебания перед «а какой баланс классов?» — и интервьюер уже сделал вывод.

04

ROC-AUC или PR-AUC при сильном дисбалансе классов — что выбрать и почему?

Короткий ответ: PR-AUC. FPR в ROC-кривой делится на число всех негативов, которых при дисбалансе огромное количество, поэтому даже сотни ложных срабатываний почти не двигают кривую. Precision делится на число срабатываний модели и честно показывает коллапс. И baseline у PR-AUC — это prevalence (доля позитивов), а не 0.5.

Подробно:

Fraud: 100 000 транзакций, 100 позитивов (0.1%). Модель: TP = 80, FN = 20, FP = 900.

Метрика Формула Значение Впечатление
FPR (ось ROC) 900 / 99 900 0.9% «почти идеал»
Recall 80 / 100 80% хорошо
Precision (ось PR) 80 / 980 8.2% 11 из 12 алертов ложные
  1. Знаменатель решает — негативов так много, что ROC «прощает» любые разумные объёмы FP; precision смотрит только на то, что модель пометила, и разоблачает её.
  2. Baseline — у ROC-AUC случайный уровень всегда 0.5; у PR-AUC — prevalence (здесь 0.001), поэтому PR-AUC 0.4 на таких данных может быть блестящим результатом.
  3. Когда ROC-AUC уместен — сбалансированные классы, сравнение ранжирования на всей выборке, стабильность к смене prevalence между выборками.

⚠️ Частая ошибка: гордиться ROC-AUC 0.98 на антифрод-данных. Это фирменный вопрос fraud- и скоринговых команд: они тут же спросят precision при рабочем recall.

05

Что такое F1-мера, почему именно гармоническое среднее и когда F1 — плохой выбор?

Короткий ответ: F1 = 2PR/(P+R) — гармоническое среднее precision и recall. Гармоническое, потому что оно жёстко наказывает перекос: высокая одна метрика не компенсирует провальную другую. F1 — плохой выбор, когда цены FP и FN разные (нужна Fβ) или когда бизнесу нужны калиброванные вероятности и прямой учёт стоимости ошибок.

Подробно:

  1. Почему не арифметическое среднее — при P = 0.9 и R = 0.1 арифметическое среднее 0.5 выглядит терпимо, а F1 = 2·0.9·0.1/1.0 = 0.18 честно кричит о провале: одна компонента не прячет другую.
  2. Fβ — если recall важнее в β раз: F2 для скрининга (пропуск дорог), F0.5 для модерации (ложная тревога дорога).
  3. Когда F1 не годится — асимметричные издержки (лучше минимизировать ожидаемую стоимость напрямую), нужны вероятности (log-loss, Brier score), сравнение моделей без фиксации порога (PR-AUC).
P R Арифм. среднее F1
0.9 0.1 0.50 0.18
0.5 0.5 0.50 0.50

⚠️ Частая ошибка: ставить F1 «по умолчанию», не спросив о ценах ошибок. F1 неявно предполагает, что precision и recall равноценны — в реальных задачах это почти никогда не так.

06

Как выбрать порог классификации и чем плох дефолтный 0.5?

Короткий ответ: Выбирайте порог по цели и ограничениям на отдельной валидационной выборке. Для калиброванных вероятностей и одинаковой цены ложноположительной и ложноотрицательной ошибки порог 0.5 оптимален даже при дисбалансе классов. Другие цены ошибок, целевой recall или ограничения обработки могут требовать другого порога.

Подробно:

Если правильные решения имеют нулевую стоимость, предсказывайте позитив при p × C_FN > (1 − p) × C_FP. Граница равна C_FP / (C_FP + C_FN), где p — калиброванная вероятность для рабочей популяции. Сдвиг выборки, некалиброванные скоры или дополнительные цены решений нарушают предпосылки простой формулы.

Пропуск фрода стоит 10 000 ₽, ложная блокировка — 500 ₽: граница 500/10 500 ≈ 0.048 при указанных предпосылках. Это модель решения, а не универсальная политика блокировки фрода.

Для других целей перебирайте пороги на валидации: оптимизируйте выбранную метрику либо соблюдайте ограничение по recall. Если аналитики обрабатывают только 200 случаев в день, оцените top-200 и ожидаемые издержки. Не подбирайте порог на финальной тестовой выборке.

Фиксированная выборка, порог снижается:
recall не уменьшается; precision может вырасти или упасть.
Скоры 0.9 (негатив), 0.8 (позитив):
порог 0.9 -> precision 0; порог 0.8 -> precision 1/2.

Важно: Один дисбаланс классов не доказывает, что 0.5 неверен. Сначала назовите предпосылки калибровки, цены ошибок и рабочую цель.

Источники: scikit-learn: подбор порога, precision–recall-кривая.

07

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

Короткий ответ: Веса классов / cost-sensitive loss (первый выбор — данные не искажаются), undersampling, oversampling/SMOTE, сдвиг порога — и честный вопрос «а проблема ли это данных, или просто нужна другая метрика». Железное правило: ресемплировать только train-фолд внутри CV, иначе лик.

Подробно:

Приём Суть Цена
Class weights / cost-sensitive loss ошибка на минорном классе штрафуется сильнее почти бесплатно — начинать отсюда
Undersampling выбрасываем часть мажоритарного класса теряем данные
Oversampling / SMOTE дублируем минорный / интерполируем между k-NN-соседями синтетические точки, риск подгонки под шум
Сдвиг порога модель не трогаем, двигаем порог решения нужен хоть какой-то сигнал в скорах
«Это не проблема данных» сменить метрику: PR-AUC, recall@precision часто это и есть решение
  1. SMOTE — синтетические точки на отрезках между минорными соседями; на табличных данных с категориальными фичами и выбросами часто вредит.
  2. Главное правило — ресемплинг строго внутри train-фолда каждой итерации CV: oversampling до сплита раскладывает копии/интерполяции одного объекта в train и test → лик и фантастические метрики.
  3. Побочный эффект — ресемплинг меняет prevalence в train и ломает калибровку вероятностей: после него скоры придётся калибровать заново.

⚠️ Частая ошибка: SMOTE до train/test-сплита. Модель «узнаёт» тест по синтетическим близнецам — оценка завышена, в проде всё разваливается.

08

Что такое калибровка вероятностей, как её проверить и как починить?

Короткий ответ: Модель калибрована, если среди объектов с предсказанием p ≈ 0.8 позитивных действительно около 80%. Проверяют reliability diagram и Brier score, чинят Platt scaling или isotonic regression. Критично везде, где скор конвертируется в деньги: кредитный скоринг, pricing, ожидаемые потери.

Подробно:

  1. Диагностика — бьём предсказания на бины и в каждом сравниваем средний p с эмпирической долей позитивов:
бин p        реально позитивных
0.0–0.2      9%
0.4–0.6      44%
0.8–1.0      71%   ← модель переуверена: 0.9 ≠ 0.9
  1. Кто врёт из коробки — бустинг, SVM и современные нейросети систематически некалиброваны (чаще переуверены); логистическая регрессия обычно почти калибрована.
  2. Лечение — Platt scaling (сигмоида поверх скоров: мало данных, S-образное искажение) или isotonic regression (много данных, любая монотонная кривая). Калибровать на отдельном фолде, не на train.
  3. Связь с дисбалансом — under/oversampling меняет prevalence в train → вероятности систематически смещены; после ресемплинга калибровка обязательна.

⚠️ Частая ошибка: «AUC высокий — значит, вероятностям можно верить». AUC про порядок, калибровка про значения; понимание разницы — маркер сеньорности в скоринговых командах.

09

Как связаны коэффициент Gini и ROC-AUC?

Короткий ответ: Линейно: Gini = 2·AUC − 1. Это одна и та же информация о качестве ранжирования, просто в другом масштабе: случайная модель — AUC 0.5 → Gini 0, идеальная — AUC 1 → Gini 1.

Подробно:

Gini = 2·AUC − 1
AUC 0.50 → Gini 0.0   (случайное ранжирование)
AUC 0.75 → Gini 0.5
AUC 1.00 → Gini 1.0
диапазон: [−1, 1]; в живом кредитном скоринге
хороший Gini ≈ 0.3–0.6 (AUC ≈ 0.65–0.8)
  1. Геометрия — Gini равен отношению площади между ROC-кривой и диагональю к площади идеального треугольника над диагональю; отсюда линейная формула.
  2. Словарь банковского скоринга — Сбер, Т-Банк и любые кредитные команды говорят «Gini», а не «AUC»: мониторинг моделей, валидационные отчёты, алерты деградации — всё в Gini.
  3. Практический смысл — ничего нового относительно AUC: то же ранжирование, те же инвариантности. «Gini упал с 0.45 до 0.38» — стандартная фраза model-мониторинга, и вы обязаны её понимать.

⚠️ Частая ошибка: на собеседовании в банк не знать, что Gini и AUC — одно и то же с точностью до линейного преобразования. Для скоринговой команды это словарный минимум, а не бонусный вопрос.

10

RMSE, MAE и MAPE: что оптимизирует каждая метрика и когда какую выбирать?

Короткий ответ: RMSE минимизируется условным средним и квадратично штрафует большие ошибки — выбросы доминируют. MAE минимизируется медианой — робастна. MAPE не определена при нулевых фактах и асимметрична: перепрогноз штрафуется неограниченно, недопрогноз — максимум на 100%, поэтому оптимизация MAPE занижает прогнозы. При асимметричных бизнес-ценах — quantile loss.

Подробно:

Метрика Оптимум Выбросы Главная ловушка
RMSE среднее доминируют одна аномалия портит всю метрику
MAE медиана робастна не видит редкие крупные промахи
MAPE смещён вниз в процентах нули в факте; премирует занижение
Quantile loss заданный квантиль τ управляемы нужно осознанно выбрать τ
  1. RMSE vs MAE — вопрос «что больнее: средний промах или редкая катастрофа». Спрос с редкими всплесками: RMSE заставит модель «страховаться» от них.
  2. MAPE — деление на факт: при нулевом спросе взрывается; ошибка перепрогноза не ограничена (>100% бывает), недопрогноза — ограничена 100%.
  3. Асимметричные цены — упущенные продажи дороже лишнего стока? Quantile (pinball) loss с τ > 0.5 — стандарт demand forecasting.

⚠️ Частая ошибка: оптимизировать MAPE на спросе с нулями и всплесками: метрика взрывается на нулях и системно премирует заниженные прогнозы.

11

Precision@k, MAP, MRR, NDCG: что измеряет каждая метрика ранжирования?

Короткий ответ: Все четыре оценивают качество топа выдачи, а не классификацию. Precision@k — доля релевантных в топ-k; MRR — насколько высоко стоит первый релевантный; MAP — средняя precision по позициям всех релевантных; NDCG — градуированная релевантность с логарифмическим дисконтом по позиции, нормированная на идеальную выдачу.

Подробно:

  1. Precision@k — пользователь видит только первый экран: считаем релевантные в топ-k, хвост не важен.
  2. MRR — 1/позиция первого релевантного, усреднить по запросам: для сценариев «нужен один правильный ответ» (поиск, автокомплит, QA).
  3. MAP — среднее average precision по запросам: учитывает и полноту, и порядок, но релевантность только бинарная.
  4. NDCG — релевантность градуированная (0–3), вклад позиции i равен rel/log2(i+1), сумма делится на DCG идеальной сортировки.
выдача (rel):    [2, 0, 3, 1]
DCG  = 2/log2(2) + 0/log2(3) + 3/log2(4) + 1/log2(5)
     = 2 + 0 + 1.5 + 0.43 = 3.93
идеал [3, 2, 1, 0]: IDCG = 3 + 1.26 + 0.5 + 0 = 4.76
NDCG = 3.93 / 4.76 ≈ 0.83
  1. Когда ранжирующие, а не классификационные — поиск и рекомендации: релевантность не бинарна, а позиция решает всё. Дежурный вопрос в Яндексе, Авито, Ozon.

⚠️ Частая ошибка: оценивать рекомендательную систему глобальным ROC-AUC по всем парам «пользователь–товар»: он не видит, что пользователю показывают только топ, и позиция внутри него решает.

Источники

Источники и редакционная политика

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

От чтения к воспроизведению

Отрепетируйте полный цикл интервью.

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

Начать подготовку

Продолжить подготовку