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

Сегодня я расскажу вам о важных метриках, которые используются для оценки качества моделей классификации в машинном обучении. Мы рассмотрим такие метрики как 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

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