В чем разница между классическими метриками?
Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Классические метрики оценки моделей: 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) | Общая доля правильных | Сбалансированные классы |
| Precision | TP/(TP+FP) | Точность позитивных предсказаний | FP дорогой |
| Recall | TP/(TP+FN) | Полнота найденных позитивов | FN дорогой |
| F1-Score | 2*(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 — сбалансированная метрика для несбалансированных данных
Рекомендации по выбору метрик
- Для несбалансированных классов — используй Precision, Recall, F1-Score, ROC-AUC
- Когда FP дорогой — максимизируй Precision
- Когда FN дорогой — максимизируй Recall
- Когда оба типа ошибок важны — используй F1-Score или ROC-AUC
- Для быстрой оценки — начни с Accuracy, потом проверь другие