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

В чем разница между классическими метриками?

2.3 Middle🔥 111 комментариев
#Метрики и оценка моделей

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

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

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

Классические метрики оценки моделей: Precision, Recall, F1-Score, Accuracy

Классические метрики — это основные показатели качества машинного обучения, используемые для оценки классификационных моделей. Каждая метрика по-разному оценивает производительность и имеет свои ограничения. Понимание различий между ними критично для выбора правильной метрики для конкретной задачи.

Матрица ошибок (Confusion Matrix)

Все классические метрики основаны на матрице ошибок:

  • True Positive (TP) — правильно предсказано как позитив
  • True Negative (TN) — правильно предсказано как негатив
  • False Positive (FP) — неправильно предсказано как позитив (ошибка типа I)
  • False Negative (FN) — неправильно предсказано как негатив (ошибка типа II)

Основные метрики

1. Accuracy (Точность) — общая доля правильных предсказаний

Accuracy = (TP + TN) / (TP + TN + FP + FN)

Что показывает: какой процент всех предсказаний был правильным.

from sklearn.metrics import accuracy_score

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

accuracy = accuracy_score(y_true, y_pred)
print(f"Accuracy: {accuracy:.4f}")  # 0.75 (6 из 8 правильно)

Когда использовать: когда классы сбалансированы и все ошибки одинаково важны.

Проблема: не учитывает несбалансированные классы (может быть бесполезной если один класс преобладает).


2. Precision (Точность предсказаний) — доля правильных позитивных предсказаний

Precision = TP / (TP + FP)

Что показывает: из всех объектов, которые мы предсказали как позитив, какой процент действительно позитивны.

from sklearn.metrics import precision_score

precision = precision_score(y_true, y_pred)
print(f"Precision: {precision:.4f}")

Когда использовать: когда стоимость ложных срабатываний высока.

Примеры:

  • Спам-фильтр — неправильно пометить письмо как спам дорого (потеря важного письма)
  • Медицинский диагноз — false positive означает ненужное лечение
  • Система обнаружения мошенничества — false positive вызывает блокировку карты

3. Recall (Полнота/Чувствительность) — доля найденных позитивных объектов

Recall = TP / (TP + FN)

Что показывает: из всех действительно позитивных объектов, какой процент мы нашли.

from sklearn.metrics import recall_score

recall = recall_score(y_true, y_pred)
print(f"Recall: {recall:.4f}")

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

Примеры:

  • Обнаружение рака — пропустить случай рака опасно (false negative)
  • Поиск преступника в видео — пропустить преступника плохо
  • Система обнаружения аномалий — пропустить аномалию может быть катастрофой

4. F1-Score (гармоническое среднее Precision и Recall)

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

Что показывает: баланс между точностью и полнотой. Это единая метрика, объединяющая обе.

from sklearn.metrics import f1_score

f1 = f1_score(y_true, y_pred)
print(f"F1-Score: {f1:.4f}")

Когда использовать: когда нужна единая метрика, учитывающая оба типа ошибок.

Сравнительная таблица

МетрикаФормулаЧто оцениваетКогда использовать
Accuracy(TP+TN)/(TP+TN+FP+FN)Общая доля правильныхСбалансированные классы
PrecisionTP/(TP+FP)Точность позитивных предсказанийFP дорогой
RecallTP/(TP+FN)Полнота найденных позитивовFN дорогой
F1-Score2*(Prec*Rec)/(Prec+Rec)Баланс Precision и RecallНужна единая метрика

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

from sklearn.metrics import precision_score, recall_score, f1_score

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

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

Интерпретация метрик

Высокий Precision, низкий Recall:

  • Модель очень осторожна, предсказывает позитив редко
  • Когда предсказывает позитив — она права, но пропускает много позитивов

Низкий Precision, высокий Recall:

  • Модель очень доверчива, предсказывает позитив часто
  • Находит почти все позитивы, но много ложных срабатываний

Высокий Precision и высокий Recall:

  • Идеальная модель (редко встречается)

ROC-AUC и другие метрики

Для более полной оценки часто используют:

  • ROC-AUC — площадь под кривой ROC, устойчива к несбалансированным классам
  • Specificity — TNR = TN / (TN + FP)
  • Matthews Correlation Coefficient — сбалансированная метрика для несбалансированных данных

Рекомендации по выбору метрик

  1. Для несбалансированных классов — используй Precision, Recall, F1-Score, ROC-AUC
  2. Когда FP дорогой — максимизируй Precision
  3. Когда FN дорогой — максимизируй Recall
  4. Когда оба типа ошибок важны — используй F1-Score или ROC-AUC
  5. Для быстрой оценки — начни с Accuracy, потом проверь другие