Подробный разбор метрик классификации
Матрица ошибок, точность, полнота, F1, ROC-AUC и PR-кривая — выбор подходящей метрики.
«Подробный разбор метрик классификации» — бесплатный урок Learn AI with Python на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Learn AI with Python, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Learn AI with Python содержит 4 уроков всего.
Одной доли правильных ответов недостаточно
Доля правильных предсказаний — это доля корректных результатов, но на несбалансированных данных она вводит в заблуждение. Модель, которая предсказывает только преобладающий класс, может получить результат 99 %, оставаясь бесполезной для редкого класса.
Матрица ошибок
Матрица ошибок распределяет предсказания по истинно положительным, ложно положительным, истинно отрицательным и ложно отрицательным результатам. Она служит основой для всех остальных метрик.
from sklearn.metrics import confusion_matrix
y_true = [0, 1, 1, 0, 1, 0]
y_pred = [0, 1, 0, 0, 1, 1]
print(confusion_matrix(y_true, y_pred))
# rows = actual, columns = predictedТочность
Точность = TP / (TP + FP). Из всех объектов, предсказанных как положительные, сколько действительно являются положительными? Высокая точность означает мало ложных срабатываний. Это важно, когда ложно положительные результаты дороги, например для фильтров спама.
from sklearn.metrics import precision_score
print(precision_score(y_true, y_pred))Полнота
Полнота = TP / (TP + FN). Из всех действительно положительных объектов сколько удалось обнаружить? Высокая полнота означает мало пропусков. Это важно, когда ложно отрицательные результаты дороги, например при скрининге заболеваний.
from sklearn.metrics import recall_score
print(recall_score(y_true, y_pred))Оценка F1
Оценка F1 — это гармоническое среднее точности и полноты: 2 * P * R / (P + R). Она учитывает оба показателя и полезна, когда для несбалансированных данных требуется одно итоговое число.
from sklearn.metrics import f1_score, classification_report
print(f1_score(y_true, y_pred))
print(classification_report(y_true, y_pred))ROC-кривая и AUC
ROC-кривая показывает долю истинно положительных результатов в зависимости от доли ложно положительных результатов для разных порогов. roc_auc_score обобщает её: 1,0 — идеальный результат, 0,5 — случайное угадывание.
from sklearn.metrics import roc_auc_score
# needs probability scores, not hard labels
proba = model.predict_proba(Xte)[:, 1]
print(roc_auc_score(yte, proba))PR-кривая
PR-кривая показывает точность и полноту для разных порогов. При сильно несбалансированных классах она информативнее ROC, поскольку сосредоточена на положительном классе.
from sklearn.metrics import precision_recall_curve
prec, rec, thresh = precision_recall_curve(yte, proba)
# plot rec (x) vs prec (y) to see the tradeoffСредняя точность
average_precision_score сводит PR-кривую к одному числу (площади под PR-кривой). Это предпочтительная итоговая метрика для несбалансированной бинарной классификации.
from sklearn.metrics import average_precision_score
print(average_precision_score(yte, proba))ROC AUC и средняя точность
ROC AUC может выглядеть слишком оптимистично на несбалансированных данных, поскольку преобладают истинно отрицательные результаты. Средняя точность не учитывает истинно отрицательные результаты и более честно отражает качество работы с редким положительным классом.
Выбор подходящей метрики
Используйте F1 или среднюю точность для несбалансированных задач. Используйте ROC AUC для оценки качества ранжирования на сбалансированных данных. Выбирайте точность, когда важны ложные срабатывания, и полноту, когда важны пропуски. Перед выбором всегда определяйте свой приоритет.
Настройка порога
Большинство метрик зависит от порога принятия решения (по умолчанию 0.5). Изменяя порог, Вы обмениваете точность на полноту. Используйте PR-кривую, чтобы выбрать порог, соответствующий Вашему деловому требованию.
import numpy as np
# pick threshold for at least 0.9 precision
idx = np.argmax(prec >= 0.9)
chosen = thresh[idx]
preds = (proba >= chosen).astype(int)Быстрая проверка
Проверьте, насколько хорошо Вы понимаете метрики.
Повторение
Повторение: Начните с confusion_matrix. Точность учитывает ложные срабатывания, а полнота — пропуски; F1 уравновешивает их. roc_auc_score измеряет качество ранжирования; average_precision_score и PR-кривая лучше подходят для несбалансированных данных. Настройте порог в соответствии со своими приоритетами.
Часто задаваемые вопросы
Урок «Подробный разбор метрик классификации» бесплатный?
Да — полный текст урока «Подробный разбор метрик классификации» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Learn AI with Python, подпишись на CoddyKit PRO. Курс Learn AI with Python содержит 4 уроков всего.
Чему я научусь в уроке «Подробный разбор метрик классификации»?
Матрица ошибок, точность, полнота, F1, ROC-AUC и PR-кривая — выбор подходящей метрики. Ты практикуешь Learn AI with Python с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Learn AI with Python?
Предыдущий опыт не требуется. Learn AI with Python на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Подробный разбор метрик классификации»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Learn AI with Python?
Да. Каждый урок Learn AI with Python включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Стратегии кросс-валидации
- Подробный разбор метрик классификации
- Поиск по сетке и случайный поиск
- Байесовская оптимизация с Optuna