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