Causal Calculus

DAG: граф как язык причинности

1999 год: Judea Pearl публикует «Causality». Вопрос «что было бы, если бы» наконец получает математический язык - do-исчисление. За это в 2011 году - Тьюринговая премия. DAG превращает «correlation is not causation» из отговорки в инструмент.

  • DoWhy / EconML (Microsoft): causal analysis в Bing, Office, Azure там где A/B-тесты невозможны
  • RLHF reward modeling: DAG показывает, что модель учится стилю, а не качеству - reward hacking
  • Off-policy evaluation в Spotify, Netflix, Booking: оценка policy без её деплоя через backdoor criterion
  • Healthcare ML: propensity score из DAG для оценки эффектов лечения в observational data

Предварительные знания

  • Causal Inference

Узлы, рёбра и три слова DAG

**30 лет статистика повторяла мантру: «correlation is not causation».** 30 лет это была отговорка - не инструмент. Можно было сказать «тут конфаундер» и развести руками. В 1988 году Judea Pearl публикует «Probabilistic Reasoning in Intelligent Systems». Правила меняются: причинность теперь не философия, а граф. Узлы, рёбра, направление. Фраза «X влияет на Y» превращается из риторики в формулу. В 2011 году Pearl получает Тьюринговскую премию.

DAG - Directed Acyclic Graph, направленный ациклический граф. Три слова несут нагрузку. **Directed** - стрелки от причины к следствию, не симметричные связи. **Acyclic** - причина не может быть собственным следствием, X → Y → X запрещено. **Graph** - объект дискретной математики, к которому применимы все её алгоритмы. Каждое ребро X → Y - утверждение: «вмешательство в X изменит Y». Каждое отсутствующее ребро - утверждение: «прямого влияния нет».

DAG делает скрытые предположения **видимыми**. Когда дата-инженер решает включить или не включить переменную в регрессию, он строит DAG в голове. Сделать DAG явным - не дополнительная работа, а перевод неявных предположений в проверяемые. Команды, которые рисуют DAG до экспериментов, ловят confounding-баги до продакшна. Остальные - в постмортемах.

Что означает отсутствующее ребро между X и Y в DAG?

d-разделение: как читать условные независимости из графа

Любой DAG - комбинация трёх элементарных структур из трёх узлов. **Chain** (цепь): X → Z → Y. Z - медиатор, влияние X на Y идёт через Z. При кондиционировании на Z цепь разрывается: X ⊥ Y | Z. **Fork** (вилка): X ← Z → Y. Z - конфаундер, общая причина. X и Y коррелируют, но без причинной связи. Кондиционирование на Z убирает зависимость. **Collider** (коллайдер): X → Z ← Y. Z - общее следствие. X и Y независимы! Кондиционирование на Z **создаёт** ложную зависимость.

Collider ведёт себя **противоположно** fork и chain. В fork кондиционирование убирает зависимость. В collider - создаёт её из ничего. Если фильтровать данные по Z (например, «только успешные кандидаты»), X и Y начинают коррелировать, хотя в природе не связаны. Это **collider bias** или **selection bias** - он убил больше эмпирических исследований, чем все остальные ошибки вместе взятые.

В исследовании звёздных актёров обнаружили: красивые менее талантливы. Какая структура DAG создаёт этот артефакт?

do-оператор: корреляция ≠ причинность

Ключевое различие causal и statistical language: первый говорит про **интервенции** (что будет, если изменить X), второй - про **наблюдения** (что наблюдается при X = x). P(Y | X = x) - условное распределение по наблюдению. P(Y | do(X = x)) - распределение после интервенции. Они не равны при наличии конфаундеров. Барометр предсказывает дождь: P(дождь | барометр_низкий) высокая. Но если сломать барометр: P(дождь | do(барометр_низкий)) = базовая вероятность. Барометр не управляет погодой.

Графически do(X = x) - это разрезание всех входящих в X стрелок и фиксация X = x. Убирает влияние конфаундеров на X. **Backdoor criterion**: набор переменных Z блокирует backdoor paths (пути от X к Y через конфаундеры), если Z блокирует все такие пути и не содержит потомков X. При выполнении backdoor criterion: P(Y | do(X)) = Σ_z P(Y | X, Z=z) P(Z=z) - формула adjustment.

Реклама показывается чаще пользователям с высоким интересом к продукту. Как это влияет на оценку эффекта рекламы?

Итог

  • DAG = причинная грамматика: узлы - переменные, направленные рёбра - прямые causal-связи, отсутствие ребра - утверждение независимости
  • Три кирпича: chain (X→Z→Y, медиатор), fork (X←Z→Y, конфаундер), collider (X→Z←Y, общее следствие)
  • Кондиционирование на медиаторе/конфаундере убирает зависимость; кондиционирование на коллайдере создаёт ложную
  • P(Y|X=x) ≠ P(Y|do(X=x)): наблюдение vs интервенция. Разница - backdoor paths через конфаундеры
  • DAG постулируется, не выводится: данные различают только Markov equivalence class; стрелки - из времени, экспериментов или экспертного знания
  • Collider bias убил больше исследований, чем все остальные ошибки. Лечение: рисовать DAG до анализа, отмечать коллайдеры

Куда дальше

DAG - словарь. Дальше - грамматика и операции, превращающие граф в формулу.

  • d-разделение — Алгоритм чтения условных независимостей прямо из графа. Без него DAG - картинка, с ним - вычислимая модель
  • Backdoor criterion — Какие узлы контролировать для корректной оценки causal effect. Следствие структуры fork и chain
  • do-оператор — Формализация интервенции. P(Y|X) → P(Y|do(X)) - сердце causal inference
  • Causal discovery — PC, FCI, NOTEARS: можно ли восстановить DAG из данных и где пределы

Вопросы для размышления

  • Какие DAG неявно живут в архитектуре текущего проекта? Что изменится, если их нарисовать явно?
  • В каких A/B-тестах команды есть риск collider bias через фильтрацию данных?
  • Какие из последних решений «добавить фичу в регрессию» были бы пересмотрены, если бы DAG рисовался до анализа?

Связанные уроки

  • stat-27-graphical-models
DAG: граф как язык причинности

0

1

Войти