Чему будет равен PR AUC при случайном угадывании?

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

Ответ

Значение PR AUC (Area Under the Precision-Recall Curve) для классификатора, который угадывает случайным образом, равно доле положительных объектов в выборке (prevalence).

Объяснение: Precision (точность) для случайного классификатора при любом пороге в среднем будет равна этой доле. Например, если вы случайно помечаете 10% объектов как положительные, то из них в среднем и будет 10% истинно положительных (если положительных в данных 10%). Таким образом, кривая Precision-Recall для случайного угадывания будет представлять собой примерно горизонтальную линию на уровне y = prevalence. Площадь под такой линией (PR AUC) и будет равна этой доле.

Практическая демонстрация:

import numpy as np
from sklearn.metrics import precision_recall_curve, auc

# Создаем несбалансированный датасет: 20% положительных меток
n_samples = 10000
prevalence = 0.2
y_true = np.random.binomial(1, prevalence, n_samples)
# Случайные предсказания (угадывание)
y_score_random = np.random.rand(n_samples)

precision, recall, _ = precision_recall_curve(y_true, y_score_random)
pr_auc_random = auc(recall, precision)

print(f"Доля положительных классов (prevalence): {prevalence:.3f}")
print(f"PR AUC для случайного угадывания: {pr_auc_random:.3f}")
# Результаты будут близки: ~0.2

Это важное свойство: в отличие от ROC-AUC, где случайный классификатор всегда дает 0.5, базовым уровнем для PR AUC является prevalence. Поэтому PR AUC особенно полезна для оценки моделей на сильно несбалансированных данных.