Крива компромісів

ROC показує не те, наскільки модель точна. Вона показує, який вибір у тебе є — і скільки коштує кожен із них.

Абревіатура ROC розшифровується як receiver operating characteristic — «робоча характеристика приймача». Назва звучить дивно для метрики машинного навчання, бо народилася вона не в машинному навчанні. Під час Другої світової радари почали бачити надто багато: літак, хмару, зграю птахів, електричний шум. Оператор мусив вирішувати, коли натискати тривогу.

Проблема була не в тому, щоб «правильно налаштувати радар», а в тому, що будь-яке налаштування — це компроміс. Обережний оператор пропускає літаки. Панікер підіймає тривогу на кожну хмару. Криву, що описувала здатність конкретного оператора балансувати між цими двома бідами, і назвали ROC. Сімдесят років потому ми використовуємо її абсолютно так само — тільки замість оператора в нас класифікатор.

ОсноваЧотири результати одного прогнозу

Візьмемо антифрод-модель, яка оцінює ризик кожного платежу числом від 0 до 1. Коли ми порівнюємо це число з порогом і ухвалюємо рішення, можливі рівно чотири результати:

скороченнящо сталосяу нашій задачі
TPпозитив, спійманий правильношахрайство заблоковано
FPнегатив, помилково позначений позитивомчесний платіж заблоковано
FNпозитив, пропущений моделлюшахрайство пройшло
TNнегатив, правильно пропущенийчесний платіж пройшов

Перші дві літери в цих скороченнях читаються так: T (true) означає «модель угадала», F (false) — «модель помилилась», а P і N кажуть, що саме вона відповіла — «позитив» чи «негатив». Тобто FN — це не «фальшивий негатив», а «модель сказала негатив, і це була помилка». Плутанина в цих двох літерах — найчастіша причина того, чому далі не сходиться жодна формула.

Слово «позитивний» тут не означає «хороший». Позитивний клас — це той, який ми шукаємо: шахрайство, хвороба, дефект. Його призначає людина, коли ставить задачу, і від цього призначення залежать усі метрики лекції.

Ключове спостереження: FP і FN коштують по-різному, і різниця залежить не від математики, а від задачі. У фільтрі спаму хибний позитив — це втрачений робочий лист, і він болючіший за пропущений спам. У скринінгу на рак — навпаки: краще зайвий раз перестрахуватися, ніж не помітити хворобу. Метрика, яка змішує ці помилки в одне число, приховує від тебе саме той вибір, який ти маєш зробити свідомо.

Дві осіTPR і FPR: дві незалежні частки

ROC будується на двох величинах, і головне в них — знаменники. Вони різні, і саме тому ці частки не заважають одна одній.

TPR = TP / (TP + FN)      FPR = FP / (FP + TN)

Тепер найважливіше в цьому розділі, і це не формула, а геометрія матриці. Розклади чотири числа у квадрат 2×2: рядки — правда, стовпці — відповідь моделі. Тоді знаменник TPR — це верхній рядок цілком, знаменник FPR — нижній рядок цілком. Обидва знаменники живуть усередині одного рядка, тобто всередині одного класу, і жоден із них не заглядає в сусідній рядок.

А от знаменник precision — лівий стовпець, і він рядки перетинає: у ньому зустрічаються і справжні позитиви, і хибні тривоги з іншого класу. Ця різниця в геометрії пояснює половину лекції наперед, тож на неї варто подивитись.

Де живе знаменник кожної метрики

Ті самі чотири числа. Змінюється лише те, що ми беремо за 100%.

чисельник—
знаменник—
значення—
що підсвічено—
Дві метрики з рядка, одна зі стовпця: TPR і FPR ділять на цілий рядок, тому кожна замкнена всередині свого класу й не знає, скільки в даних обʼєктів іншого. Precision ділить на стовпець, який рядки перетинає, — тому вона єдина з трьох залежить від того, скільки в популяції негативів.

Порахуємо руками на маленькому прикладі, щоб формула перестала бути записом. Нехай із 200 платежів шахрайських 40, а модель на обраному порозі підняла тривогу 50 разів, і серед цих 50 справжнім шахрайством виявилось 34.

крок 1 · чотири числа

TP = 34 (спіймали). FP = 50 − 34 = 16 (даремно заблокували чесні). FN = 40 − 34 = 6 (шахрайство пройшло). TN = 200 − 40 − 16 = 144 (чесні пройшли).

крок 2 · TPR — ділимо на рядок «справді шахрайство»
TPR = 34 / (34 + 6) = 34 / 40 = 0.85

У знаменнику всі 40 шахрайств, і жодного чесного платежу. Спіймали 85% шахрайства.

крок 3 · FPR — ділимо на рядок «справді чесний»
FPR = 16 / (16 + 144) = 16 / 160 = 0.10

У знаменнику всі 160 чесних платежів, і жодного шахрайства. Даремно зачепили 10% чесних.

крок 4 · precision — ділимо на стовпець «модель сказала так»
precision = 34 / (34 + 16) = 34 / 50 = 0.68

А тут у знаменнику 50 обʼєктів обох класів разом. Саме тому це число поїде, щойно зміниться склад популяції, — а два попередні не поїдуть.

Чому знаменники важливі. TPR рахується тільки по позитивах, FPR — тільки по негативах. Жодна з них не знає, скільки в даних тих і тих. Саме тому ROC не змінюється, коли міняється співвідношення класів, — властивість, до якої ми ще повернемось у розділі про дисбаланс.

ПорігЯк один повзунок породжує криву

Модель нічого не вирішує — вона видає скор. Рішення народжується в момент порівняння скора з порогом, і саме поріг є нашим важелем. Опустиш його до нуля — усе оголошується шахрайством, TPR = 1 і FPR = 1. Піднімеш до одиниці — модель мовчить, TPR = 0 і FPR = 0. Між цими крайнощами лежить неперервний спектр компромісів.

Кожне значення порога дає одну пару (FPR, TPR), тобто одну точку на площині. Проженемо поріг через усі можливі значення — точки складуться в криву. Це і є ROC. Посунь повзунок і подивись, як вертикальна лінія в гістограмах керує точкою на кривій.

Два набори прикладів і одна формула — і це навмисне. Далі в лекції ти побачиш різні значення AUC, і зводити їх докупи не треба: вони не про одну модель. Маленький набір — 24 платежі, з них 10 шахрайських і 14 чесних, — потрібен там, де криву будують руками, крок за кроком, і де всі пари «позитив × негатив» мають уміститись на екрані: їх 10 × 14 = 140. Великий набір на 200 обʼєктів (80 і 120) дає гладку криву, по якій видно форму, але 80 × 120 = 9 600 пар уже не намалюєш. А там, де треба плавно міняти частку позитивів, за картинкою стоїть не вибірка, а формула двох нормальних розподілів: інакше при 1 % позитивів у двохсот обʼєктах лишилося б двоє шахраїв, і крива стрибала б від випадковості, а не від суті. Дивись у кожній фігурі на співвідношення й напрямок, а не на третій знак після коми.

Поріг рухає точку по ROC

Ліворуч — розподіли скорів для двох класів. Праворуч — та сама модель у координатах FPR/TPR.

TPR (recall)—
FPR—
precision—
спіймано / хибних—
Дві крайні точки варто побачити самому: при порозі 0 точка сидить у правому верхньому куті (1, 1) — спіймали всіх, але заблокували все підряд. При порозі 1 вона в лівому нижньому (0, 0) — жодної хибної тривоги й жодного спійманого шахрая. Обидва режими однаково марні.

ПобудоваROC крок за кроком

Щоб крива перестала бути магією, побудуємо її вручну на маленькій вибірці з 24 платежів. Алгоритм простий і не потребує жодних формул:

  1. Відсортувати всі обʼєкти за скором, від найбільшого до найменшого.
  2. Почати з порога вище за максимальний скор — нічого не класифіковано як позитив, ми в точці (0, 0).
  3. Опускати поріг так, щоб щоразу «захоплювати» рівно один наступний обʼєкт.
  4. Перерахувати TPR і FPR, поставити точку, зʼєднати з попередньою.

Уся краса в тому, що кожен крок дає рівно один із двох рухів. Захопили справжній позитив — TPR зросла, FPR не змінилася: крок угору. Захопили негатив — навпаки: крок праворуч. Тому ROC на скінченній вибірці завжди сходинки, а не гладка крива.

Пройдімо цей алгоритм повністю на шести обʼєктах — три позитиви й три негативи, — щоб було видно кожен рух. Скори вже відсортовані за спаданням:

крокскоркласTPFPFPRTPRрух
0—поріг вище за всі000.000.00старт (0, 0)
10.90позитив100.000.33угору на 1/3
20.70негатив110.330.33праворуч на 1/3
30.60позитив210.330.67угору на 1/3
40.50негатив220.670.67праворуч на 1/3
50.40позитив320.671.00угору на 1/3
60.20негатив331.001.00праворуч, фініш

Шість обʼєктів — шість кроків, і крива обовʼязково закінчується в точці (1, 1): коли поріг опустився нижче за найменший скор, позитивом оголошено геть усе. Ця вибірка ще знадобиться нам у розділі 08, тому запамʼятай її форму: три сходинки вгору й три праворуч, як драбинка.

Складаємо криву по одному порогу

24 платежі, відсортовані за скором. Тисни кнопку й дивись, куди піде крива на кожному кроці.

крок0 / 24
поріг—
TPR0.00
FPR0.00
Розмір сходинки теж не випадковий: висота одного кроку вгору дорівнює 1/P (P — кількість позитивів), ширина кроку праворуч — 1/N. Тому на вибірці з 10 позитивів крива піднімається великими стрибками по 0.1, а на вибірці з тисячі виглядає гладкою.

ФормаІдеальна, випадкова, перевернута

Форма кривої одразу каже, з чим ми маємо справу. Орієнтирів усього три.

Лівий верхній кут — мрія. Крива, що йде вертикально вгору, а потім горизонтально праворуч, означає: існує поріг, за якого TPR = 1 і FPR = 0. Усі позитиви мають скор вищий за всі негативи, розподіли не перетинаються взагалі.

Діагональ — випадкове вгадування. На ній TPR = FPR за будь-якого порога: підвищуючи поріг, ти втрачаєш стільки ж справжніх позитивів, скільки прибираєш хибних тривог. Модель не несе жодної інформації про клас.

Нижче діагоналі — гірше за монетку. Це не «поганий класифікатор», це переплутані знаки: модель систематично дає негативам вищий скор. Найчастіше причина банальна — переплутані мітки або переплутані класи у коді. Виправляється миттєво: поміняй прогноз на протилежний, і крива віддзеркалиться над діагональ.

Чотири моделі на одній площині

Усі криві побудовані на однаковій кількості обʼєктів. Різниця лише в тому, наскільки розповзаються розподіли скорів.

AUC обраної—
AUC базової—
Звʼязок, який варто зафіксувати: що сильніше перетинаються два розподіли скорів, то ближче крива до діагоналі. ROC — це, по суті, міра роздільності двох розподілів, а не міра правильності окремих відповідей.

AUCПлоща під кривою

Крива зручна для аналізу, але коли треба порівняти двадцять моделей, потрібне число. Беруть найпростіше: площу під кривою — area under the curve, AUC (або AUROC, щоб не плутати з площею під PR-кривою).

Що таке «площа під кривою» і як її взагалі рахують. Уяви графік, намальований у квадраті зі стороною 1. Площа під кривою — це площа фігури, затиснутої між кривою та нижньою віссю. Оскільки весь квадрат має площу 1×1 = 1, ця площа завжди виходить числом від 0 до 1, і читати її можна як «яку частку квадрата крива накрила». Рахують її, розрізавши фігуру на вузькі смужки й додавши їхні площі. Для ROC це виходить особливо просто: крива складається з горизонтальних відрізків, тож смужки — звичайні прямокутники, і жодних інтегралів не потрібно.

Порахуємо площу під драбинкою з розділу 04 просто за клітинками. Кожен крок праворуч має ширину 1/3 і стоїть на певній висоті TPR, а прямокутник під ним має площу «ширина × висота»:

крок 1 · три прямокутники

Перший крок праворуч стався на висоті TPR = 1/3, другий — на висоті 2/3, третій — на висоті 1. Ширина в усіх однакова: 1/3.

S = ⅓ · ⅓  +  ⅓ · ⅔  +  ⅓ · 1
крок 2 · додаємо
S = 1/9 + 2/9 + 3/9 = 6/9 ≈ 0.667

AUC цієї крихітної моделі — 0.667. Число здається довільним; у розділі 08 зʼясується, що воно означає дуже конкретну річ, і ми отримаємо його вдруге, зовсім іншим способом, навіть не малюючи кривої.

AUCщо означає
1.00ідеальний поділ; на реальних даних — привід шукати витік ознаки
0.80–0.95робочий діапазон більшості практичних моделей
0.50рівно випадкове вгадування
< 0.50знаки переплутані; інвертуй прогноз

Три рядки цієї таблиці варто розібрати окремо, бо їх постійно читають неправильно.

AUC = 0.5 — це не «модель помиляється в половині випадків». Це означає, що крива лягла на діагональ: за будь-якого порога TPR дорівнює FPR. Тобто модель піднімає тривогу на шахрайстві рівно так само охоче, як на чесному платежі, — її скор не містить жодної інформації про клас. Accuracy при цьому може бути якою завгодно високою: досить, щоб один клас був рідкісним. Половина тут не про відповіді, а про непоінформованість.

AUC < 0.5 — це не «дуже погана модель». Це модель, яка знає відповідь, але вимовляє її навпаки: систематично дає негативам вищий скор, ніж позитивам. Інформація в ній є, просто з протилежним знаком. Якщо взяти її прогноз і відняти від одиниці (або поміняти класи місцями), порядок обʼєктів перевернеться, і AUC стане рівно 1 − AUC: із 0.23 вийде 0.77. Тому AUC 0.23 — це насправді непогана модель із переплутаними мітками, а по-справжньому безнадійне значення — саме 0.5, бо його не рятує жодна інверсія.

AUC = 1.00 підозріла. Ідеальний поділ означає, що існує поріг, який не помиляється жодного разу на жодному обʼєкті. На реальних даних це майже завжди означає не геніальну модель, а витік: серед ознак опинилось щось, що вже містить відповідь. Найтиповіший випадок — ознака, яку в житті обчислюють після події, яку ми нібито передбачаємо.

Головна перевага AUC у тому, що вона не залежить від вибору порога. Вона міряє якість самого впорядкування обʼєктів, а не якість конкретного рішення. Це робить її правильним інструментом для питання «яка модель краща» — і геть непридатною для питання «який поріг узяти».

СенсЙмовірнісна інтерпретація AUC

«Площа під кривою» звучить як бухгалтерія. Але в AUC є друге, набагато змістовніше означення, і воно доводиться строго:

AUC — це ймовірність того, що випадково взятий позитивний обʼєкт отримає від моделі вищий скор, ніж випадково взятий негативний.

Тобто AUC = 0.89 означає буквально: візьми навмання одне шахрайство і один чесний платіж — у 89 випадках зі ста модель поставить шахрайству вищий бал. Ця інтерпретація пояснює всі граничні значення одразу. AUC = 0.5 — модель угадує порядок як монетка. AUC = 0 — вона плутає порядок завжди. AUC = 1 — не помиляється жодного разу.

А ще з неї випливає, що AUC можна оцінити без жодних кривих: просто кидати випадкові пари й рахувати частку правильно впорядкованих. Спробуй — і подивись, як оцінка збігається до точного значення.

AUC методом кидання пар

Кожен кидок бере один випадковий позитив і один випадковий негатив і питає: чий скор вищий?

кинуто пар0
вірний порядок0
оцінка—
точний AUC—
Це не аналогія, а означення: частка правильно впорядкованих пар дорівнює площі під ROC. Кинь двадцять пар — оцінка стрибає; кинь дві тисячі — вона сяде на точне значення, бо це те саме число, здобуте перебором замість вимірювання площі.

ДоказЧому площа дорівнює ймовірності

Два означення AUC — «площа під кривою» і «ймовірність правильного впорядкування пари» — звучать як речі з різних світів. Одне про геометрію, друге про кидання жеребу. Насправді це одне й те саме число, і побачити чому можна за чотири рядки, без жодного інтеграла. Ця рівність — не цікавинка: саме вона пояснює, чому AUC не залежить ні від порога, ні від частки класів.

Домовимось про позначення: P — скільки в даних справжніх позитивів, N — скільки справжніх негативів. Тоді різних пар «один позитив і один негатив» рівно P · N штук.

крок 1 · з чого складається крива

Ми будували ROC, опускаючи поріг і захоплюючи обʼєкти по одному. Кожен негатив давав горизонтальний відрізок завширшки 1/N. Кожен позитив — вертикальний відрізок, який ширини не має і площі не додає. Отже вся площа під кривою зібрана з прямокутників, і кожен прямокутник належить рівно одному негативу.

крок 2 · на якій висоті стоїть прямокутник

Коли черга дійшла до конкретного негатива, крива вже піднялась на висоту TPR = (кількість позитивів, захоплених раніше) / P. А захоплені раніше — це рівно ті позитиви, чий скор вищий за скор цього негатива. Позначмо їхню кількість a. Тоді площа прямокутника цього негатива:

S = ширина × висота = (1 / N) × (a / P) = a / (P · N)
крок 3 · складаємо все

Додаємо прямокутники всіх негативів. Спільний множник 1/(P·N) виноситься:

AUC = (a1 + a2 + … + aN) / (P · N)

У чисельнику ми, самі того не помітивши, порахували пари: для кожного негатива додали кількість позитивів, які стоять вище за нього. Сума по всіх негативах — це кількість пар, у яких позитив отримав вищий бал.

крок 4 · висновок
AUC = (правильно впорядкованих пар) / (усіх пар P · N)

А «частка пар» і є ймовірністю: візьми навмання один позитив і один негатив — з такою ймовірністю позитив отримає вищий скор. Дві інтерпретації зійшлися.

Перевіримо на драбинці з шести обʼєктів, у якої площа вийшла 6/9. Позитиви мали скори 0.90 · 0.60 · 0.40, негативи — 0.70 · 0.50 · 0.20. Пар усього 3 × 3 = 9. Рахуємо, у скількох позитив вищий: 0.90 б’є всі три негативи (3 пари), 0.60 б’є 0.50 і 0.20 (2 пари, бо 0.70 його обійшов), 0.40 б’є лише 0.20 (1 пара). Разом 3 + 2 + 1 = 6 із 9 — те саме 0.667, що ми отримали, додаючи прямокутники. Жодної кривої для цього малювати не довелось.

Звідки в цієї величини друге імʼя. Частку правильно впорядкованих пар придумали задовго до машинного навчання — це критерій Манна–Вітні, статистичний тест, який відповідає на питання «чи справді значення в одній групі загалом більші, ніж у другій». ROC-AUC — та сама величина, тільки названа мовою класифікації. Практичний наслідок один: AUC перевіряє порядок, а не самі числа, і тому їй байдуже, у якій шкалі модель видає скор.

З цієї рівності одразу випливають дві властивості, які інакше довелося б заучувати. По-перше, AUC не залежить від порога — у формулі порога просто немає, є лише порівняння скорів між собою. По-друге, AUC не залежить від того, скільки в даних позитивів і негативів: кожна пара розглядається окремо, а їхня кількість стоїть у знаменнику й скорочується. До другого наслідку ми повернемось у розділі 11 — там саме він виявиться і сильною стороною ROC, і її сліпотою.

Усі пари одразу: кожна клітинка — одне порівняння

Рядки — 10 позитивів, стовпці — 14 негативів, разом 140 пар. Бірюзова клітинка означає «позитив вищий».

правильних пар—
усіх пар—
частка—
площа під ROC—
Два останні табло мусять збігатися — і збігаються: частка бірюзових клітинок дорівнює площі під ROC до останнього знака. Підсвіти окремий рядок — побачиш внесок одного позитива: скільки негативів він обійшов, стільки клітинок у його рядку бірюзові. Виведення вище складало бірюзові клітинки по стовпцях, а тут їх зручніше рахувати рядками — сума та сама, бо клітинки ті самі.

ДисбалансЧому accuracy обманює

Тепер найпрактичніший розділ. Уяви, що шахрайських платежів лише 1%. Класифікатор «усе чесне», який не робить узагалі нічого, дає accuracy 99%. Будь-яка справжня модель, що ловить частину шахрайства ціною хибних тривог, майже напевно матиме accuracy нижчу. За цією метрикою робити нічого — вигідніше.

Причина в тому, що accuracy усереднює по всій вибірці, а вибірку заповнює той клас, який трапляється частіше. Метрика фактично вимірює рідкість класу. TPR і FPR такої вади не мають: у кожної свій знаменник, тому частка класів на них не впливає взагалі. Покрути повзунок і переконайся.

Accuracy проти AUC при дисбалансі

Розподіли скорів не змінюються — змінюється тільки частка позитивного класу в популяції.

accuracy @0.5—
«усе чесне»—
найкраща accuracy—
AUC—
Що показує графік: бірюзова крива — accuracy моделі як функція порога, рожевий пунктир — рівень тривіального «усе чесне». Щойно пунктир піднімається над кривою, accuracy офіційно перестає бути осмисленою метрикою для цієї задачі.

ШтукиСкільки це коштує в штуках

Незалежність ROC від частки класів — і сила, і слабкість. Сила: криву можна порівнювати між вибірками з різним складом, і вона не змінить оцінки моделі через те, що змінився склад потоку. Слабкість: вона мовчить про те, скільки сміття доведеться розгрібати живій людині.

Причина проста й арифметична: FPR ділиться на кількість негативів, а негативів при дисбалансі величезна маса. Частка від великого числа — велике число, навіть якщо сама частка мала. Порахуймо це руками, бо саме тут ховається найдорожча помилка практика.

Візьмемо одну модель, зафіксуємо один поріг і не будемо його чіпати: на ньому TPR = 0.85 і FPR = 0.05. Обидві величини належать моделі, а не потоку, тож при зміні складу популяції вони не рухаються. Пропустимо через модель 10 000 платежів.

випадок 1 · шахрайства половина

5 000 шахрайських, 5 000 чесних.

TP = 0.85 × 5 000 = 4 250  ·  FP = 0.05 × 5 000 = 250

На кожен спійманий платіж припадає 250 / 4 250 ≈ 0.06 хибної тривоги — тобто одна хибна тривога на сімнадцять правильних блокувань. Precision = 4 250 / 4 500 ≈ 0.94.

випадок 2 · шахрайства 1%

100 шахрайських, 9 900 чесних. Модель та сама, поріг той самий.

TP = 0.85 × 100 = 85  ·  FP = 0.05 × 9 900 = 495

Тепер на кожен спійманий платіж припадає 495 / 85 ≈ 5.8 хибної тривоги. Precision = 85 / 580 ≈ 0.15: пʼять із шести піднятих тривог — помилкові.

що при цьому сказала ROC

Нічого. TPR = 0.85 і FPR = 0.05 в обох випадках, точка на кривій не зрушила, AUC не змінилась. А обсяг ручної роботи виріс майже в сто разів: із 0.06 до 5.8 хибної тривоги на один результат.

Ось чому «FPR лише 5%» — фраза, яка нічого не варта без частки позитивів поруч. П'ять відсотків від рідкісного класу — дрібниця; пʼять відсотків від маси негативів — черга з аналітиків. Наступний інтерактив показує цей перехід одним рухом.

Та сама точка ROC, зовсім інша купа роботи

TPR і FPR закріплені на 0.85 і 0.05. Змінюється лише склад потоку з 10 000 платежів.

спіймано (TP)—
хибних тривог (FP)—
FP на один TP—
precision—
Ліва пара стовпчиків не рухається, права росте: TPR і FPR закріплені, тому ROC-точка стоїть на місці за будь-якого положення повзунка. А кількість хибних тривог на один спійманий платіж повзе від 0.06 при половині позитивів до майже 12 при 0.5%. Метрика не змінилась — змінилося все інше.

PRКоли PR-крива краща за ROC

Отже, потрібна метрика, яка цю різницю бачить. І вона є: precision = TP / (TP + FP). Пригадай геометрію з розділу 02: знаменник precision — це стовпець, який перетинає обидва рядки матриці. Саме тому precision реагує на склад популяції, а TPR і FPR — ні.

Якщо тепер побудувати криву не в осях FPR–TPR, а в осях recall–precision, пробігши тим самим порогом від краю до краю, вийде PR-крива. Площу під нею називають average precision (AP) — за тією самою логікою, що й AUC: одне число замість цілої кривої.

Дві криві поводяться при дисбалансі геть по-різному, і це не теорія, а замір. Ми взяли одну модель, не змінюючи в ній нічого, і прогнали її на двох наборах: у першому позитивів половина, у другому — один відсоток.

частка позитивівAUC (ROC)AP (площа під PR)базовий рівень PR
50%0.9400.9400.50
1%0.9420.3230.01

AUC зрушила на дві тисячні — це звичайний шум вибірки, а не сигнал. AP впала майже втричі. Обидва числа правильні, і жодне з них не бреше: вони просто відповідають на різні питання. AUC питає «чи вміє модель ставити шахрайство вище за чесні платежі» — і вміє, однаково добре в обох наборах. AP питає «якщо модель підняла тривогу, наскільки їй можна вірити» — і відповідь тут різко залежить від того, скільки в потоці чесних платежів.

Читати AP окремо від частки позитивів так само безглуздо, як читати FPR без неї. Базовий рівень PR-кривої дорівнює частці позитивних: класифікатор, який роздає скори навмання, дасть AP приблизно рівний цій частці. Тому AP = 0.323 при 1% позитивних — це у 32 рази краще за випадковість, хоч число й виглядає скромним поруч із 0.940. А базовий рівень ROC — завжди 0.5, хоч би що коїлося з класами, і саме через це AUC не вміє показати різницю між двома рядками таблиці.

ROC не ворухнеться, PR обвалиться

Ліворуч ROC, праворуч PR. Модель та сама, змінюється лише частка позитивів.

AUC (ROC)—
AP (площа PR)—
база PR—
precision @recall 0.8—
Ключова відмінність: базовий рівень ROC — завжди 0.5, хоч би що коїлося з класами. Базовий рівень PR дорівнює частці позитивів і повзе вниз разом із нею. Тому AP = 0.37 при 5% позитивів — це в сім разів краще за випадковість, хоч і виглядає жалюгідно.
Просте правило вибору. Класи приблизно збалансовані або обидві помилки однаково важливі — бери ROC-AUC. Позитивний клас рідкісний і тебе цікавить саме він (шахрайство, рідкісна хвороба, релевантні документи) — бери PR і average precision. У сумнівних випадках дивись обидві: вони відповідають на різні питання.

МежіПорівняння моделей і чого AUC не бачить

AUC зручна для відбору моделей, але має три сліпі зони, про які варто знати.

Перша: вона нічого не каже про калібрування. Калібрування — це властивість скора бути справжньою ймовірністю: якщо модель поставила сотні платежів оцінку 0.7, то приблизно 70 із кожної сотні мусять виявитись шахрайськими. AUC цього не перевіряє взагалі, бо, як ми довели в розділі 08, вона дивиться лише на порядок скорів. Візьми будь-яку модель і піднеси всі її ймовірності до квадрата: 0.9 стане 0.81, 0.5 стане 0.25, усі числа зменшаться, але жодна пара не помінялась місцями — більше число, піднесене до квадрата, лишається більшим. Порядок той самий, отже й пари впорядковані так само, отже AUC не зміниться ані на тисячну — хоча ймовірності стали відверто брехливими.

Це не оцінка на око, а замір: на вибірці з 2 000 обʼєктів roc_auc_score дає 0.876720 для сирих скорів і рівно те саме 0.876720 після піднесення до квадрата, після добування кореня й після переходу до логіта. Усі чотири перетворення монотонні — тобто зберігають порядок, — і AUC їх просто не помічає.

Числа міняються, порядок ні — AUC не ворушиться

Ті самі обʼєкти, чотири різні шкали скора. Угорі — де стоять обʼєкти, унизу — крива.

AUC—
середній скор—
Чотири різні набори чисел — одна крива: монотонне перетворення тягне точки по осі, але не переставляє їх, а AUC рахує саме перестановки. Тому AUC — правильна відповідь на питання «чи вміє модель ранжувати» і зовсім не відповідь на питання «чи можна вірити числу 0.7».

Якщо тобі потрібне число, яке справді означає «17% ризику», AUC тут не помічник — потрібні калібрувальні криві й Brier score (середній квадрат різниці між передбаченою ймовірністю та фактом 0/1). Це тема 21. Калібрування і вибір порога.

Друга: вона вважає всі помилки рівноцінними. Площа під кривою підсумовує всі пороги з однаковою вагою, зокрема й ті, які ти ніколи не використаєш. Модель із AUC 0.88, що добре працює в зоні високої точності, практично краща за модель із AUC 0.90, чия перевага сидить у зоні FPR понад 0.5.

Третя: різниця в AUC не завжди значуща. На вибірці з 200 обʼєктів різниця 0.88 проти 0.90 цілком може бути шумом. Тут допомагає та сама рівність із розділу 08: AUC — це частка серед P × N пар, а частка, порахована на скінченній вибірці, має похибку, і що менше пар, то вона більша. При 20 позитивах і 180 негативах пар усього 3 600, і різниця в другому знаку легко тоне в цьому розкиді. Порівнюючи моделі, дивись на довірчі інтервали або принаймні на розкид AUC по фолдах крос-валідації — це тема 18. Крос-валідація.

Практичний рецепт. Обери модель за AUC чи AP — це порівняння алгоритмів. Потім, уже з обраною моделлю, підбери поріг за бізнес-вимогою й покажи матрицю плутанини на цьому порозі — це порівняння рішень. Два кроки, дві різні метрики, і плутати їх не можна.

ПідсумокЩо варто запамʼятати

І наскрізна думка обох сусідніх лекцій: модель дає впорядкування, рішення ухвалює людина. ROC — це просто чесний перелік того, між чим саме доводиться обирати.