← Назад к вопросам

В чём разница между precision реколом и рекол луком?

1.0 Junior🔥 211 комментариев
#Машинное обучение#Метрики и оценка моделей

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Precision и Recall: основные метрики классификации

Precision (точность) и Recall (полнота) — две ключевые метрики для оценки качества классификационных моделей. Хотя они измеряют разные аспекты качества, они находятся в обратной зависимости, что требует компромисса при выборе оптимального порога классификации.

Что такое Precision?

Precision показывает, какой процент из предсказанных положительных примеров действительно являются положительными:

Precision = TP / (TP + FP)

Это мера точности или надежности положительных предсказаний модели. Если модель говорит что-то положительное, Precision показывает, насколько часто она права.

Что такое Recall?

Recall показывает, какой процент из всех действительно положительных примеров модель смогла найти:

Recall = TP / (TP + FN)

Это мера полноты или чувствительности модели. Recall показывает, насколько хорошо модель находит все положительные примеры.

Обратная зависимость

Когда мы снижаем порог классификации (говорим positive чаще):

  • Recall растёт: находим больше положительных примеров
  • Precision падает: больше ложных срабатываний

Когда мы повышаем порог (говорим positive реже):

  • Recall падает: пропускаем положительные примеры
  • Precision растёт: меньше ошибок

Практический пример

from sklearn.metrics import precision_recall_curve
import numpy as np

y_true = np.array([0, 0, 1, 1, 1, 0, 1, 0, 1, 1])
y_scores = np.array([0.1, 0.2, 0.8, 0.7, 0.9, 0.3, 0.85, 0.15, 0.95, 0.88])

precision, recall, thresholds = precision_recall_curve(y_true, y_scores)

for i in range(min(5, len(thresholds))):
    print(f"Threshold: {thresholds[i]:.2f}, Precision: {precision[i]:.3f}, Recall: {recall[i]:.3f}")

Результат показывает, что при низких порогах Recall высокий, но Precision низкий.

Матрица ошибок

Обе метрики основаны на элементах матрицы ошибок:

  • TP (True Positive): правильно предсказано как положительное
  • FP (False Positive): неправильно предсказано как положительное
  • FN (False Negative): неправильно предсказано как отрицательное

Precision зависит от FP (ложные срабатывания) Recall зависит от FN (пропущенные примеры)

Когда приоритизировать Recall?

  • Медицинская диагностика — пропустить болезнь опасно
  • Системы безопасности — пропустить угрозу неприемлемо
  • Обнаружение мошенничества — пропустить преступление дорого

Когда приоритизировать Precision?

  • Спам-фильтр — пометить письмо спамом ошибочно больно
  • Система рекомендаций — показать плохую рекомендацию плохо
  • Одобрение кредитов — одобрить рискованный кредит опасно

F1-Score для баланса

Когда обе ошибки одинаково важны, используй F1-Score:

F1 = 2 * (Precision * Recall) / (Precision + Recall)

Это гармоническое среднее, которое штрафует экстремальные значения.

Сравнение метрик

МетрикаЗависит отПриоритетИспользуется в
PrecisionFPМинимум ошибокСпам-фильтр
RecallFNНайти всехДиагностика
F1-ScoreP и RБалансОбщее использование

Инструменты для анализа

from sklearn.metrics import precision_score, recall_score, f1_score

y_true = [0, 1, 1, 0, 1]
y_pred = [0, 1, 0, 0, 1]

print(f"Precision: {precision_score(y_true, y_pred):.3f}")
print(f"Recall: {recall_score(y_true, y_pred):.3f}")
print(f"F1-Score: {f1_score(y_true, y_pred):.3f}")

Выводы

Выбор между Precision и Recall зависит от бизнес-требований:

  • Если ошибка вида "false negative" дорогая → максимизируй Recall
  • Если ошибка вида "false positive" дорогая → максимизируй Precision
  • Если обе ошибки одинаково важны → используй F1-Score или ROC-AUC
В чём разница между precision реколом и рекол луком? | PrepBro