malyj_gorgan: (Default)
Колись, ще в аспірантурі, мені попалася на очі цитата, яка влучила прямо в центр мішені моїх наукових проблем, ще й резонансом відгукнулася: "A year in the lab saves you half-a-day at the library". Хай я був теоретиком і працював не в лабораторії, але суть збереглася: працюєш, кодуєш, шукаєш баґи, переробляєш десять разів... А коли вже все готово, і ти порпаєшся в літературі, шукаючи посилання для дисертації, ти знаходиш пару статей, де все, до чого ти сам так довго не міг доперти, розкладено покроково, гарно, просто, елєґантно...
Це я до того, що я в якийсь момент потратив купу власного часу, розбираючись, як працює причинно-наслідковість на моїй попередній роботі (бо колеги або ну геть не вміли пояснити, або, маю сильну підозру, самі толком не розуміли, що роблять), потім тут щось писав, потім навіть провів дводенний воркшоп для інших, потім на нинішній роботі дав семінар. І тут мені показали книжку, де все, нарешті, написано одночасно і повно, і просто: https://matheusfacure.github.io/python-causality-handbook/landing-page.html


P.S. Може, якби я це прочитав півтора року тому, все би в житті інакше пішло... хоча навряд, там треба було робити речі, які я ні не вмію, ні не люблю, ні не поважаю.
malyj_gorgan: (Default)
Знову повернуся до причинно-наслідковості. В попередніх дописах з цим теґом я намагався охопити загальну інтуїцію на тему, а зараз вже конкретика. Це статус кво галузі, як я його розумію, хоча, звичайно, воно все не записано в книжці стандартів, еталонів і аксіом. Тим не менше, я досить-таки твердо переконаний у всьому, що виклав нижче (мінус помарки або приступи дислексії), і якщо ви хочете зі мною поговорити про прикладні причини, спочатку варто погодитися з теорією.

В дописі три секції: формальне визначення причинності, метод подвійного машинного навчання і обговорення з прикладом.

A. Визначення: що таке причинний вплив бінарної дії A на результат Y?
Часто, особливо, коли Y бінарний, може виникнути спокуса визначати причинність як (знак оклику означає заперечення, !A еквівалентно не-A) еквівалент умови "якщо A, то Y, а якщо !A, то !Y". Це буде помилкою! Так визначається не причина, а єдина, необхідна і достатня причина; а такі за межами підручників зустрінеш рідко. Якщо поміркувати над стандартним вжитком, то погодитися можна лише про таке: "ʼA є причиною Yʼ означає, що позитивною є β, міра причинного впливу A на Y", і визначається ця бета так:
(1)   β = P(Y|A) − P(Y|!A) ≡ P(Y|A=1) − P(Y|A=0)

Це визначення правильне, але неповне. Ви помітили, що тут лише дві величини, дія і наслідок? Aле в житті-то є і всякі інші події, тому формула (1) завжди несе в собі імплікацію "everything else being equal", тобто, з двох боків знаку мінус міняється лише А, а все решта залишається незмінним. На жаль, неможливо спостерегти дві події, ідентичну у всьому, крім значення A. Це фундаментальна властивість реальності, поети її формулюють як "не можна двічі увійти в ту саму ріку", а математики як "!A ∩ A = ∅". В датазнавстві такі дані називають counterfactual data, а визначення причинності пишуть не для індивідуальних подій, а для розподілів. Тобто, якщо зовнішнє середовище і передісторія нашої події описуються багатомірним вектором Х з розподілом ρ, то бету пишуть як
(2)   β = P(Y|A, X) − P(Y|!A, X),
маючи на увазі
       β = P(Y|A, ρ(X)) − P(Y|!A, ρ(X)).

Ну і так далі )

На самий кінець додам, що все вищесказане було для бінарних A лише тому, що так простіше і чіткіше все пояснювати. Точно так само працює модель і DML для скалярного A, хоч дискретного, хоч неперервного, хоч обмеженого, хоч ні. Більше того, так само все працює і для багатомірних A, але тоді розмивається концепція існування причинни взагалі, а залишається лише розрахунок багатомірного вектора бета.
malyj_gorgan: (Default)
Відучив дводенний воркшоп-інтенсив з причинно-наслідкового моделювання для української онлайн освітньої платформи robot_dreams. Трохи новий для мене досвід -- останній раз я бона фіде вчив людей нешкільного віку понад двадцять років тому, тай то -- воно було фізика, класика, в рамках визначеної програми, все ясно, що розказувати, а студенти -- звичайні студенти. А тут невідомо хто, може, уже готові професіонали, які можуть більше мене навчити, ніж я їх... хоча поняття не маю, хто були ті люди, про себе зголосився розповісти лише один з двох десятків учасників. Поскаржуся на життя, що часу і зусиль воно зайняло більше, ніж я собі думав: два дні, мало бути по 3 години лекцій, вийшло по 4 з гаком, плюс, приготувати домашнє завдання. Але цікаво. Хочу вірити, що учасникам сподобалося. Організатори сказали (хитро сказали, уже після закінчення), що той факт, що майже всі досиділи до кінця -- це успіх, що іншими разами у них до кінця курсу досиджує меншість.

Так чи інакше, воно позаду. Чи буде вищезгадана платформа якось ділитися матеріалами курсу -- я не знаю, ми з ними домовилися, що все, що я приготував для курсу -- їхня власність, най так і буде, домовленостей треба дотримуватися. Але, як відомо, можна курити під час молитви, а можна молитися під час куріння (хто не знає цього анекдоту -- ви багато втратили, знайдіть і прочитайте), тому, я думаю, що маю повне право ділитися своїми напрацюваннями, які я зробив раніше/деінде, а в курсі використав. Думаю, на кілька дописів стане. Ось, наприклад, візуалізація одного принципу, як робити узагальнення про підмножини. Нехай у вас є якась залежність Y(X), ось така:
multiple_linear
Різними крапочками там зазначені розподіли семплів у цій залежності, а кольори цих крапочок -- якісь конфаундери, aka confounders, aka змішуючі змінні. Вважайте, непрофільні характеристики семплів, які впливають і на ікс, і на ігрек. Якщо ви побудуєте графік Y(X), усереднених за цими непрофільними конфаундерами, то він може виглядати зовсім неподібно, наприклад, десь так:
averages
Так от, не в плані математики, а в плані вдалого/невдалого використання статистичних чи просто частотних аргументів. Воно, звичайно, моя субʼєктивна інтерпретація особистого академічного і професійного досвіду, якогось style guide на цю тему ви не знайдете (якщо знайдете -- покажіть):
1. Розподіл середніх за непрофільними групами без додаткових міркувань не може бути доказом яких завгодно тверджень про залежність Y(X). (Розподіл всередині груп або незалежно від груп -- може, саме так і доказують.)
2. Позиція середнього одної підмножини на розподілі середніх може бути ілюстрацією існування залежності Y(X), якщо вона збігається з напрямком залежності, порахованим без врахування підгруп. Позиція середнього підмножини, яка не попадає в загальний тренд Y(X) нічого на цю тему не ілюструє.
3. Порівняння позицій двох підмножин (XA, YA) і (XB, YB) має сенс, якщо у них близькі або ікси, або ігреки -- таке порівняння дозволяє оцінити різницю між конфаундерами, які визначають множини A і B, але про існування чи значимість саме залежності Y(X) воно не каже нічого.

Десь так :)
malyj_gorgan: (Default)
Причинно-наслідкова або ж каузальна дедукція. Це я так перекладаю поняття causal inference. Оскільки воно все туманно, давайте, краще визначу про що мова.
Отже, нехай у нас є якась числова міра реальності Y, яку можна застосувати до одного семпла. Місячна виручка за морозиво марки ʼКурдупликʼ в генделиках Галичини, оцінка на тестуванні з математики у студента, ефективність їзди в літрах на 100 км на автомобіль і т. п. Далі, нехай, у нас є якась дія A, яка може статися або не статися перед тим, як ми мірятимемо наш Y. Скажімо, для трьох вищевказаних прикладів діями можуть бути "поставили паперову фігурку Курдуплика на вході в генделик", "прослухали рекомендовану лекцію ʼМатематика - це стильно, модно, маладьожноʼ", "Поставили під вітрове скло іконку Святого Хоми". Важливо, що в нашій популяції (популяція -- це сукупність всіх генделиків/студентів/машин, які ми розглядаємо) у деяких членів за час, поки їх спостерігали, ця дія сталася, а у решти -- не сталася. Ще ви, може, звернули увагу, що я назвав лише бінарні дії, A або відбулося або ні, А=0 або 1, тоді як Y найчастіше має якийсь відносно неперервний інтервал (можна описати дійсним або цілим числом). (Насправді, для небінарної дії все виводиться і імплементується практично так само, але я фокусуватимуся саме на бінарних А, тим більше, що в реальних задачах воно трапляється частіше, а мінуси, які я буду критикувати в кінці курсу, там очевидніші.)

Повернемося до задачі. Максимально загальне її формулювання дуже туманне: знайти, як бінарна дія (action або treatment) А впливає на кількісний наслідок (outcome) Y:
dag0
Можна прискіпатися, чого це ми впевнені, що А є однією з причин Y, а не навпаки, але не проблема: зворотнього впливу бути не може, бо Y вимірюється після того, як А відбулося або не відбулося. Інша справа, що від настільки загального формулювання толку мало, бо що значить "як впливає"?

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

Повертаємося до формулювань. Нехай індекс i позначає номер генделика нашому списку, Ai позначає факт встановлення там фігурки Курдуплика, а Yi позначає місячні продажі там відповідного морозива. Так от, ми визначимо казуальний вплив дії на результат βi через два можливі сценарії, в одному з яких Ai дорівнює нулю, а в іншому -- одиниці.
(1)   Yi[якщо Ai=1] = Yi[якщо Ai=0] + βi.
(N.B. для тих, хто не звик до статей і книжок з математики/фізики: цифра (1) перед попередньою формулою -- це її номер, щоби потім не казати "а памʼятаєте, я колись писав формулу про таке–то", а посилатися на неї як "формула номер один".)

В цьому місці ми зробили один дуже хитрий логічний хід: ми допустили, що, принаймні в уяві, можемо порівнювати два зовсім різні сценарії, в одному з яких сталося одне, а в другому -- друге, тоді як в реалі такого не буває, в кожному з генделиків ми мали або сценарій Ai=0, або Ai=1, ніколи не обидва зразу. (Насправді, я ще не торкався важливого моменту, коли відбувається наша дія; поки що, для простоти, уявімо собі, що фігурки Курдупликів ставили або не ставили виключно 31 січня і ніколи більше, а продажі міряли в лютому. (Щось я зловживаю зауваженнями в дужках, але такий з мене непродуманий писака.)) Можливість, хай віртуально, порівнювати два різних сценарії, хоча спостерегти можемо лише один, нічим не гарантована. Але таким чином ми обходимо кілька дуже слизьких моментів і використовуємо нашу богорівну уяву, щоби замінити строгі визначення інтуіцією. А що на такому допущенні ґрунтується вся теорія імовірності сотоваріщі, то чим ми гірші? Для неофітів додам, що повний набір отаких справжніх і уявно можливих сценаріїв називається "статистичний ансамбль".

Оскільки, як я оце розпинався, ми ніколи не можемо спостерегти продажі для двох різних сценаріїв, найпростіше допустити, що це β для всіх генделиків однакове. А якщо неоднакове, то тупо оголосити, що ми шукаємо середнє, найчастіше середнього достатньо. Інтуітивно найочевиднішим сподобом оцінити наше β є просто порівняти середні продажі mean(Yi) для всіх генделиків, де Ai=1, з середнім для всіх, де Ai=0. То, що саме цей метод є інтуітивно найочевиднішим, це я вам з досвіду кажу. Не заглядаючи під кат, ви як думаєте, це нормальний підхід? )

А що саме я маю на увазі і що там далі -- в наступному випуску :)

P.S. До теми конфаундерів: нагадую!
malyj_gorgan: (Default)
Почну потрохи писати лекцію з причинності і всякого такого. Наперед дякую за коментарі і запитання -- воно мені допоможе... а вас, можливо, зацікавить. Тих же, хто все це прекрасно знає і без мене, і краще за мене (боюся, таких тут більшість) перепрошую за зайвий шум. :)

Вступ


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

Імовірність (Probability). Одне з найбазовіших понять в нашому житті, і при цьому до смішного неінтуітивне. Хоча найпростіший випадок ще Ок: якщо ви знаєте, що може статися кілька подій, якщо уявити безліч світів, де ці події сталися, то ймовіність події A буде писатися P(A) і дорівнюватиме частці всіх світів, де сталася подія A, а не якісь альтернативні події. Аби не сперечатися на тему чи хоч щось станеться, давайте напишу це все контексті причинно-наслідковості: у кожної дії (причини), є якісь можливі насліди A, B, C і т. д., і кожен з них має свою імовірність, так що сума всіх імовірностей
P(A) + P(B) + P(A) + ... = 1. Причинно насліддковий звʼязок можна описати ось так:
probability


Правдоподібність (Likelihood). Різниця з імовірністю в тому, що ми починаємо з якогось спостереження, тобто, ми бачимо наслідок, який може статися в результаті кількох різних причин. Нехай, у нас знову є безліч світів, у яких у всіх стався наш наслідок. Так от, правдоподібність події A, позначається L(A), -- це частка цеї безлічі світів, у якій причиною цього насліду була саме дія A:
likelihood

Давайте проілюструємо це на прикладі. Чи не найкласичнішим засобом ілюстрацій після монет є гральні кубики, а.к.а. кості. Нехай у нас є три чесних кубики (чесних -- це таких, де сторони рівноімовірні, визначення виходить рекурсивним, але вдаватися в деталі облом), і ми граємо у гру, де ми міряєму суму, яка випала на цих трьох кубиках. Розподіл імовірностей для усіх можливих сум можна побачити нижче. Імовірність викинути суму, ну, наприклад, 14, буде P(14) = 15/216 ≅ 7%, це частка комбінацій, які додаються до чотирнадцяти , з усіх можливих комбінацій, ось картинка:
a05
З імовірністю чотирнадцяти все ясно. А для того, щоби ввести правдоподібність, треба задати додаткове запитання. Нехай ви знаєте, що випала сума 14, тоді додатковим запитанням буде "а яка правдоподібність того, що на всіх трьох кубиках були різні цифри?" (Відповідь -- 40%, звідки вона взялася, сподіваюся, ви побачите самі.) Або ще: знаючи, що сума трьох кубиків різних кольорів, жовтого, білого і сірого, складає 14, скажіть, з якою імовірністю жовтий кубик показує чотири? (Порахуйте це самі, в якості домашнього завдання.)

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

Причинно-наслідковість / каузальність (Causality) стосується ближчого до реальності стану речей, а цей стан навіть в найпростіших прикладах є набагато складнішим, ніж перші дві картинки зі стрілочками. Почну з кінця: по-перше, у всякій життєвій ситуації наслідок рідко є чимось однозначним, а найчастіше є якийсь багатомірний простір наслідків. Який ми любимо проектувати на одну або більше лінійних числових метрик, як то "продажі товару", "сума крапочок на костях", "добре/погано", "оцінка на тесті" і ще мільйон інших. Найчастіше люблять вибрати якусь одну метрику ... що часто-густо веде до підміни усього багатства наслідків одною кількісною величиною, через що стається сама лише шкода і дуже небагато користі, бо ця одна метрика і надмірно спрощує, і неясно, чи ми правильно розуміємо механізм звʼязку цеї метрики з власне подіями. (Див. помилка Макнамари і закон Ґудгарта) По-друге, на відміну від задачок на ідеальні шестигранні кості або чесні монетки, ми майже ніколи точно не знаємо, як саме та чи інша причина впливає на наш наслідок. Власне, встановлення цього механізму і є основною задачею каузального моделювання. По–третє, крім відомих причин A, B, C з різними правдоподібностями і механізмами впливу, завжди є ще і невідомі причини. Ну і, нарешті, причини між собою ні разу не незалежні, тому, намагаючись зі спостережень встановити, як A впливає на Y, треба памʼятати, що розподіли спостережених A і Y дуже сильно розмиті всякими невідомими нам подіями і явищами, а, по–друге, що частина подій є конфаундерами, або сплутуючими факторами, такими, які одночасно впливають на A і Y, вносячи байаси і іншу статистични не-незалежність в наші спостереження.
Базова картинка причинно наслідкового, наприклад, ось:
a.03
Типова задача буде, ну, наприклад, така: нехай A -- якийсь педагогічний прийом на заняттях з англійської мови. Ну, наприклад, заміна одного із програмних творів на уроках англійської зі звичайного твору на комікс. А Y -- стандартизований тест з англійської, який учні пишуть в кінці року. Відомі причини -- всякі інші оцінки і кількості годин учнів перед тестом. Невідомі причини -- все решта, від особи вчителя до того, що того року в телевізорі показують.

Як це робиться -- я буду писати в наступних розділах, а поки що, для лінивих, розкажу основну ідею і висновок:

  1. Основна ідея: першим ділом в таких задачах доводиться допускати функціональну форму механізму залежності. Найчастіше, вибирають лінійну залежність:
    Y|A=1 = Y| A=0 + β,
    де A-нуль відповідає звичайному твору, а одиниця -- коміксу... або навпаки, суть в тому, що ми перетворюємо причину на бінарну величину (можна небінарну, підхід аналогічний).

  2. Тоді, використовуючи всякі наближення і допущення, можна порахувати значення β, його і називають причинним впливом AY

  3. Ця бета -- вона завжди і тільки описує середній ефект

  4. Будь-які спроби прикинутися, ніби ви таким статистичним способом можете порахувати індивідуальний вплив, тобто, як A вплине на Y для одного конкретного учня (як причина вплине на наслідок в конкретному семплі), майже завжди -- відверта брехня і шахрайство.

Profile

malyj_gorgan: (Default)
malyj_gorgan

June 2025

S M T W T F S
12 345 67
891011121314
15161718192021
22232425262728
2930     

Syndicate

RSS Atom

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 9th, 2025 07:49 am
Powered by Dreamwidth Studios