Как работать с нерепрезентативными данными, когда модель предсказывает 10% дефолтов вместо 1%?
Что проверяют
Отличаете ли вы качество ранжирования от калибровки. Модель может хорошо разделять надёжных и рискованных заёмщиков и при этом завышать вероятность дефолта в десять раз. Интервьюер ждёт, что вы найдёте причину сдвига и исправите вероятности, а не броситесь балансировать классы. Следом спрашивают, важна ли калибровка вообще для этой задачи.
Как отвечать
Сначала уточните, что значит «10%»: средняя предсказанная вероятность или доля клиентов выше порога. Во втором случае дело в пороге 0,5, а его выбирают по стоимости ошибок, а не по умолчанию.
Если завышена сама вероятность, ищите причину:
- выборка обогащена дефолтами: undersampling, SMOTE, веса классов или данные кризисного периода. Модель честно выучила долю 10%;
- смещение отбора: обучались на заявках другого канала или сегмента, а применяете к общему потоку;
- сдвиг популяции: сравните распределения признаков на обучении и в текущем потоке через PSI.
При известном сдвиге априорной доли вероятности пересчитывают формулой p_new = p*k1 / (p*k1 + (1-p)*k0), где k1 = 0.01/0.10, k0 = 0.99/0.90. Надёжнее откалибровать модель на отложенной выборке с реальной долей дефолтов: сигмоидой Платта или изотонической регрессией через CalibratedClassifierCV. Проверка: calibration_curve, Brier score и сравнение средней предсказанной PD с фактической долей по бакетам.
Монотонная калибровка не меняет ROC-AUC и Gini. Если модель только ранжирует заявки для отсечения, 10% против 1% не критичны. Для ценообразования, резервов и лимитов нужна именно откалиброванная PD.
Где спотыкаются
Предлагают SMOTE или undersampling. Эти методы как раз сдвигают вероятности вверх, и проблема становится сильнее.
Проверяют исправление по ROC-AUC и не видят разницы, потому что метрика ранжирования к калибровке нечувствительна.
Калибруют на той же нерепрезентативной выборке, на которой обучали, и получают те же 10%.