Sobes.tech
Back to questions
Middle
12

Какие метрики качества классификации существуют?

Companies where asked
СБЕРСБЕР
филиппинский банк Salmon
AvitoAvito
ЯндексЯндекс
OZONOZON
ГазпромбанкГазпромбанк

Answer from AI

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 — базовый инструмент для интерпретации всех остальных метрик.