Машинне навчання · Блок 1 · Тема 06

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Інтерактив 1 · Поріг рухає точку по ROC

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

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

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

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

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

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

Інтерактив 2 · Складаємо криву по одному порогу

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

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

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

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

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

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

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

Інтерактив 3 · Чотири моделі на одній площині

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

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

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

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

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

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

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

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

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

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

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

Інтерактив 4 · AUC методом кидання пар

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

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

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

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

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

Інтерактив 5 · Accuracy проти AUC при дисбалансі

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

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

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

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

Річ у тім, що FPR ділиться на величезну кількість негативів. При 1% позитивів FPR = 0.05 виглядає скромно — але це 5% від 99% усіх платежів, тобто хибних тривог у пʼять разів більше, ніж усіх шахрайств разом. ROC цього не покаже, бо в її знаменниках немає співвідношення класів.

А precision має: TP / (TP + FP) — тут в одному знаменнику зустрічаються обидва класи. Тому PR-крива (precision проти recall) чутлива до дисбалансу саме там, де ROC сліпа.

Інтерактив 6 · 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. У сумнівних випадках дивись обидві: вони відповідають на різні питання.

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

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

Перша: вона нічого не каже про калібрування. AUC залежить лише від порядку скорів. Візьми будь-яку модель і піднеси всі її ймовірності до квадрата — порядок збережеться, AUC не зміниться ні на тисячну, хоча ймовірності стануть відверто брехливими. Якщо тобі потрібне число, яке справді означає «17% ризику», AUC тут не помічник — потрібні калібрувальні криві й Brier score.

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

Третя: різниця в AUC не завжди значуща. На вибірці з 200 обʼєктів різниця 0.88 проти 0.90 цілком може бути шумом. Порівнюючи моделі, дивись на довірчі інтервали або принаймні на розкид AUC по фолдах крос-валідації.

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

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

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

Далі в практиці. У practice.ipynb ти реалізуєш побудову ROC сортуванням без жодних бібліотек, порахуєш AUC двома способами (трапеціями та через частку правильно впорядкованих пар), звіриш зі sklearn.metrics, побудуєш PR-криву на штучно розбалансованій вибірці й підбереш поріг під задане обмеження на precision.

Далі в темі

Теорію прочитано. Тепер закріпи її на практиці.