Метрики качества классификации

Материал из llmdocs — справочник разработчика
Портал: ML и MLOps
Метрики качества классификации
Основаматрица ошибок (TP, FP, FN, TN)
Пороговые метрикиaccuracy, precision, recall, F1
Беспороговые метрикиROC AUC, PR AUC (average precision)
Вероятностные метрикиlog loss, Brier score
Реализацияsklearn.metrics

Метрики качества классификации — числовые показатели, по которым оценивают и сравнивают модели, предсказывающие класс объекта: «спам / не спам», «уйдёт клиент / останется», диагноз по снимку. Единой лучшей метрики нет: выбор зависит от того, какие ошибки дороже в конкретной задаче и насколько несбалансированы классы. Метрики считают на отложенных данных, которых модель не видела, — иначе оценка будет завышена из-за переобучения.[1]

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

Для бинарной задачи все предсказания делятся на четыре группы:

Предсказано «да» Предсказано «нет»
На самом деле «да» TP — верно найден FN — пропуск (ошибка II рода)
На самом деле «нет» FP — ложная тревога (ошибка I рода) TN — верно отклонён

Из этих четырёх чисел строятся почти все пороговые метрики.

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

  • Accuracy (доля правильных ответов) $= \frac{TP+TN}{\text{всего}}$. Понятна, но обманчива при дисбалансе: если мошеннических транзакций 0,5%, модель «всегда нет» даёт 99,5% accuracy и бесполезна.
  • Precision (точность) $= \frac{TP}{TP+FP}$ — какая доля найденного действительно нужного класса. Важна, когда дорого ложное срабатывание: блокировка честного пользователя, ложное обвинение.
  • Recall (полнота, чувствительность, TPR) $= \frac{TP}{TP+FN}$ — какую долю нужного класса модель нашла. Важна, когда дорог пропуск: болезнь, мошенничество, дефект.
  • F1-мера — гармоническое среднее precision и recall: $F_1 = \frac{2PR}{P+R}$. Обобщение $F_\beta$ позволяет придать полноте больший ($\beta>1$) или меньший вес.
  • Специфичность (TNR) $= \frac{TN}{TN+FP}$ — парная к полноте в медицине.
  • Коэффициент корреляции Мэттьюса (MCC) учитывает все четыре клетки матрицы и устойчив к дисбалансу.[6]

Precision и recall конфликтуют: снижая порог срабатывания, модель находит больше (recall растёт), но и ошибается чаще (precision падает).[4]

Порог и кривые

Большинство моделей выдают не класс, а оценку вероятности; класс получается сравнением с порогом (по умолчанию 0,5, что часто неоптимально). Беспороговые метрики оценивают качество ранжирования сразу для всех порогов:

  • ROC-кривая — зависимость TPR от FPR при изменении порога; ROC AUC — площадь под ней. Равна вероятности того, что случайный положительный объект получит оценку выше случайного отрицательного: 0,5 — случайное угадывание, 1,0 — идеал.[2]
  • PR-кривая — зависимость precision от recall; площадь под ней — PR AUC (average precision). При сильном дисбалансе она информативнее ROC: ROC AUC может выглядеть высоким за счёт огромного числа легко отсекаемых отрицательных примеров.[3]
from sklearn.metrics import (classification_report, roc_auc_score,
                             average_precision_score, confusion_matrix)

proba = model.predict_proba(X_test)[:, 1]
pred = (proba >= 0.3).astype(int)          # порог под задачу, а не 0.5

print(confusion_matrix(y_test, pred))
print(classification_report(y_test, pred, digits=3))
print("ROC AUC", roc_auc_score(y_test, proba))
print("PR AUC ", average_precision_score(y_test, proba))

Вероятностные метрики и калибровка

Если важны сами вероятности (расчёт ожидаемых потерь, ставки, медицинский риск), используют log loss (перекрёстную энтропию) и Brier score. Модель может хорошо ранжировать, но выдавать смещённые вероятности; калибровка (Platt scaling, изотоническая регрессия) это исправляет.[5] Бустинг и нейросети часто нуждаются в калибровке.

Многоклассовый случай

Метрики считаются для каждого класса «один против остальных» и усредняются: macro (простое среднее — все классы равноправны), weighted (с весами по частоте), micro (суммирование TP/FP/FN по всем классам — для однометочной задачи совпадает с accuracy).

Как выбрать

  1. Начать с бизнес-вопроса: что стоит пропуск и что стоит ложная тревога.
  2. Для ранжирования и сравнения моделей — ROC AUC или PR AUC (при дисбалансе — PR AUC).
  3. Для принятия решений — подобрать порог на валидации под нужный precision или recall, затем отчитаться на тесте.
  4. Смотреть на матрицу ошибок, а не только на одно число, и оценивать разброс метрики по фолдам кросс-валидации.

Для языковых моделей классические метрики применяются, когда задача сводится к классификации; более общие подходы описаны в статье Оценка LLM (evals).

См. также

Источники

  1. scikit-learn — Metrics and scoring: quantifying the quality of predictions
  2. Fawcett — An introduction to ROC analysis (2006)
  3. Saito, Rehmsmeier — The Precision-Recall Plot Is More Informative than the ROC Plot on Imbalanced Datasets (2015)
  4. Google — Machine Learning Crash Course: Classification
  5. scikit-learn — Probability calibration
  6. Chicco, Jurman — The advantages of the Matthews correlation coefficient (2020)