Какие способы калибровки вероятности существуют и как они работают
Что проверяют
Понимаете ли вы разницу между хорошим ранжированием и честными вероятностями и умеете ли калибровку измерить. Следом почти всегда спрашивают, на каких данных обучать калибратор и изменится ли после него ROC AUC.
Как отвечать
Модель откалибрована, если среди объектов с прогнозом 0.8 положительных действительно около 80%. Это важно, когда вероятность используется как число: ожидаемый убыток, порог по стоимости ошибок. Логистическая регрессия обычно откалибрована неплохо, наивный Байес уводит прогнозы к 0 и 1, случайный лес прижимает их от краёв, у SVM вероятностей нет вовсе, нейросети часто самоуверенны.
Методы:
- Platt scaling: логистическая регрессия поверх выхода модели,
sigmoid(a * s + b), два параметра. Работает на малых выборках, если искажение сигмоидной формы; - изотоническая регрессия: непараметрическая монотонная ступенчатая функция, подбирается алгоритмом PAV. Исправляет искажения любой формы, но на выборке меньше тысячи объектов легко переобучается;
- histogram binning: прогнозы делятся на интервалы, в каждом вероятность заменяется долей положительных;
- temperature scaling: для нейросетей и многоклассовых задач, логиты делятся на один параметр
T, подобранный по log loss на валидации. Argmax и точность не меняются.
В scikit-learn это CalibratedClassifierCV с method="sigmoid" или "isotonic". Калибратор учат на данных, которых модель не видела: через кросс-валидацию внутри класса или на отложенной выборке.
Оценка: reliability diagram (calibration_curve, CalibrationDisplay), Brier score, log loss и ECE, средневзвешенный по бинам разрыв между прогнозом и частотой. ECE стоит уметь написать на NumPy.
Где спотыкаются
Обучают калибратор на той же выборке, что и модель. Прогнозы на обучении слишком уверенные, и поправка выходит неверной.
Считают, что калибровка поднимет ROC AUC. Монотонное преобразование ранжирование не меняет, изотоническая регрессия может разве что немного сдвинуть AUC из-за одинаковых значений.
Забывают про undersampling. Если классы балансировали при обучении, вероятности смещены к редкому классу, и без поправки на исходную долю их нельзя читать как реальные.