Метрики качества классификации
| Основа | матрица ошибок (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).
Как выбрать
- Начать с бизнес-вопроса: что стоит пропуск и что стоит ложная тревога.
- Для ранжирования и сравнения моделей — ROC AUC или PR AUC (при дисбалансе — PR AUC).
- Для принятия решений — подобрать порог на валидации под нужный precision или recall, затем отчитаться на тесте.
- Смотреть на матрицу ошибок, а не только на одно число, и оценивать разброс метрики по фолдам кросс-валидации.
Для языковых моделей классические метрики применяются, когда задача сводится к классификации; более общие подходы описаны в статье Оценка LLM (evals).
См. также
Источники
- scikit-learn — Metrics and scoring: quantifying the quality of predictions
- Fawcett — An introduction to ROC analysis (2006)
- Saito, Rehmsmeier — The Precision-Recall Plot Is More Informative than the ROC Plot on Imbalanced Datasets (2015)
- Google — Machine Learning Crash Course: Classification
- scikit-learn — Probability calibration
- Chicco, Jurman — The advantages of the Matthews correlation coefficient (2020)