ROC-AUC отзывов по согласованным парам

тема: Метрики классификации · уровень: продвинутый

Условие

Модель предсказывает вероятность того, что автор отзыва о мобильном приложении оставит положительную оценку. Для каждого отзыва известны истинная метка и оценка модели. Метка 1 означает положительный отзыв, метка 0 — отрицательный.

Качество ранжирования измеряется метрикой ROC-AUC. Рассматриваются все пары вида «положительный отзыв, отрицательный отзыв» среди отзывов с известной оценкой модели. Пусть W — число пар, в которых оценка положительного отзыва строго больше оценки отрицательного, T — число пар с равными оценками, P — число положительных отзывов с известной оценкой, а N — число отрицательных отзывов с известной оценкой. Тогда

ROC-AUC = (W + 0.5 · T) / (P · N).

Если оценка модели записана как NA, такой отзыв не участвует в подсчёте P, N, W и T. Если после исключения пропусков P = 0 или N = 0, следует вывести 0.000.

При равенстве оценок положительного и отрицательного отзывов соответствующая пара добавляет 0.5 к числителю метрики.

Формат ввода

В первой строке дано целое число n — количество отзывов.

В следующих n строках записаны два значения: label и score.

label — истинная метка отзыва, равная 0 или 1.

score — целая оценка модели либо строка NA, если оценка отсутствует.

Формат вывода

Выведите одно число — значение ROC-AUC.

Число необходимо округлить до трёх знаков после десятичной точки. При точном попадании между двумя вариантами округление выполняется в большую сторону.

Ограничения

Решить задачу с автопроверкой на Python →

Куда дальше