Ответ
Precision (точность) и Recall (полнота) измеряют разные аспекты работы модели, и их раздельный анализ критически важен для понимания компромиссов.
- Precision (Точность):
TP / (TP + FP)— доля правильно предсказанных положительных объектов среди всех объектов, которые модель назвала положительными. Важен, когда цена ложного срабатывания (False Positive) высока. Например, в спам-фильтре: пометив легитимное письмо как спам (FP), вы можете потерять важное сообщение. - Recall (Полнота):
TP / (TP + FN)— доля правильно найденных положительных объектов среди всех реально положительных объектов. Критичен, когда пропуск положительного объекта (False Negative) недопустим. Например, в диагностике тяжелого заболевания: пропустить болезнь (FN) гораздо опаснее, чем провести дополнительное обследование здорового пациента (FP).
F1-score — это гармоническое среднее Precision и Recall. Он полезен для сравнения моделей одним числом, но скрывает причинно-следственную связь. Модели с одинаковым F1 могут иметь совершенно разный баланс Precision/Recall, что делает их непригодными для разных бизнес-задач.
Пример на Python:
from sklearn.metrics import precision_score, recall_score, f1_score
y_true = [1, 1, 0, 1, 0, 0, 0]
y_pred = [1, 0, 1, 1, 0, 0, 0] # Модель агрессивно ставит "1"
print(f'Precision: {precision_score(y_true, y_pred):.2f}') # 0.67 (2 из 3 предсказанных "1" верны)
print(f'Recall: {recall_score(y_true, y_pred):.2f}') # 0.67 (нашла 2 из 3 реальных "1")
print(f'F1-score: {f1_score(y_true, y_pred):.2f}') # 0.67
На практике выбор метрики (Precision, Recall или их комбинация) определяется стоимостью ошибок в конкретной задаче.