Калибровка вероятностей: почему 0,8 ещё не означает 80%
Калибровка вероятностей — соответствие вероятностей классификатора наблюдаемым долям событий. Если модель приписала группе товаров вероятность «это обувь» около 0,8, у хорошо откалиброванной модели примерно 80% этой группы действительно должны быть обувью. Такое определение даёт scikit-learn; общая доля правильных ответов, accuracy, отвечает на другой вопрос.
Чем калибровка отличается от accuracy
Accuracy — доля объектов, которым присвоена правильная метка класса: число правильных ответов делится на число проверенных объектов. Так определена метрика accuracy_score. Она сравнивает выбранные метки с разметкой, а не заявленные вероятности с частотами.
Калибровка проверяет именно вероятности. Товары объединяют в интервалы — бины — по предсказанной вероятности выбранного класса. Внутри каждого бина сравнивают среднюю предсказанную вероятность с фактической долей этого класса. Эти величины образуют оси калибровочной кривой, или reliability diagram: по горизонтали средняя вероятность, по вертикали наблюдаемая доля.
Поэтому фраза подрядчика «модель точна на 80%» сама по себе не объясняет значение вероятности 0,8. Попросите назвать метрику и показать её расчёт. Ниже — учебный пример, где два показателя можно пересчитать вручную.
Условный каталог: «обувь» или «не обувь»
Все числа в этом разделе придуманы редакцией. Это не тест сервиса, не обучение модели и не измерение качества реального каталога. Представим бинарный классификатор товаров российского магазина. Положительный класс — «обувь»; второй класс — «не обувь». В условиях примера заданы 100 товаров и их проверенные метки.
Вероятности тоже заданы как условия задачи: в каждом интервале все 25 товаров получили одно значение p, указанное в колонке «Среднее p». Интервалы слева включают нижнюю границу, справа не включают верхнюю; последний включает 1. Поэтому товар на границе попадает ровно в одну строку. Границы и значения заданы в учебных данных.
| Интервал p | Среднее p | Товаров n | Обувь k | Доля k/n |
|---|---|---|---|---|
| [0; 0,25) | 0,20 | 25 | 5 | 5/25 = 20% |
| [0,25; 0,50) | 0,40 | 25 | 10 | 10/25 = 40% |
| [0,50; 0,75) | 0,60 | 25 | 10 | 10/25 = 40% |
| [0,75; 1] | 0,80 | 25 | 15 | 15/25 = 60% |
Источник всех строк — собственные вымышленные условия и расчёт редакции. Метод сравнения средней вероятности и наблюдаемой доли — scikit-learn.
В последней строке модель заявляет 0,8, но обувью оказались 15 из 25 товаров: 60%, а не 80%. Точка этой группы на reliability diagram — (0,8; 0,6), ниже диагонали равенства. Для совпадения ровно с 80% в этом учебном бине потребовались бы 20 товаров класса «обувь» из 25. Это сравнение частот группы, не обещание правильного ответа по отдельному товару. Все величины — расчёт примера.
Теперь условно назначим метку «обувь» при p ≥ 0,5. В первых двух строках правильные ответы — товары не из обуви: 20 и 15. В последних двух — обувь: 10 и 15. Accuracy = (20 + 15 + 10 + 15) / 100 = 60%. Её знаменатель — все 100 товаров; у доли 60% в последнем бине знаменатель другой — только 25 товаров этой строки. Одинаковые проценты здесь случайны; исходные числа заданы выше.
Что запросить у подрядчика
Чтобы понять отчёт о вероятностях, начните с этих вопросов.
- Смысл числа. Для какого класса выдана вероятность? В примере это «обувь», не «правильность любого ответа». Если вам прислали словесное «уверен» без определения числа, сначала договоритесь, что именно проверяется.
- Отдельную проверочную выборку. Попросите данные о составе товаров и способе проверки меток. Если модель дополнительно калибровали, покажите разделение данных обучения, калибровки и итоговой оценки: документация указывает на разделение данных для обучения и калибровки, а итоговую оценку не стоит превращать в подбор настроек.
- Таблицу бинов с объёмами. Нужны границы интервалов, среднее p, число товаров n и число положительных меток k, как в нашем примере. Попросите объяснить пустые интервалы и не выдавать небольшой бин за точное доказательство свойства на всём каталоге. Размеры групп видны отдельно от самой кривой в примере scikit-learn.
- Accuracy отдельно. Попросите число правильных меток, общий знаменатель и правило превращения вероятности в метку. По определению accuracy_score это другой расчёт; не заменяйте им таблицу калибровки.
Когда это нужно магазину
Попросите такую проверку, если собираетесь принимать решения по численному риску: например, отправлять на ручную проверку товары с высокой вероятностью ошибочной категории. Сначала убедитесь, вероятность какого события вам отдают; p(«обувь») из нашего примера не равно p(«ошибка»).
Если вы только сверяете готовые метки категорий и не используете вероятности, начните с таблицы ошибок и accuracy. Калибровочная кривая не заменит эту проверку. И наоборот: даже совпавшие вероятности и частоты не означают, что магазин устраивает доля ошибок или цена ручной проверки. Это разные условия приёмки.
Для первой сверки нужны выгрузка вероятностей, проверенные метки и расчёт по группам. Обучать собственную нейросеть ради чтения таблицы не требуется. Основная работа в таком разборе — получить проверенные метки и сопоставимые товары; цену и срок без объёма каталога редакция не оценивает. Наши четыре группы показывают арифметику, но не устанавливают достаточный размер выборки для вашего магазина.
Источники
- scikit-learn: калибровка — определение, устройство reliability diagram, разделение обучения и калибровки.
- scikit-learn: accuracy_score — определение доли правильных меток.
- Учебные данные и расчёт — вымышленные числа редакции, не результат запуска классификатора.
Редакция Кометы · Как работает редакция