ROC-AUC после дублирования классов

MediumML coding
05:00
Лучше работает на десктопе
ML CodingROC-AUCMetricsRanking
Реальный собес00:00:03-00:02:02БЕЛЫЕ САДЫ 29.m4aСтраница собеса

Есть бинарные метки и score классификатора.

Каждый positive объект дублируется positive_copies раз, каждый negative объект дублируется negative_copies раз. Score у копий такой же, как у исходного объекта.

Нужно вернуть ROC-AUC на выборке после такого дублирования, не материализуя все копии.

Считайте ROC-AUC как долю positive-negative пар, где score positive выше score negative. Tie дает 0.5.

Сигнатура

def roc_auc_after_duplication(
    y_true: list[int],
    scores: list[float],
    positive_copies: int,
    negative_copies: int,
) -> float:

Примеры

Пример 1

Вход:
y_true = [1,0]
scores = [0.9,0.1]
positive_copies = 7
negative_copies = 4
Выход:1

Пример 2

Вход:
y_true = [1,0,1,0]
scores = [0.2,0.1,0.4,0.8]
positive_copies = 7
negative_copies = 4
Выход:0.5

Пример 3

Вход:
y_true = [1,0,1,0]
scores = [0.5,0.5,0.2,0.1]
positive_copies = 3
negative_copies = 10
Выход:0.625
Консоль
Нажмите Run или Ctrl+Enter для запуска