Understanding ROC Curve: A Comprehensive Guide
ROC-кривая (Receiver Operating Characteristic curve) - это графическое представление производительности модели машинного обучения, которое позволяет оценить ее способность различать два класса.
В основе ROC-кривой лежит анализ True Positive Rate (TPR) и False Positive Rate (FPR) при различных пороговых значениях классификации. TPR измеряет долю правильно классифицированных положительных примеров относительно всех положительных примеров в тестовой выборке, а FPR - долю неправильно классифицированных относительно всех отрицательных примеров.
Пример кода для построения ROC-кривой на языке Python с использованием библиотеки scikit-learn:
python
from sklearn.metrics import roc_curve, auc
import matplotlib.pyplot as plt
# Предсказанные значения модели
y_pred = [0.2, 0.5, 0.7, 0.8, 0.9, 0.1, 0.3, 0.6]
# Реальные значения классов
y_true = [0, 1, 1, 0, 1, 0, 0, 1]
# Вычисление TPR и FPR
fpr, tpr, thresholds = roc_curve(y_true, y_pred)
# Вычисление площади под кривой (AUC)
roc_auc = auc(fpr, tpr)
# Построение ROC-кривой
plt.plot(fpr, tpr, label='ROC curve (area = %0.2f)' % roc_auc)
plt.plot([0, 1], [0, 1], 'k--') # Диагональная линия
plt.xlim([0.0, 1.0])
plt.ylim([0.0, 1.05])
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('Receiver Operating Characteristic')
plt.legend(loc="lower right")
plt.show()
В данном примере у нас есть 8 примеров с предсказанными вероятностями классов (0.2, 0.5, 0.7, 0.8, 0.9, 0.1, 0.3, 0.6) и реальными значениями классов (0, 1, 1, 0, 1, 0, 0, 1). С использованием функции `roc_curve` из библиотеки `scikit-learn`, мы получаем значения FPR и TPR для различных пороговых значений классификации. Затем мы вычисляем площадь под кривой с помощью функции `auc` и строим ROC-кривую с помощью функций из библиотеки `matplotlib`.
Такая ROC-кривая может помочь визуально оценить качество модели в контексте ее способности правильно классифицировать положительные и отрицательные примеры. Чем ближе кривая к верхнему левому углу, тем лучше модель.