Урок 13. Метрики качества классификации. Матрица ошибок, Precision, Recall, F1 и Classification Report


На этом занятии мы разберем фундаментальную тему машинного обучения — оценку качества моделей классификации. Мы выясним, почему интуитивно понятная метрика Accuracy (доля правильных ответов) может оказаться фатально обманчивой на несбалансированных данных, детально изучим матрицу ошибок (Confusion Matrix), разберем физический смысл и формулы метрик Precision (точность) и Recall (полнота), поймем концепцию гармонического среднего в F1-score, а также научимся строить и интерпретировать сводный отчет classification_report в библиотеке scikit-learn.

1. Ловушка метрики Accuracy и проблема дисбаланса классов

В задачах классификации с учителем базовой метрикой традиционно считается Accuracy — общая доля правильных ответов модели. Она рассчитывается как отношение числа верно предсказанных объектов к общему объему тестовой выборки:

$$ \text{Accuracy} = \frac{\text{Количество верных предсказаний}}{\text{Общее количество объектов}} $$

При использовании этой метрики в русскоязычной литературе возникает серьезная путаница терминов: и Accuracy, и Precision часто переводят одним словом — «точность». Однако за ними стоят принципиально разные математические сущности: Accuracy оценивает долю правильных ответов среди всех объектов, а Precision оценивает надежность положительных срабатываний модели.

Главный недостаток Accuracy проявляется при работе с несбалансированными выборками — ситуацией, когда один класс существенно преобладает над другим по численности.

Пример (Диагностика редкого заболевания): Представим выборку из \(1000\) пациентов. Из них \(990\) человек здоровы (Класс 0), а \(10\) имеют диагностированное редкое заболевание (Класс 1). Тривиальная «глупая» модель, которая просто присваивает всем подряд диагноз «здоров» (всегда выдает Класс 0), покажет потрясающую точность:
$$ \text{Accuracy} = \frac{990}{1000} = 99\% $$
С формальной точки зрения показатель идеален, но на практике такая модель абсолютно бесполезна и опасна, поскольку она не выявила ни одного реального больного.

Метрика Accuracy объективна только тогда, когда классы в обучающей, тестовой и реальной выборках идеально сбалансированы. Как только возникает перекос (в бинарных данных или многоклассовой классификации с редкими категориями), Accuracy теряет всякий практический смысл.

2. Матрица ошибок (Confusion Matrix) и 4 типа исходов

Чтобы детально увидеть, где именно ошибается модель, используется инструмент под названием матрица ошибок (Confusion Matrix). Для бинарной классификации она представляет собой таблицу \(2 \times 2\), сопоставляющую фактические значения целевого признака с предсказаниями модели.

В задачах классификации всегда существует нулевая гипотеза (\(H_0\)) — предположение о том, что объект относится к фоновому, наиболее часто встречающемуся в жизни классу (пациент здоров, письмо не является спамом). Класс, который мы целенаправленно ищем, считается положительным сигналом (Positive).

Фактический класс (Actual) Предсказанный класс (Predicted)
Положительный (1) Отрицательный (0)
Положительный (1) TP (True Positive)
Истинно положительный
FN (False Negative)
Ошибка II рода (Пропуск цели)
Отрицательный (0) FP (False Positive)
Ошибка I рода (Ложная тревога)
TN (True Negative)
Истинно отрицательный

Исходя из матрицы ошибок, модель классификации генерирует четыре базовых исхода:

  • TP (True Positive) — истинно положительный сигнал. Объект принадлежит к целевому классу, и модель верно его обнаружила (больного признали больным).
  • TN (True Negative) — истинно отрицательный сигнал. Объект не относится к целевому классу, и модель не подала тревоги (здорового признали здоровым).
  • FP (False Positive) — ошибка первого рода («ложная тревога»). Целевой признак отсутствует, но модель заявила о его наличии (здоровому человеку ошибочно поставили диагноз).
  • FN (False Negative) — ошибка второго рода («пропуск цели»). Объект действительно обладает целевым признаком, но модель пропустила его (больного человека сочли здоровым).

В терминах матрицы ошибок формула Accuracy записывается как сумма верных решений, деленная на сумму всех исходов:

$$ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} $$

3. Метрики Precision и Recall: цена ошибок в бизнес-задачах

Поскольку идеальных алгоритмов не существует, модель всегда будет совершать ошибки как первого, так и второго рода. Главная мысль машинного обучения: цена этих ошибок в реальном бизнесе категорически неравнозначна. Чтобы независимо оценивать способность модели избегать ошибок I или II рода, вводятся две метрики — Precision и Recall.

Precision (Точность положительных предсказаний)

Метрика оценивает: какая доля среди объектов, которые модель назвала положительными, реально относится к положительному классу?

$$ \text{Precision} = \frac{TP}{TP + FP} $$

Precision штрафуется за ложные срабатывания (FP). Чем меньше модель поднимает ложных тревог, тем выше Precision.

Recall (Полнота охвата целевого класса)

Метрика оценивает: какую долю реальных объектов целевого класса модель сумела обнаружить и извлечь?

$$ \text{Recall} = \frac{TP}{TP + FN} $$

Recall штрафуется за пропуски целевых объектов (FN). Чем меньше реальных случаев модель упустила, тем выше Recall.

Выбор метрики под прикладную сферу:

  • Медицинская диагностика и безопасность: Ошибка II рода (FN — пропустить болезнь) смертельно опасна. Ошибка I рода (FP — ложноположительный ПЦР-тест) неприятна, но решается повторным анализом крови. Здесь наша ключевая цель — максимизация Recall.
  • Фильтрация спама и банковский скоринг: Ошибка I рода (FP — поместить важное письмо от контрагента или банка в «Спам») ведет к упущенной выгоде и финансовым потерям. Если же в папку «Входящие» случайно просочится одно лишнее рекламное письмо (FN), пользователь легко удалит его вручную. В этой задаче приоритетом выступает максимизация Precision.

4. Гармоническое среднее: метрика F1-Score

Что делать, если в прикладной задаче одинаково важно избегать как ошибок первого, так и ошибок второго рода, или если у нас нет явного приоритета? Обычное среднее арифметическое между Precision и Recall здесь не подходит:

Если модель покажет \(\text{Precision} = 1.0\), но \(\text{Recall} = 0.04\), простое среднее выдаст внушительные \(0.52\), маскируя катастрофический провал полноты.

Для решения этой проблемы используется F1-score — гармоническое среднее между точностью и полнотой:

$$ F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} $$

Особенность гармонического среднего заключается в том, что оно стремится к наименьшему из двух значений. \(F_1\)-score будет высоким только в том случае, когда и Precision, и Recall одновременно высоки. Если хотя бы один из показателей проседает, значение \(F_1\) резко падает.

5. Реализация метрик в Scikit-Learn и Classification Report

Библиотека scikit-learn предоставляет модуль sklearn.metrics, содержащий функции расчета всех изученных характеристик. Каждая функция принимает два обязательных параметра: вектор фактических меток y_true и вектор предсказанных меток y_pred.

from sklearn.metrics import (
    confusion_matrix,
    accuracy_score,
    precision_score,
    recall_score,
    f1_score,
    classification_report
)

# Тестовые фактические и предсказанные данные
y_true = [0, 1, 0, 1, 0, 1, 0, 1]
y_pred = [0, 1, 1, 1, 0, 0, 0, 1]

# 1. Построение матрицы ошибок
cm = confusion_matrix(y_true, y_pred)
print("Confusion Matrix:\n", cm)

# 2. Индивидуальный расчет метрик
print(f"Accuracy:  {accuracy_score(y_true, y_pred):.2f}")
print(f"Precision: {precision_score(y_true, y_pred):.2f}")
print(f"Recall:    {recall_score(y_true, y_pred):.2f}")
print(f"F1 Score:  {f1_score(y_true, y_pred):.2f}")

Анализ сводного отчета Classification Report

Для глубокой комплексной аналитики применяется функция classification_report(), которая генерирует структурированную сводку показателей:

              precision    recall  f1-score   support

           0       0.75      0.75      0.75         4
           1       0.75      0.75      0.75         4

    accuracy                           0.75         8
   macro avg       0.75      0.75      0.75         8
weighted avg       0.75      0.75      0.75         8

Как интерпретировать параметры отчета:

  • Строки классов (0 и 1): показывают индивидуальные значения Precision, Recall и F1 для каждого класса в отдельности. Это позволяет сразу увидеть, с каким классом модель справляется хуже.
  • Support: фактическое количество объектов данного класса в тестовой выборке. Позволяет мгновенно выявить дисбаланс данных.
  • Macro avg (макроусреднение): простое среднее арифметическое метрик по всем классам без учета их размера. Показывает качество работы модели на редких классах.
  • Weighted avg (взвешенное усреднение): среднее арифметическое метрик с весами, пропорциональными объему каждого класса (Support). Отражает суммарную производительность модели с поправкой на реальное распределение классов.

План занятия

  1. Ограничения метрики Accuracy и дисбаланс классов

    • Формула Accuracy как общей доли верных ответов модели.
    • Проблема терминологии: различие понятий Accuracy и Precision в английском и русском языках.
    • Парадокс высокой точности: пример с редким заболеванием (99% Accuracy при бесполезной модели).
    • Неприменимость Accuracy в несбалансированных и многоклассовых задачах.
  2. Матрица ошибок (Confusion Matrix)

    • Структура матрицы ошибок \(2 \times 2\) для бинарной классификации.
    • Понятие нулевой гипотезы (\(H_0\)) и доминирующего класса по умолчанию.
    • Четыре типа сигналов: истинно положительный (TP), истинно отрицательный (TN).
    • Ошибки модели: ошибка I рода (FP — ложная тревога) и ошибка II рода (FN — пропуск цели).
    • Разбор матрицы ошибок на примере ПЦР-теста.
  3. Метрики Precision и Recall в прикладных задачах

    • Математический смысл и формула метрики Precision (точность положительных предсказаний): \(\text{Precision} = \frac{TP}{TP + FP}\).
    • Математический смысл и формула метрики Recall (полнота охвата класса): \(\text{Recall} = \frac{TP}{TP + FN}\).
    • Концепция разной цены ошибок: почему в медицине оптимизируют Recall, а в спам-фильтрах — Precision.
  4. F1-Score: сбалансированная оценка качества

    • Почему обычное среднее арифметическое между Precision и Recall вводит в заблуждение.
    • Гармоническое среднее и формула \(F_1 = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}}\).
    • Поведение F1 при проседании одной из базовых метрик.
  5. Инструменты оценки качества в Scikit-Learn

    • Использование функций confusion_matrix, accuracy_score, precision_score, recall_score, f1_score.
    • Структура и чтение комплексного отчета classification_report.
    • Параметры Support, Macro Average и Weighted Average.
    • Практический эксперимент: влияние изменения предсказаний на сдвиг метрик качества.

Не уходите просто так – не упустите возможность только здесь и сейчас получить скиду!

Индивидуальная консультация по Яндекс Директу или Google Ads со скидкой

25%

"*"обозначает обязательные поля

Это поле используется для проверочных целей, его следует оставить без изменений.