Иногда нужен баланс между Precision и Recall. Для этого придумали F1-меру (F1-score).
Формула:
F1 = 2 × (Precision × Recall) / (Precision + Recall)
Это гармоническое среднее Precision и Recall.
Почему не обычное среднее?
Обычное среднее:
(Precision + Recall) / 2
Проблема: если одна метрика очень низкая, а другая высокая, среднее будет средним 😄
Пример "плохой" модели:
- Precision = 90%
- Recall = 10%
- Обычное среднее = (90 + 10) / 2 = 50% — вроде неплохо?
Но это плохая модель! Она находит только 10% нужных объектов!
F1-мера честнее
F1 = 2 × (0.9 × 0.1) / (0.9 + 0.1) = 2 × 0.09 / 1.0 = 0.18 = 18%
F1 показывает, что модель плохая!
Свойства F1
- F1 = 1 (100%) — идеальная модель (Precision = Recall = 100%)
- F1 = 0 (0%) — ужасная модель (хоть одна метрика = 0)
- F1 учитывает обе метрики справедливо — если одна низкая, F1 тоже будет низкой
- F1 используют для сравнения моделей — у кого F1 выше, та модель в среднем лучше
Пример
Модель для детекции спама:
- TP = 80 писем
- FP = 20 писем
- FN = 10 писем
Precision = 80 / (80 + 20) = 80 / 100 = 0.8 = 80%
Recall = 80 / (80 + 10) = 80 / 90 = 0.889 = 88.9%
F1 = 2 × (0.8 × 0.889) / (0.8 + 0.889)
F1 = 2 × 0.711 / 1.689
F1 = 1.422 / 1.689 = 0.842 = 84.2%
Вывод: F1 = 84.2% показывает хороший баланс между точностью и полнотой.