Меры качества классификации: accuracy, precision, recall, F1-score
Что такое матрица ошибок и зачем она нужна
Представьте, что вы врач 🩺 и пытаетесь определить, болен пациент или здоров. Ваш диагноз может быть четырёх типов:
- ✅ Верно определить болезнь (True Positive)
- ✅ Верно определить отсутствие болезни (True Negative)
- ❌ Ошибочно диагностировать болезнь (False Positive)
- ❌ Пропустить болезнь (False Negative)
Матрица ошибок — это таблица, которая показывает все эти четыре варианта. Давайте построим её на примере!
| Предсказано: "Да" | Предсказано: "Нет" | |
|---|---|---|
| Факт: "Да" | True Positive (TP) | False Negative (FN) |
| Факт: "Нет" | False Positive (FP) | True Negative (TN) |
🧠 Запомните: Positive/Negative — это предсказание модели, а True/False — насколько оно соответствует истине.
Accuracy (Точность) — общая доля верных ответов
Это самая простая метрика — сколько всего правильных предсказаний сделала модель.
Accuracy = (TP + TN) / (TP + TN + FP + FN)
Представьте, что из 100 пациентов мы правильно определили 90. Тогда:
Accuracy = 90 / 100 = 0.9 (или 90%)
Но у accuracy есть большая проблема! 😱 Если у нас 95 здоровых и 5 больных, и модель всегда говорит "здоров", то:
Accuracy = (95 + 0) / (95 + 0 + 5 + 0) = 95%
Кажется, что всё отлично, но мы пропустили всех больных! Поэтому нужны другие метрики.
📌 Accuracy хороша только при сбалансированных классах. В реальности часто встречаются перекошенные данные!
Precision (Точность) — сколько из предсказанных "да" действительно верны
Также называется "precision положительного класса". Это мера того, насколько мы можем доверять нашему положительному предсказанию.
Precision = TP / (TP + FP)
Пример: мы сказали "болен" 10 людям. Из них действительно больны 8. Тогда:
Precision = 8 / (8 + 2) = 0.8 (80%)
Высокий precision означает, что когда мы говорим "да", мы редко ошибаемся. 🎯
💡 Precision важна, когда ложные срабатывания (False Positive) дорого обходятся. Например, когда мы не хотим напрасно тревожить человека.
Recall (Полнота) — сколько реальных "да" мы нашли
Показывает, какую долю реально больных людей мы смогли обнаружить.
Recall = TP / (TP + FN)
Пример: всего больных 20 человек, мы нашли 15. Тогда:
Recall = 15 / (15 + 5) = 0.75 (75%)
Высокий recall означает, что мы пропускаем мало реальных случаев. 🔍
⚠️ Recall критически важен, когда пропуск реального случая (False Negative) опасен. Например, при диагностике тяжелых заболеваний.
F1-score — гармония между precision и recall
Часто precision и recall conflicting: улучшая один, ухудшаешь другой. F1-score — это гармоническое среднее, которое учитывает обе метрики.
F1 = 2 * (Precision * Recall) / (Precision + Recall)
F1-score достигает максимума только когда обе метрики высоки. 📊
Пример: precision = 0.8, recall = 0.75
F1 = 2 * (0.8 * 0.75) / (0.8 + 0.75) = 2 * 0.6 / 1.55 ≈ 0.774
🎯 F1-score — отличный выбор, когда нужно сбалансировать важность precision и recall!
Практические задачи
Задача 1: Диагностика заболевания
Модель предсказала заболевание у 50 пациентов. Из них действительно больны 40. Всего в данных было 60 больных людей.
Вычислите precision и recall.
Решение:
Дано: TP = 40, FP = 50 - 40 = 10, FN = 60 - 40 = 20
Precision = TP / (TP + FP) = 40 / (40 + 10) = 40/50 = 0.8 (80%)
Recall = TP / (TP + FN) = 40 / (40 + 20) = 40/60 ≈ 0.667 (66.7%)
Задача 2: Спам-фильтр
Фильтр пометил 100 писем как спам. Из них 90 действительно спам. Всего в почте было 120 спам-писем.
Вычислите precision, recall и F1-score.
Решение:
Дано: TP = 90, FP = 100 - 90 = 10, FN = 120 - 90 = 30
Precision = 90 / (90 + 10) = 90/100 = 0.9 (90%)
Recall = 90 / (90 + 30) = 90/120 = 0.75 (75%)
F1 = 2 * (0.9 * 0.75) / (0.9 + 0.75) = 2 * 0.675 / 1.65 ≈ 0.818
Как выбрать метрику для вашей задачи?
- 🎯 Accuracy: когда классы сбалансированы и все ошибки одинаково важны
- ⚠️ Precision: когда False Positive дорого обходится (например, ложная тревога)
- 🔍 Recall: когда False Critical (например, пропуск заболевания)
- ⚖️ F1-score: когда нужен баланс между precision и recall
🌟 Помните: не существует "универсальной лучшей метрики". Выбор зависит от конкретной задачи и стоимости ошибок!
Теперь вы знаете основные метрики качества классификации и понимаете, в каких ситуациях применять каждую из них. Практикуйтесь на реальных задачах, и эти знания станут вашим надежным инструментом! 🚀