Уяви систему, яка автоматично сортує заявки: одні пропускає далі, інші відхиляє. Її навчили на архіві минулих рішень, вона показує 82% точності — і здається, що робота закінчена. Але точність — це одне число на всіх, і всередині нього може ховатися стійка нерівномірність: одним групам модель відмовляє помилково частіше, ніж іншим.
Ця лекція — про те, як таку нерівномірність виміряти: через частоти помилок, порахованих окремо по групах. Основний інструмент — Equality of Odds, рівність шансів. Ми розберемо означення символ за символом і побачимо, де воно конфліктує з іншими розумними означеннями справедливості. Конфліктує — і це не недогляд, а математична необхідність.
ДжерелоЗвідки береться упередженість
Модель нічого не вигадує: вона знаходить у даних закономірності й відтворює їх на нових прикладах. Тому питання «чому модель упереджена» зводиться до питання «що було в даних». Джерел зазвичай три.
Перше — історія. Мітки беруть із минулих рішень: кому видали кредит, кого запросили на співбесіду. Якщо рішення приймалися нерівномірно, ця нерівномірність записана в даних як звичайна закономірність. Модель не відрізняє «так було справедливо» від «так було» — вона вчиться передбачати те, що бачила.
Друге — вибіркове зміщення. Результат ми знаємо тільки для тих, кого свого часу прийняли. Якщо одну групу відхиляли частіше, даних про неї менше, і вони описують лише її «верхній зріз» — модель для цієї групи працюватиме гірше.
Третє — проксі-мітка. Потрібної величини в даних немає, тож її замінюють: замість «наскільки добре людина працюватиме» беруть «яку оцінку поставив керівник». Замінник корелює з ціллю, але не збігається з нею — і його викривлення модель успадкує повністю.
ІлюзіяПастка «модель не бачить групи»
Найперша ідея, яка спадає на думку: просто не давати моделі ознаку групи. Немає стовпця — немає й дискримінації. Цей підхід має назву fairness through unawareness і майже ніколи не працює.
Причина проста: інші ознаки корелюють з групою. Поштовий індекс, назва школи, історія покупок — усе це може нести інформацію про групу. Така ознака називається проксі. Прибравши явний стовпець, ми не прибрали інформацію — лише позбавили себе можливості її виміряти.
Нижче — найпростіша демонстрація. Є «нейтральна» числова ознака Z, у якій
немає жодного слова про групу. Повзунок задає силу звʼязку між Z і групою, а
простий класифікатор — один поріг на Z — намагається групу вгадати.
Проксі-ознака відновлює групу
Розподіли «нейтральної» ознаки Z для двох груп. Пунктир — найкращий поріг, який відновлює групу.
Механізм тут прозорий. Що сильніший звʼязок, то далі розʼїжджаються два розподіли — і
то легше одна-єдина риска на осі Z відділяє групу A від групи B. При
ρ = 0 розподіли лежать один на одному, і найкраща риска дає 0.53, тобто
практично монетку. При ρ = 0.72 та сама одна риска вгадує групу з точністю
0.86, а при ρ = 0.90 — з точністю 0.98. Стовпця «група» в даних немає
взагалі, а групу видно.
Причому це найслабший можливий супротивник: один поріг на одній ознаці. Справжня модель має десятки ознак і складає з них те саме знання ще точніше — тому «не подавати групу» не рятує, а лише ховає.
Звідси парадоксальний на перший погляд висновок: щоб контролювати нерівномірність, ознаку групи треба знати — принаймні на етапі перевірки. Не щоб подавати її в модель, а щоб рахувати метрики окремо по групах. Ознака, якої немає в таблиці, не зникає з даних; вона лише зникає з-під контролю.
ІнструментTPR і FPR: на чому все тримається
Далі знадобиться лише один інструмент — матриця плутанини, порахована окремо для кожної
групи. Є справжня мітка Y (1 — «результат мав би бути позитивним») і рішення
моделі Ŷ. Чотири поєднання дають чотири клітинки:
| клітинка | Y | Ŷ | як це виглядає в житті |
|---|---|---|---|
| TP | 1 | 1 | правильно прийняли |
| FN | 1 | 0 | помилково відхилили |
| FP | 0 | 1 | помилково прийняли |
| TN | 0 | 0 | правильно відхилили |
Абсолютні числа між групами порівнювати не можна: більша група дасть більше помилок просто тому, що вона більша. Тому беруть частки — вони не залежать від масштабу:
TPR (true positive rate, він же чутливість) — це частка прийнятих серед тих, хто справді мав отримати позитивне рішення. FPR (false positive rate) — частка прийнятих серед тих, хто не мав. Ключова деталь: обидві величини рахуються всередині свого справжнього класу, тому не залежать від того, скільки в групі тих і тих.
Порахуймо руками на маленькій групі зі ста людей. Нехай сорок із них мають
Y = 1, шістдесят — Y = 0. Модель прийняла 32 із перших сорока й
12 із других шістдесяти. Тоді TPR = 32 / 40 = 0.80, а FPR = 12 / 60 = 0.20 — кожен дріб
ділиться на «свій» рядок, а не на всю сотню.
Звідки беруться TPR і FPR
Сто людей, розкладених по чотирьох клітинках. Кожна частка ділиться лише на свій рядок справжньої мітки.
Останні два числа під схемою знадобляться пізніше. Точність — (32 + 48) / 100 = 0.80 — одне число на всіх. PPV — 32 / (32 + 12) = 0.73 — частка правильних серед тих, кому сказали «так». Це різні питання: точність питає «як часто модель права», PPV — «наскільки можна вірити її „так“».
Майже всі класифікатори видають не «так/ні», а число — оцінку ймовірності s.
Рішення зʼявляється лише тоді, коли обрано поріг t: приймаємо,
якщо s ≥ t. Поріг — не частина навченої моделі, а окреме рішення людини.
СпостереженняОдин поріг на всіх
Ось синтетичний приклад, з яким працюватимемо далі: дві групи й одна модель, що видає
скор для кожної людини. Чотири ряди на картинці — чотири «мішки» точок: у групі A окремо
ті, хто має Y=1, і ті, хто має Y=0, і те саме для групи B.
Бірюзові точки — прийняті при поточному порозі, сірі — відхилені.
Частка бірюзових у ряді «Y = 1» — це і є TPR цієї групи, у ряді «Y = 0» — FPR. Тягни єдиний спільний поріг і дивись на різниці.
Спільний поріг для обох груп
Кожна крапка — одна людина, розташована за скором моделі. Поріг однаковий для всіх.
Порухай повзунок — і побачиш, що одна з різниць іноді проходить через нуль, але друга в
цю мить залишається великою. При t = 0.15 розрив TPR рівно нульовий, а розрив
FPR у ту саму мить дорівнює 0.22. Найменше, до чого спільний поріг узагалі доводить
більшу з двох різниць, — 0.09, і то при t = 0.41. Обидві разом
сходяться до нуля лише на краях шкали, де модель уже нікого ні від кого не відрізняє.
ОзначенняЩо саме вимагає Equality of Odds
Тепер означення читається майже без зусиль. Позначимо через A належність до
групи, через Y — справжню мітку, через Ŷ — рішення моделі.
Критерій Equality of Odds вимагає:
P(Ŷ = 1 | …) — ймовірність, що модель ухвалить позитивне рішення. Але не
для всіх підряд, а за двох умов одразу.
Y = y: беремо лише людей із заданим справжнім результатом. Це принципово —
ми не вимагаємо однакової частки від усієї групи, а порівнюємо людей, які
однакові за суттю справи.
A = a проти A = b: серед цих однакових за міткою людей
порівнюємо дві групи й вимагаємо, щоб частки збіглися.
«Для всіх y» означає дві окремі рівності. При y = 1 частка позитивних
рішень — це TPR, при y = 0 — FPR. Отже:
Ось і все означення: однаковий шанс бути прийнятим для тих, хто на це заслуговує, і однаковий шанс помилково пройти для тих, хто ні. Оскільки FNR = 1 − TPR, рівні TPR автоматично дають і рівні частки помилкових відмов.
Ідеальної рівності не буває, тому міряють розриви:
Чим ближче розрив до нуля, тим ближче модель до критерію. Зазвичай домовляються про
допуск ε: розрив менший за ε вважають прийнятним.
ВтручанняДва пороги: вирівнюємо шанси
Якщо спільний поріг дає різні шанси, найпростіше втручання — дозволити порогам відрізнятися. Це і є post-processing: саму модель ми не чіпаємо, працюємо лише з її виходом.
Тепер повзунків два. Спробуй звести обидва розриви до нуля одночасно, не забуваючи дивитись на точність. Кнопка знизу перебирає всі пари порогів, відкидає ті, де EO-розрив більший за 0.02, і серед решти бере найточнішу. Порядок дій саме такий, а не «знайти найменший розрив»: чому — у наступному розділі.
Окремий поріг для кожної групи
Ті самі дані. Два незалежні пороги — і видно, скільки коштує вирівнювання.
ВиродженняЛіниві розвʼязки
Рухаючи повзунки, ти майже напевно натрапив на дві позиції, де обидва розриви рівно нульові. Перша: обидва пороги на нулі — приймаємо всіх, TPR = 1 і FPR = 1 в обох групах. Друга: обидва пороги на одиниці — не приймаємо нікого, TPR = 0 і FPR = 0 скрізь.
Формально критерій виконано ідеально, практично це порожні розвʼязки: модель не робить різниці ні між ким. Такі точки називають лінивими (lazy solutions) — і саме через них не можна оптимізувати лише розрив справедливості.
Обидві точки перевіряються руками. Поставивши поріг у 0, ти приймаєш усіх — тоді
правильними виявляються рівно ті, у кого Y = 1, і точність дорівнює їхній
частці: табло Інтерактиву 2 показує 0.44. Поставивши поріг у 1, ти не приймаєш
нікого — правильні тепер ті, у кого Y = 0, і точність стає 0.56.
Розриви в обох випадках рівно нульові, і не випадково: усі чотири числа (TPR і FPR обох
груп) стають або одиницями, або нулями, а однакові числа не можуть відрізнятись.
Це і є пастка будь-якої одинокої метрики справедливості: її найлегше задовольнити, переставши приймати рішення. Тому оптимізують не розрив, а точність за умови, що розрив не перевищує заданого допуску — і саме так побудована кнопка з Інтерактиву 3.
ГеометріяПогляд через ROC
Є спосіб побачити відразу всі можливі пороги. ROC-крива групи — це траєкторія точки
(FPR, TPR), коли поріг рухається від 1 до 0. Один кінець кривої — «нікого не приймаємо»
(обидві частки нульові), другий — «приймаємо всіх» (обидві дорівнюють одиниці), а між ними
лежить кожен проміжний поріг. Площу під цією кривою називають AUC (area
under curve): одне число від 0.5 (модель угадує навмання) до 1 (розділяє бездоганно), яке
показує, наскільки добре модель відрізняє Y = 1 від Y = 0 у цій
групі — і робить це незалежно від вибраного порогу.
Побудуємо ROC-криву окремо для кожної групи — і умова Equality of Odds стане геометричною: потрібна пара порогів, за якої точка групи A і точка групи B збігаються, адже збіг означає одночасну рівність і FPR, і TPR. Можливо це лише там, де криві перетинаються.
Дві ROC-криві й точка перетину
Рухай пороги — точки біжать по своїх кривих. EO виконано лише там, де вони зійшлися.
Останній випадок трапляється, коли модель для однієї групи слабша — наприклад, через меншу кількість даних. Тоді точну рівність шансів можна отримати лише «зіпсувавши» кращий класифікатор до рівня гіршого. Це ситуація, коли правильна відповідь лежить не в оптимізації, а в поверненні до збору даних.
ПослабленняEqual opportunity
Дві рівності одночасно — вимога сувора, тому часто беруть половину означення. Якщо
залишити тільки y = 1, отримаємо equal opportunity
(рівність можливостей):
Сенс: серед тих, хто справді заслуговує позитивного рішення, шанс отримати його не залежить від групи — тобто однакова частка помилкових відмов. Це природна вимога там, де основна шкода — саме відмова: не дали кредит платоспроможному, не призначили обстеження хворому.
Дзеркальний варіант — залишити тільки y = 0, тобто вимагати рівних FPR
(predictive equality). Він доречний там, де шкода — навпаки, помилкове включення:
хибне спрацювання системи контролю.
КонкурентиПаритет і каліброваність
Equality of Odds — не єдине означення. Є щонайменше два інші, кожне звучить розумно, і кожне вимірює зовсім інше.
Демографічний паритет
Найпрямолінійніша ідея: частка позитивних рішень має бути однаковою в обох групах.
Відмінність від EO принципова: тут немає умови на Y — ми
взагалі не питаємо, який результат був справжнім, лише рахуємо, скільки прийнято. Слабке
місце тут таке: якщо частки тих, хто має Y=1, у групах різні, паритет змушує
систему приймати різні за суттю рішення, щоб зійшлися підсумкові цифри.
Каліброваність
Третій критерій говорить не про рішення, а про сам скор. Модель калібрована
всередині групи, якщо її число читається буквально: серед людей зі скором 0.7 справді
близько 70% мають Y=1.
Близький родич каліброваності, який зручніше міряти вже після рішення, — predictive parity: однакова точність позитивних рішень.
Це вимога з боку того, хто читає результат: якщо система сказала «так», відповідь має означати одне й те саме незалежно від групи.
| критерій | що зрівнює | умовно на | вразливість |
|---|---|---|---|
| EO | TPR і FPR | мітку Y | ліниві розвʼязки |
| equal opp. | лише TPR | Y = 1 | мовчить про хибні прийняття |
| паритет | частку прийнятих | нічого | ігнорує справжній результат |
| PPV | точність «так» | рішення Ŷ = 1 | залежить від базових ставок |
КонфліктТеорема про несумісність
Найважливіший результат теми — негативний. Роботи Клайнберга, Мулленатана й Рагавана та, незалежно, Чулдечової (2016–2017) показують: якщо базові ставки груп різні і класифікатор не ідеальний, то три розумні означення справедливості не можна виконати одночасно. Не «складно» і не «дорого» — математично неможливо.
Базова ставка групи (base rate) — це частка тих, у кого
Y = 1, тобто наскільки часто позитивний результат узагалі трапляється в цій
групі. Позначатимемо її p. Вона описує світ, а не модель: модель ще
нічого не зробила, а ставки вже різні.
Спершу — тотожність
Формулу нижче не треба памʼятати — її видно з перерахунку людей. Візьмімо групу
з N людей.
За означенням базової ставки тих, у кого Y = 1, буде p·N,
а решта, (1 − p)·N, має Y = 0.
З першого мішка модель приймає частку TPR, з другого — частку FPR. Отже правильних
прийняттів TP = TPR·p·N, а хибних — FP = FPR·(1 − p)·N.
PPV — це частка правильних серед усіх прийнятих, тобто TP / (TP + FP).
Розмір групи N стоїть множником і в чисельнику, і в знаменнику, тому
скорочується — і від нього нічого не лишається:
А тепер головне: у правій частині стоять рівно три величини —
p, TPR і FPR. Якщо Equality of Odds виконано, TPR і FPR у групах однакові, і
PPV лишається функцією тільки базової ставки. Різні p — різний PPV.
Виходу з цього рівняння немає: його не існує не тому, що ми його не знайшли, а тому, що в
рівнянні більше нема чого крутити.
Тепер — живі числа
Підставимо конкретні числа й порахуємо в стовпчик. Дві групи по 200 людей. У групі A базова ставка 0.50, у групі B — 0.25: сама по собі ця різниця не є ні чиєюсь виною, ні властивістю моделі. Модель в обох групах працює однаково: TPR = 0.80 і FPR = 0.20. Тобто Equality of Odds виконано точно, без жодного допуску.
Дві рівності виконані — третя ламається сама
Однакові TPR і FPR у двох групах із різними базовими ставками. Дивись на нижній рядок.
Спробуймо тепер полагодити третій критерій — і подивімось, що зламається. Щоб PPV групи B
теж став 0.80, серед її прийнятих має бути 40 правильних із 50: 40 / 50 = 0.80.
Правильних у нас рівно 40 (їх дає TPR = 0.80 від пʼятдесяти), отже хибних прийняттів має
бути не 30, а 10. А 10 хибних із 150 — це FPR = 10 / 150 = 0.07 замість 0.20.
Звідси й головний практичний висновок теми: вибір означення справедливості — рішення людини, а не властивість даних і не налаштування бібліотеки. Дані можуть сказати, якою буде ціна кожного вибору; вони не можуть сказати, який вибір правильний. Правильний той, чию ціну в цій предметній області готові платити — і сказати це має той, хто відповідає за наслідки, а не той, хто пише код.
Далі — та сама несумісність на наших даних, уже без круглих чисел. Поріг групи A зафіксовано в точці перетину ROC-кривих; рухаючи поріг групи B, дивись, як три розриви обнуляються в трьох різних місцях.
Три критерії на тих самих даних
Три криві розривів як функції порогу групи B. Нуль у кожної свій.
ПричинаБазові ставки — корінь конфлікту
Та сама формула підказує, коли конфлікту немає: коли p в обох групах
однакове. Тоді EO автоматично тягне за собою рівність PPV, і критерії перестають сперечатись.
Перевірити це можна просто в тотожності. Якщо p однакове, то права частина
збирається з трьох однакових чисел, а однакові числа дають однаковий результат — PPV
збігається сам, без жодного окремого зусилля. Конфлікт вимикається не тому, що ми стали
розумніші, а тому, що зникла величина, яка їх розрізняла.
Перевіримо це й на даних. Ставка групи A закріплена на 0.50, ставку групи B рухаєш
повзунком. Пороги зафіксовано в точці, де EO виконано, — і вони лишаються придатними при
будь-якій базовій ставці. Ось чому: TPR рахується всередині людей із Y = 1, а
FPR — усередині людей із Y = 0. Змінити базову ставку означає змінити
пропорцію між цими двома мішками, а не те, що лежить усередині кожного. Тому обидві
частки — а разом із ними й уся ROC-крива — від базової ставки не залежать (на скінченній
вибірці — з точністю до випадкових коливань, які ти й побачиш у табло EO-розриву).
Дивимось, що при цьому робить PPV.
Що робить різниця базових ставок
Пороги весь час тримають EO. Дві криві — точність рішень «так» у кожній групі.
ПлатаЦіна справедливості й способи її платити
Обмеження звужує множину допустимих розвʼязків, а найкращий розвʼязок із меншої множини не може бути кращим за найкращий із більшої. Тому точність під обмеженням справедливості завжди менша або дорівнює точності без нього. Це навіть не факт про дані — це логіка вибору з меншого кошика. Наскільки менша — уже питання емпіричне, і на нього відповідають заміром.
Замір робиться так. Беремо допуск ε — найбільший розрив, який ми згодні
терпіти, — залишаємо тільки ті пари порогів, де EO-розрив не перевищує ε, і
дивимось на найточнішу з них. Потім повторюємо для іншого ε. Виходить крива
«скільки коштує строгість».
Скільки коштує строгість
Максимальна точність як функція допуску ε. Праворуч від кривої — те саме без жодної вимоги рівності.
Заплатити цю ціну можна двома способами:
Модель уже навчена й не змінюється; працюємо тільки з її виходом, підбираючи групові пороги. Саме це робив Інтерактив 3.
Плюси: не потрібні ні доступ до навчання, ні сирі дані. Мінуси: потрібна ознака групи на етапі рішення — а це часто заборонено.
Записуємо справедливість як обмеження прямо в задачу оптимізації:
Тут L — звичайна функція втрат, тобто число, яке навчання мінімізує,
а θ («тета») — усі параметри моделі разом. Запис читається так: «шукай
параметри з найменшою втратою серед тих, у яких обидва розриви не більші за
ε».
Просто так це не рахується: розриви — розривні функції параметрів (одна людина
переходить через поріг — і TPR стрибає сходинкою), а стрибок не має похідної, за яку
міг би вхопитися градієнтний спуск. Тому на практиці розриви замінюють гладкими
наближеннями й додають як штраф до втрат; ε задає строгість вимоги.
Плюси: ознака групи не потрібна під час роботи. Мінуси: дорожче й складніше, результат треба перевіряти після кожного повторного навчання.
Є й третій шлях, найменш ефектний і найчастіше найкорисніший: виправити дані. Зібрати більше прикладів для недопредставленої групи, переглянути спосіб отримання міток. Красивої формули він не дає, зате лікує причину, а не симптом.
ПрактикаДе це важить насправді
Вибір критерію залежить від того, яка помилка в задачі болючіша й для кого:
| сфера | Y = 1 означає | болюча помилка | типовий критерій |
|---|---|---|---|
| кредит | позика буде повернена | відмова платоспроможному | equal opportunity (рівні TPR) |
| найм | кандидат підходить | відсів придатного | equal opportunity + аудит паритету |
| медицина | потрібне втручання | пропущений випадок | рівні FNR, каліброваність |
| правосуддя | подія станеться | хибне спрацювання | predictive equality (FPR) |
| модерація | контент порушує правила | видалення нормального | рівні FPR по мовах |
Останній рядок варто прочитати уважно: «групою» не обовʼязково є демографічна категорія. Це може бути мова, регіон, тип пристрою, рідкісний підклас. Уся математика вище працює для будь-якого розбиття вибірки — тому групові метрики показують ще й те, де модель просто тихо не працює.
Підсумок
- Одне число точності приховує структуру помилок: рахуй TPR і FPR окремо по групах.
- Прибрати ознаку групи недостатньо — проксі відновлюють її, а разом з нею й усі зміщення.
- Equality of Odds — дві рівності одночасно, TPR і FPR, обчислені всередині справжніх класів; послаблення — equal opportunity.
- Ліниві розвʼязки задовольняють критерій ідеально й не варті нічого: справедливість читається лише в парі з якістю.
- Три критерії несумісні при різних базових ставках і неідеальному класифікаторі. Це теорема, а не проблема реалізації.
- Тому справедливість — це вибір означення, зроблений явно й обґрунтований предметно. Код рахує розрив; яке число прийнятне — не до коду.