Разбор
F1-score в машинном обучении: формула, пример и ограничения
Разбираем precision, recall и F1 на учебном примере поиска проблемных заказов. Почему важны выбранный класс, порог и способ усреднения.
F1-score объединяет precision и recall в одну метрику классификации. Она помогает сравнивать баланс между найденными нужными случаями и ошибочными срабатываниями. Для интерпретации нужно знать, какой класс считается положительным и по какому порогу принимается решение.
Один высокий F1 ещё не показывает экономическую пользу системы. Ложное предупреждение и пропущенная проблема могут иметь очень разную цену, а метрика не задаёт эту цену автоматически.
Сначала назовите положительный класс
В вымышленном примере модель ищет заказы с риском задержки. Положительный класс - задержка. Истинно положительный результат, TP, означает правильно найденную задержку. FP обозначает ложное предупреждение, FN - пропущенную задержку.
Допустим, модель правильно отметила 30 задержек, ошибочно предупредила о десяти обычных заказах и пропустила 20 задержек. Эти числа взяты для демонстрации расчёта и не относятся к реальному магазину.
Precision показывает, какая доля предупреждений оказалась верной: 30 / (30 + 10) = 0,75. Recall показывает, какая доля всех задержек найдена: 30 / (30 + 20) = 0,6.
Как получается F1
F1 - гармоническое среднее precision и recall. Для чисел примера получаем 2 × 0,75 × 0,6 / (0,75 + 0,6), то есть примерно 0,667.
Тот же результат можно получить напрямую по счётчикам: 2 × TP / (2 × TP + FP + FN). Здесь это 60 / 90. Если один из двух исходных показателей низок, высокий второй показатель не сможет полностью компенсировать его в F1.
Функция f1_score в scikit-learn реализует расчёт с несколькими вариантами усреднения. При отсутствии положительных примеров или предсказаний нужно явно проверить правила обработки неопределённых значений, а не молча сравнивать получившиеся числа.
Порог меняет результат
Если модель выдаёт оценку вероятности, её обычно превращают в категорию через порог. Более низкий порог может дать больше предупреждений: среди них появятся и дополнительные найденные задержки, и ложные тревоги. Конкретное изменение нужно измерить на данных.
Подбор порога проводится отдельно от финальной проверки качества. Если многократно выбирать лучший порог на одной проверочной выборке и потом сообщать её же результат, оценка становится слишком оптимистичной.
Пользователю процесса важнее понимать ожидаемое количество предупреждений и пропусков. Покажите их рядом с F1 для сопоставимого объёма заказов, чтобы результат можно было связать с нагрузкой сотрудников.
Что означают macro и micro
При нескольких классах метрики можно усреднять по-разному. Macro усредняет показатели классов с одинаковым весом. Weighted учитывает число примеров каждого класса. Micro сначала объединяет счётчики соответствующих ошибок и совпадений.
Поэтому «F1 = 0,8» без указания варианта может скрывать разные результаты. В многоклассовой задаче проверьте также показатели каждого класса: хорошее усреднение способно маскировать слабую работу на редкой категории.
Когда F1 недостаточно
Для предупреждения редких событий дополнительно нужны объёмы ошибок, доля положительных случаев и принятые ограничения на число срабатываний. Для оценки вероятностей важна отдельная проверка их соответствия наблюдаемым частотам.
Сравнивайте модели на одинаковой выборке и с одинаковыми правилами. Начать стоит с понятного исходного ориентира: baseline в машинном обучении. Он поможет увидеть, что именно улучшилось, кроме одного итогового числа.
Есть вопрос по теме?
Разберу вашу ситуацию и предложу конкретный шаг
Источники
Читайте также
Канал «Лёха Маркетолог»
Практика без воды: кейсы, инсайты, разборы. 1–2 поста в неделю.
Пока без комментариев. Будьте первым.