Это инструменты для оценки качества бинарных классификаторов. Они помогают визуально и количественно оценить, насколько хорошо модель разделяет два класса.
Это график, показывающий соотношение между истинно положительными и ложноположительными срабатываниями классификатора при различных порогах классификации.
Доля правильно предсказанных положительных примеров из всех положительных примеров (также называется чувствительность или recall).
\text{TPR} = \frac{\text{TP}}{\text{TP} + \text{FN}}
Доля неправильно предсказанных положительных примеров из всех отрицательных примеров.
\text{FPR} = \frac{\text{FP}}{\text{FP} + \text{TN}}
Строится путем изменения порога классификации модели от 0 до 1 и вычисления TPR и FPR для каждого значения порога. График строится с FPR по оси X и TPR по оси Y.
Это площадь под ROC-кривой. Значение AUC варьируется от 0 до 1 и интерпретируется следующим образом:
Модель не лучше случайного угадывания.
Модель хуже случайного угадывания (что редко случается в практике).
Модель лучше случайного угадывания.
Идеальная модель.
Пример
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import roc_curve, roc_auc_score
# Пример данных
y_true = [0, 0, 1, 1] # Истинные значения
y_scores = [0.1, 0.4, 0.35, 0.8] # Предсказанные вероятности
# Вычисление ROC-кривой
fpr, tpr, thresholds = roc_curve(y_true, y_scores)
roc_auc = roc_auc_score(y_true, y_scores)
# Построение графика
plt.figure()
plt.plot(fpr, tpr, color='darkorange', lw=2, label=f'ROC-кривая (AUC = {roc_auc:.2f})')
plt.plot([0, 1], [0, 1], color='navy', lw=2, linestyle='--')
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.0])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC-кривая')
plt.legend(loc="lower right")
plt.show()
Ставь 👍 и забирай 📚 Базу знаний