Головна▸Статті▸Експериментування та причинний аналіз

Причинно-наслідковий аналіз для ML практиків

Розуміння причинних ефектів у продакшн системах - treatment effects, propensity scores, інструментальні змінні та прийняття рішень при confounding.

mysimulator teamОновлено 2026-01≈ 3 хв читання▶ Open the simulation

Причинно-наслідковий аналіз відповідає на питання "що якщо": Що б сталося, якби ми змінили ціну? Чи маркетингова кампанія дійсно збільшила продажі? Стандартний ML передбачає кореляції, але бізнес-рішення вимагають розуміння причин. Причинні методи оцінюють ефекти treatment, коли рандомізовані експерименти неможливі.

Де використовується

Причинний аналіз забезпечує прийняття рішень у різних галузях:

Типові дані

Аспект Типові значення
Розмір вибірки 10K до 10M спостережень
Treatment rate 1% до 50%
Confounders 10 до 100+ змінних
Типи outcome Binary, continuous, time-to-event
Джерела даних Observational, quasi-experimental

Структура даних:

user_id | treatment | outcome | confounder_1 | confounder_2 | ... | timestamp

Ключова проблема: Confounding - змінні, що впливають і на присвоєння treatment, і на outcome.

Що робимо на практиці

  1. Визначити причинне питання - Який treatment, який outcome, яке порівняння?
  2. Намалювати причинну діаграму (DAG) - Відобразити зв'язки між змінними
  3. Ідентифікувати confounders - Що впливає на treatment і outcome?
  4. Перевірити ідентифікацію - Чи можемо оцінити причинний ефект?
  5. Обрати метод оцінки - Matching, weighting, IV, DiD
  6. Оцінити propensity scores - Якщо використовуємо weighting/matching
  7. Перевірки балансу - Верифікувати covariate balance
  8. Оцінити treatment effect - ATE, ATT, CATE
  9. Аналіз чутливості - Робастність до unmeasured confounding
  10. Комунікація невизначеності - CI, зроблені припущення

Baseline спочатку

Почніть з простого порівняння, потім додайте причинні коригування:

import pandas as pd
from sklearn.linear_model import LogisticRegression

# Крок 1: Наївне порівняння (зміщене)
naive_effect = df[df['treatment']==1]['outcome'].mean() - \
               df[df['treatment']==0]['outcome'].mean()

# Крок 2: Оцінка propensity score
ps_model = LogisticRegression()
ps_model.fit(df[confounders], df['treatment'])
df['propensity'] = ps_model.predict_proba(df[confounders])[:, 1]

# Крок 3: IPW оцінка
df['weight'] = df['treatment'] / df['propensity'] + \
               (1 - df['treatment']) / (1 - df['propensity'])

Методи причинної оцінки

Метод Припущення Найкраще для
Propensity Score Matching Selection on observables Схожі одиниці доступні
Inverse Probability Weighting Selection on observables Всі одиниці враховуються
Doubly Robust PS або outcome модель правильна Робастність
Difference-in-Differences Паралельні тренди Зміни політики
Regression Discontinuity Присвоєння на основі порогу Порогові правила
Instrumental Variables Валідний інструмент існує Unmeasured confounding

Ключові концепції

Average Treatment Effect (ATE):

ATE = E[Y(1)] - E[Y(0)]

Ефект для всієї популяції.

Average Treatment Effect on Treated (ATT):

ATT = E[Y(1) - Y(0) | T=1]

Ефект для тих, хто отримав treatment.

Propensity Score:

e(x) = P(T=1 | X=x)

Ймовірність treatment за умови ковариат.

Валідація

Підхід валідації Опис
Перевірки балансу Ковариати збалансовані після weighting/matching
Плацебо тести Немає ефекту на outcomes, що не повинні бути affected
Аналіз чутливості Скільки unmeasured confounding для nullify ефекту
A/B тест порівняння Порівняти причинну оцінку з RCT

Типові проблеми та дебагінг

Чекліст продакшену

Перед прийняттям рішень: - [ ] Причинна діаграма перевірена доменними експертами - [ ] Confounders ідентифіковані та виміряні - [ ] Propensity overlap верифіковано - [ ] Баланс досягнуто після adjustment - [ ] Множинні методи дають консистентні результати - [ ] Аналіз чутливості проведено

Інструменти

Категорія Інструменти
Python DoWhy, CausalML, EconML, causalinference
R MatchIt, WeightIt, CausalImpact, grf
Причинні графи DAGitty, pgmpy
CATE оцінка EconML (DML, Causal Forest), CausalML

Пов'язані сторінки

Додаткове читання

Спробуйте наживо

Дослідіть пов'язану модель на практиці: відкрийте Causal Inference Lab — Confounding, Naive vs. Adjusted Effects і змінюйте параметри під час роботи. Усе лишається у вашому браузері.

▶ Відкрити симуляцію Causal Inference Lab — Confounding, Naive vs. Adjusted Effects

Що ви знайшли?

Додати кроки відтворення (опційно)