Ответ
ROC-AUC константной модели будет равна 0.5. Это значение соответствует качеству случайного угадывания.
Объяснение: Константная модель (например, всегда предсказывающая вероятность 0.5 или всегда возвращающая класс 1) не имеет дискриминативной способности. Она не может разделить положительные и отрицательные примеры. Её ROC-кривая представляет собой прямую диагональ из точки (0,0) в точку (1,1), где TPR = FPR для любого порога. Площадь под такой диагональю (AUC) равна 0.5.
Практическая демонстрация:
from sklearn.metrics import roc_auc_score, roc_curve
import matplotlib.pyplot as plt
# Искусственные данные
y_true = [0, 1, 0, 1, 0, 1, 0, 1]
# Константные предсказания (модель "ничего не знает")
y_pred_proba_constant = [0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5, 0.5]
# Вычисление ROC-AUC
auc_score = roc_auc_score(y_true, y_pred_proba_constant)
print(f"ROC-AUC для константной модели: {auc_score}") # Выведет 0.5
# Построение ROC-кривой для наглядности
fpr, tpr, _ = roc_curve(y_true, y_pred_proba_constant)
plt.plot(fpr, tpr, label=f'Constant Model (AUC = {auc_score:.2f})')
plt.plot([0, 1], [0, 1], 'k--', label='Random Guess (AUC = 0.5)')
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.title('ROC Curve for a Constant Model')
plt.legend()
plt.show()
Важный нюанс: Если константная модель всегда предсказывает конкретный класс (например, всегда «1»), а не вероятность, то для построения ROC-кривой ей можно сопоставить только одну точку (TPR, FPR), соответствующую порогу, который отделяет этот класс от другого. Технически, roc_auc_score в таком случае также вернет 0.5, так как кривая будет состоять из трех точек: (0,0), (TPR, FPR) и (1,1), образуя два треугольника, сумма площадей которых равна 0.5.