Как нормализовать скор модели для отражения вероятностей и сохранения порядка ранжирования
Что проверяют
Отличаете ли вы ранжирование от калибровки. Высокий ROC AUC говорит, что модель правильно упорядочивает объекты, но не обещает, что скор 0.8 означает 80% событий. Следом спрашивают, как проверить калибровку и что происходит с вероятностями после андерсэмплинга.
Как отвечать
Ключевая мысль: любое строго монотонное преобразование сохраняет порядок, а значит и AUC. Остаётся подобрать такое преобразование на данных, а не придумать формулу:
- Platt scaling: логистическая регрессия поверх скора, два параметра. Хорошо работает на небольших выборках и когда искажение похоже на сигмоиду, как у SVM и бустинга;
- изотоническая регрессия: неубывающая ступенчатая функция. Гибче, но требует больше данных и на малых выборках переобучается. Внутри ступеньки объекты получают одинаковую вероятность, и строгий порядок там теряется;
- temperature scaling: для нейросетей, логиты делятся на один подобранный параметр, порядок сохраняется полностью;
- поправка на прореживание: если при обучении выкидывали часть отрицательного класса, вероятности завышены, и их пересчитывают по известной доле прореживания. Преобразование монотонное.
В scikit-learn это CalibratedClassifierCV с method="sigmoid" или "isotonic". Калибратор обучают на данных, которых модель не видела: отдельная выборка или кросс-валидация. Проверяют через calibration_curve и reliability-диаграмму, метрики Brier score, log loss и ECE. Калибровка уплывает при изменении доли событий, её пересматривают вместе с мониторингом модели.
Где спотыкаются
Прогоняют сырой скор через сигмоиду без подбора параметров и называют это вероятностью. Значения попадают в диапазон от 0 до 1, но с реальной частотой событий не связаны.
Предлагают softmax по набору объектов. Тогда вероятность клиента зависит от того, кто оказался с ним в одном батче, а в бинарной задаче это вообще не вероятность события. Min-max нормализация туда же: порядок сохраняет, но шкала зависит от выбросов.
Калибруют на той же выборке, на которой обучали модель. На трейне модель увереннее, чем на новых данных, калибратор подстроится под эту самоуверенность, и на проде вероятности окажутся искажены.