Какие метрики качества классификации существуют?
Ответ от нейросети
sobes.tech AI
Что хотят услышать интервьюеры:
Для классификации обычно называют accuracy, precision, recall, F1-score, ROC-AUC и confusion matrix. Важно понимать, что не все метрики одинаково полезны при дисбалансе классов: accuracy может быть обманчивой, а precision и recall лучше отражают качество по каждому классу. Также важно уметь выбрать метрику под бизнес-задачу.
Определение:
Метрики качества классификации — это численные показатели, которые оценивают, насколько хорошо модель относит объекты к классам.
Они могут измерять общую долю верных ответов, качество предсказания положительного класса, способность находить все положительные объекты или разделяющую способность модели в целом.
Основные метрики для бинарной классификации:
- Accuracy — доля правильных ответов среди всех объектов.
- Precision — доля истинно положительных среди всех предсказанных положительных.
- Recall — доля истинно положительных среди всех реально положительных.
- F1-score — гармоническое среднее precision и recall.
- ROC-AUC — качество ранжирования: насколько модель отделяет классы по скору.
- Confusion matrix — таблица TP, FP, TN, FN, на основе которой строятся многие метрики.
Пример использования:
Для задачи спам-фильтра важно не пропускать спам, но и не удалять нормальные письма.
Если модель слишком часто помечает обычные письма как спам, precision будет низким. Если она пропускает много спама, recall будет низким. В таком случае часто смотрят на F1-score и confusion matrix, а не только на accuracy.
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, roc_auc_score, confusion_matrix
y_true = [1, 0, 1, 1, 0, 0, 1]
y_pred = [1, 0, 1, 0, 0, 1, 1]
y_proba = [0.9, 0.2, 0.8, 0.4, 0.1, 0.7, 0.95]
print("accuracy:", accuracy_score(y_true, y_pred))
print("precision:", precision_score(y_true, y_pred))
print("recall:", recall_score(y_true, y_pred))
print("f1:", f1_score(y_true, y_pred))
print("roc_auc:", roc_auc_score(y_true, y_proba))
print("confusion matrix:\n", confusion_matrix(y_true, y_pred))
Пояснение кода:
В этом примере:
y_true— реальные метки классов.y_pred— предсказанные классы.y_proba— вероятности положительного класса, нужны для ROC-AUC.accuracy_scoreпоказывает общую долю верных ответов.precision_scoreотвечает на вопрос: из всех предсказанных положительных сколько верны.recall_scoreотвечает на вопрос: из всех реальных положительных сколько найдено.f1_scoreбалансирует precision и recall.roc_auc_scoreоценивает, насколько хорошо модель ранжирует объекты.confusion_matrixпоказывает количество TP, FP, TN, FN и помогает понять ошибки модели.
Ключевые моменты:
- Accuracy полезна, но при дисбалансе классов может вводить в заблуждение.
- Precision важна, когда дорогие ложноположительные срабатывания.
- Recall важна, когда критично не пропустить положительный класс.
- F1-score удобна, когда нужен баланс между precision и recall.
- ROC-AUC хорошо подходит для оценки качества ранжирования по вероятностям.
- Confusion matrix — базовый инструмент для интерпретации всех остальных метрик.