Можно ли считать новую модель с F1-score 0.81 лучше модели с 0.8 и сразу запускать в продакшен
Что проверяют
Отличаете ли вы улучшение от шума и есть ли у вас процедура принятия решения. Вопрос с подвохом: правильный ответ начинается не с метрики, а с вопроса, на чём она измерена.
Как отвечать
Одна сотая сама по себе не значит ничего, пока неизвестен разброс. Что проверяю до выводов:
- та же ли это тестовая выборка и какого она размера. На тысяче объектов такая разница укладывается в случайность;
- доверительный интервал: бутстрэп по тесту или несколько запусков с разными сидами, лучше парное сравнение на одних и тех же объектах;
- порог. F1 считается при конкретном пороге, поэтому сначала сравниваю пороговонезависимо, по PR-AUC, и только потом фиксирую порог под задачу;
- разрезы: по классам, по сегментам пользователей, по времени. Средняя цифра часто прячет проседание там, где ошибка дороже всего;
- честность сплита: нет ли утечки признаков, соблюдена ли временная граница.
Дальше идёт то, что к метрике не относится: задержка инференса, размер модели, стоимость, воспроизводимость обучения, мониторинг. И выкатка не по офлайн-метрике, а через теневой режим и затем A/B или канареечный трафик на онлайн-показателе.
Где спотыкаются
Подбирают порог на тесте и там же измеряют прирост. Тест превращается в валидацию, выигрыш существует только в отчёте и пропадает на новых данных.
Смотрят одну усреднённую цифру. Модель выросла на частом классе и просела на редком, суммарный F1 стал выше, а бизнесу стало хуже. Матрица ошибок по классам показывает это сразу.
Приравнивают F1 к пользе. Он считает ложноположительные и ложноотрицательные равноценными, а в реальности они стоят по-разному. Если пропуск дороже ложной тревоги, выгоднее может оказаться модель с меньшим F1, зато с большей полнотой.