Что такое формула ROC-кривой?

«Что такое формула ROC-кривой?» — вопрос из категории Метрики и функции потерь, который задают на 26% собеседований Data Scientist / ML Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

ROC-кривая (Receiver Operating Characteristic) строится на основе двух метрик, которые вычисляются для различных пороговых значений вероятности, выдаваемых классификатором.

Ключевые формулы:

  • True Positive Rate (TPR), она же Recall (Полнота): TPR = TP / (TP + FN)
    • Показывает, какую долю реальных положительных объектов модель правильно идентифицировала.
  • False Positive Rate (FPR): FPR = FP / (FP + TN)
    • Показывает, какую долю реальных отрицательных объектов модель ошибочно классифицировала как положительные.

Кривая представляет собой график TPR (по оси Y) от FPR (по оси X). Идеальная модель проходит через точку (0,1), где FPR=0, а TPR=1.

Практический пример построения на Python:

from sklearn.metrics import roc_curve
import matplotlib.pyplot as plt

# y_true - истинные метки, y_score - предсказанные вероятности положительного класса
fpr, tpr, thresholds = roc_curve(y_true, y_score)

plt.figure(figsize=(8, 6))
plt.plot(fpr, tpr, label='Our Model (AUC = %0.3f)' % auc(fpr, tpr))
plt.plot([0, 1], [0, 1], 'k--', label='Random Classifier')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve')
plt.legend()
plt.grid(True)
plt.show()