🤔 Какие можно использовать метрики для бинарной классификации?



Точность (Accuracy)

Измеряет долю правильно предсказанных классов относительно общего числа наблюдений. \[ \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN} \]



- \( TP \) (True Positives) – истинные положительные

- \( TN \) (True Negatives) – истинные отрицательные

- \( FP \) (False Positives) – ложные положительные

- \( FN \) (False Negatives) – ложные отрицательные

from sklearn.metrics import accuracy_score



y_true = [0, 1, 1, 0, 1]

y_pred = [0, 1, 0, 0, 1]



accuracy = accuracy_score(y_true, y_pred)

print(f"Точность: {accuracy}")




Полнота (Recall) или Чувствительность (Sensitivity)

Измеряет долю правильно предсказанных положительных случаев относительно всех реальных положительных случаев. \[ \text{Recall} = \frac{TP}{TP + FN} \]

from sklearn.metrics import recall_score



recall = recall_score(y_true, y_pred)

print(f"Полнота: {recall}")




Точность (Precision)

Измеряет долю правильно предсказанных положительных случаев относительно всех предсказанных положительных случаев. \[ \text{Precision} = \frac{TP}{TP + FP} \]

from sklearn.metrics import precision_score



precision = precision_score(y_true, y_pred)

print(f"Точность: {precision}")




F1-Score

Гармоническое среднее между точностью и полнотой.

\[ \text{F1} = 2 \cdot \frac{\text{Precision} \cdot \text{Recall}}{\text{Precision} + \text{Recall}} \]

from sklearn.metrics import f1_score



f1 = f1_score(y_true, y_pred)

print(f"F1-Score: {f1}")




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

Предоставляет полное представление о правильных и ошибочных предсказаниях.

from sklearn.metrics import confusion_matrix



cm = confusion_matrix(y_true, y_pred)

print(f"Матрица ошибок:\n{cm}")




ROC AUC (Area Under the ROC Curve)

Измеряет площадь под кривой ROC и показывает способность модели различать классы.

from sklearn.metrics import roc_auc_score



y_scores = [0.1, 0.4, 0.35, 0.8, 0.65]

roc_auc = roc_auc_score(y_true, y_scores)

print(f"ROC AUC: {roc_auc}")




Logarithmic Loss (Log Loss)

Измеряет производительность классификатора, наказывая за ошибочные предсказания с большей уверенностью.

from sklearn.metrics import log_loss



log_loss_value = log_loss(y_true, y_scores)

print(f"Log Loss: {log_loss_value}")




Matthews Correlation Coefficient (MCC)

Учитывает все элементы матрицы ошибок и предоставляет сбалансированную оценку производительности даже при несбалансированных классах. \[ \text{MCC} = \frac{TP \cdot TN - FP \cdot FN}{\sqrt{(TP + FP)(TP + FN)(TN + FP)(TN + FN)}} \]

from sklearn.metrics import matthews_corrcoef



mcc = matthews_corrcoef(y_true, y_pred)

print(f"MCC: {mcc}")




Balanced Accuracy

Среднее значение полноты для каждого класса, что делает её полезной при несбалансированных данных.

\[ \text{Balanced Accuracy} = \frac{1}{2} \left( \frac{TP}{TP + FN} + \frac{TN}{TN + FP} \right) \]

from sklearn.metrics import balanced_accuracy_score



balanced_accuracy = balanced_accuracy_score(y_true, y_pred)

print(f"Balanced Accuracy: {balanced_accuracy}")




Ставь 👍 и забирай 📚 Базу знаний