Метрики классификации

Сегодня я расскажу вам о важных метриках, которые используются для оценки качества моделей классификации в машинном обучении. Мы рассмотрим такие метрики как accuracy, precision, recall, f1-score и ROC-AUC.

Метрики классификации
Краткое содержание

Я приведу примеры расчета этих метрик на Python с использованием библиотеки scikit-learn.

Матрица ошибок (Confusion Matrix)

Для начала давайте разберемся, что такое матрица ошибок. Она показывает, сколько объектов из каждого класса модель отнесла к каждому из классов. По ней можно посчитать количество верных и ошибочных предсказаний:

  • True Positives (TP) - верно классифицированные положительные примеры
  • True Negatives (TN) - верно классифицированные отрицательные примеры
  • False Positives (FP) - отрицательные примеры, ошибочно отнесенные к положительному классу
  • False Negatives (FN) - положительные примеры, ошибочно отнесенные к отрицательному классу

Пример расчета матрицы ошибок в scikit-learn:

from sklearn.metrics import confusion_matrix
y_true = [0, 1, 2, 2, 0]  
y_pred = [0, 0, 2, 1, 0]
confusion_matrix(y_true, y_pred)

Accuracy

Accuracy (точность) - это доля правильных ответов модели. Она считается как отношение количества верно классифицированных примеров к общему количеству примеров:

Однако accuracy не всегда является хорошей метрикой, особенно если классы несбалансированны.

Precision и Recall

Precision (точность) показывает, какая доля объектов, отнесенных моделью к некоторому классу, действительно принадлежит этому классу.

Recall (полнота) показывает, какую долю объектов некоторого класса из всех объектов этого класса нашла модель.

Хорошая модель должна обеспечивать высокие значения как precision, так и recall. Пример расчета на Python:

from sklearn.metrics import precision_score, recall_score
precision_score(y_true, y_pred, average='macro')  
recall_score(y_true, y_pred, average='macro')

F1-score

F1-score - это гармоническое среднее между precision и recall. Она учитывает оба этих параметра и находит некоторый баланс между ними.

F1-score будет низкой, если любая из величин precision или recall низка. Пример расчета:

from sklearn.metrics import f1_score
f1_score(y_true, y_pred, average='macro')

ROC-AUC

ROC-кривая показывает зависимость True Positive Rate (TPR) от False Positive Rate (FPR) при варьировании порога. AUC (Area Under Curve) - площадь под ROC-кривой. Чем выше значение AUC, тем лучше модель.

Преимущество ROC-AUC в том, что она не зависит от соотношения классов, в отличие от accuracy. Пример расчета:

from sklearn.metrics import roc_auc_score
roc_auc_score(y_true, y_pred, average='macro')

Надеюсь, мой рассказ помог вам лучше разобраться в метриках классификации! Правильный выбор метрик позволяет более точно оценить качество модели. При этом всегда нужно учитывать особенности конкретной задачи.

Nerd IT 🌀 ML, DS, ANN, GPT
Привет! Меня зовут Семён, я работаю в сфере ML и аналитики данных и пишу в блог nerdit.ru статьи о своем опыте и том, что может пригодиться начинающим в начале их пути изучения больших данных.

Подписаться на новости Nerd IT

Не пропустите последние выпуски. Зарегистрируйтесь сейчас, чтобы получить полный доступ к статьям.
jamie@example.com
Подписаться