вступление

Версию с полностью отрендеренным выражением Latex смотрите в моем оригинальном посте в блоге здесь.

В своих последних несколько постах я пытался ответить на вопросы высокого уровня, такие как Что такое причинно-следственный вывод?, Чем он отличается от ML? и Когда я должен использовать это?.

В этом посте мы, наконец, запачкаем руки некоторыми алгоритмами причинно-следственного вывода в стиле Kaggle! В этом соревновании я сопоставлю некоторые известные алгоритмы машинного обучения с несколькими специализированными алгоритмами причинно-следственного вывода (CI) и узнаю, кто крут, а кто нет!

Цели причинного вывода и потребность в специализированных алгоритмах

ATE: средний лечебный эффект

Итак, мы узнали, что для оценки причинно-следственной зависимости Y от X нам нужно использовать набор признаков ZB, который удовлетворяет «критериям бэкдора». Затем мы можем использовать формулу g-вычисления:

(1) E(Y|do(x))=∑zBf(x,zB)P(zB)

где Y — наша целевая переменная, do(x) — действие по установке для обработки X значения x (см. мой предыдущий пост для более подробной информации об операторе do) и f(x,zB)=𝔼(Y| x,zB) — это некоторая предикторная функция, которую мы можем получить, используя обычные алгоритмы ML.

Можно спросить: если мы можем получить f(x,zB) с помощью обычных алгоритмов машинного обучения, зачем нужны специализированные алгоритмы CI?

Ответ заключается в том, что наша цель в CI отличается от нашей цели в классическом ML: в ML мы пытаемся предсказать абсолютное значение Y, учитывая, что мы наблюдаем, как X принимает значение x: 𝔼(Y|x), в то время как в CI мы пытаемся оценить разница в ожидаемом значении Y при различных значениях присваивания x для X. В литературе по КИ эта величина называется «средним лечебным эффектом» или сокращенно ATE. В случае бинарной обработки (где X∈{0,1}) это определяется как:

ATE:=𝔼(Y|делать(1))−𝔼(Y|делать(0))

и в общем (не обязательно бинарном) случае это определяется как:

ATE(x):=∂𝔼(Y|делать(x))/∂x

Чтобы понять, почему точная оценка 𝔼(Y|x) не обязательно означает точную оценку ATE (и, следовательно, для разных целей могут потребоваться разные алгоритмы), давайте рассмотрим пример:

Представьте, что мы работаем в компании, занимающейся маркетингом. Обработкой в ​​этом примере является автоматический робот с искусственным интеллектом, который мы недавно разработали в качестве дополнительной услуги для нашей платформы управления кампаниями. Чтобы продемонстрировать, что это работает, мы продавали его в пробной версии в течение нескольких месяцев, по истечении которых мы записывали для всех наших клиентов, воспользовались ли они пробной версией («леченные») или нет («нелеченные»), среднюю рентабельность инвестиций в кампанию. и размер компании («маленькая» или «крупная»):

Первая строка гласит: «Средний ROI для кампаний, проводимых небольшими компаниями, которые не использовали нашего робота (необработанного), составляет 1%. Доля этих кампаний от всех кампаний, запущенных на нашей платформе, составляет 0,1.

Чтобы использовать формулу g-вычисления (уравнение 1 выше), нам нужно определить правильный набор настроек ZB.

Поговорив с некоторыми из наших клиентов, мы узнали, что крупные компании обычно нанимают большие группы аналитиков для оптимизации своих кампаний, что приводит к более высокой рентабельности инвестиций по сравнению с небольшими компаниями. Наличие таких больших команд также означает, что они менее склонны проводить испытания по сравнению с небольшими компаниями.

Таким образом, мы предполагаем следующий DAG:

Применяя «критерии обхода» к DAG выше, мы приходим к пониманию того, что размер компании является смешанным фактором и, таким образом, ZB = размер компании. Уравнение 1 выше в нашем случае гласит:

𝔼(ROI|делать(лечение))=∑размер компании∈{маленький, большой}(𝔼(ROI|лечение, размер компании)P(размер компании))

Таким образом, мы приходим к величинам:

𝔼(ROI|делать(лечить))=2%⋅(0,4+0,1)+5%⋅(0,1+0,4)=3,5%

и

𝔼(ROI|делать(без обработки))=1%⋅(0,4+0,1)+5%⋅(0,1+0,4)=3%

и наконец

ATE = 𝔼(ROI|действующий(леченный))−𝔼(ROI|действующий(нелеченный))=0,5%

Это означает, что лечение (наш робот) увеличивает рентабельность инвестиций в среднем на 0,5%.

Далее предположим, что наши данные зашумлены и средней рентабельности инвестиций недостаточно для оценки ожидаемой рентабельности инвестиций. Мы пытаемся оценить рентабельность инвестиций, используя 2 модели. Ниже мы можем увидеть прогнозы модели (с абсолютной ошибкой в ​​скобках):

Мы видим, что модель 1 точнее модели 2 в каждой строке.

Если бы мы использовали модель 1 для оценки ATE, мы бы получили:

𝔼(ROI|делать(лечить))_{mode1}=1,5%⋅(0,4+0,1)+4,5%⋅(0,1+0,4)=3%

и

E(ROI|делать(без обработки))_{режим1}=1,5%⋅(0,4+0,1)+5,5%⋅(0,1+0,4)=3,5%

ATE_{mode1}=−0,5%

Это означает, что мы оцениваем, что наш продукт снижает рентабельность инвестиций на 0,5%! Наша оценка неверна не только по величине, но и по знаку, а это означает, что мы не можем использовать ее для продвижения нашего продукта.

Однако, если бы мы использовали модель 2, мы бы получили:

𝔼(ROI|делать(лечить))_{model2}=1%⋅(0,4+0,1)+4%⋅(0,1+0,4)=2,5%

и

𝔼(ROI|do(без обработки))_{model2}=0%⋅(0,4+0,1)+4%⋅(0,1+0,4)=2%

и

𝔼(ROI|делать(без обработки))модель2=0%⋅(0,4+0,1)+4%⋅(0,1+0,4)=2%

и наконец

ATE_{модель2}=0,5%

Получение правильной оценки ATE! Таким образом, несмотря на то, что модель 2 менее точна, чем модель 1, в оценке 𝔼(ROI), она лучше оценивает ATE.

CATE: Условный средний лечебный эффект

Глядя на таблицу выше, мы видим, что хотя наш продукт увеличивает ROI в среднем на 0,5%, он увеличивает ROI на 1% для кампаний, проводимых небольшими компаниями, при этом совсем не улучшая кампании, проводимые крупными. Таким образом, мы рекомендуем продавать наш продукт небольшим компаниям.

В литературе по КИ эффект лечения, обусловленный некоторыми другими характеристиками z (например, размером компании), уместно называется «условным средним эффектом лечения» (CATE). В тех случаях, когда характеристики, обусловленные идентификацией отдельных лиц, однозначно (например, когда по крайней мере одна из обусловленных характеристик непрерывна), это также называется «Индивидуальный лечебный эффект», что является очень востребованной величиной, например, в персонализированной медицине. Для бинарного случая CATE определяется как:

CATE(z):=𝔼(Y|делать(1),z)−𝔼(Y|делать(0),z)

В общем (не обязательно бинарном) случае это определяется как:

CATE(x,z):=∂𝔼(Y|делать(X=x),Z=z)/∂x

Снова взглянув на прогнозы модели выше, мы можем сравнить фактический и прогнозируемый CATE для обеих моделей (с абсолютной ошибкой в ​​скобках):

Опять же, мы можем видеть, что, хотя модель 1 была более точной, чем модель 2, в предсказании 𝔼(Y), она полностью пропускает истинный CATE, в то время как модель 2 точно его оценивает.

Подводя итог: могут потребоваться специализированные алгоритмы CI, поскольку для разных целей могут потребоваться разные инструменты.

Пример с смоделированными данными

Приведенный выше пример может показаться немного случайным (что правда), но он мотивирован, возможно, реальными сценариями. Я продемонстрирую, смоделировав небольшой (100 наблюдений) набор данных из примера задачи, представленного выше, и подогнал к нему простое дерево решений. Ниже представлено полученное дерево:

Мы видим, что дерево полностью проигнорировало лечение! Чтобы понять, почему это произошло, давайте посмотрим на распределение набора данных:

На приведенном выше графике мы видим две функции набора данных, которые потенциально могут сбить с толку обычные алгоритмы ML, когда дело доходит до задач CI:

  1. Изменчивость из-за обработки очень мала по сравнению с другими характеристиками в наборе данных, что приводит к недооценке эффекта обработки (на графике изменчивость из-за размера компании намного выше, чем из-за обработки, поэтому решение дерево проигнорировало обработку).
  2. Распределение характеристик между группами лечения сильно асимметрично (на графике мы видим, что рассматриваемые единицы составляют подавляющее большинство в небольших компаниях и незначительное меньшинство в крупных компаниях, что делает сравнение внутри каждой компании ненадежным и, таким образом, оценивает CATE очень тяжело).

В представлении ниже мы увидим, смогут ли более мощные алгоритмы машинного обучения противостоять алгоритмам, разработанным специально для задач непрерывной интеграции.

Настройка конкурса

Пришло время настроить задачу для нашего конкурса!

В этом конкурсе я буду использовать полусинтетический набор данных, созданный для конкурса Атлантическая причинно-следственная конференция по анализу данных. Часть реальных данных состоит из набора признаков Z, который содержит 58 измерений, взятых из Программы здоровья и развития младенцев. К ним относятся такие особенности, как возраст матери, эндокринное состояние, уровень билирубина у ребенка и т. д.

Из полного набора признаков Z только подмножество из 8 признаков состоит из правильного набора корректировок ZB, в то время как остальные мешают (это означает, что они не влияют ни на лечение, ни на целевые переменные). Мы предполагаем, что правильный набор корректировок ZB неизвестен специалисту по обработке и анализу данных, и поэтому в модель подается полный набор функций Z. Это добавляет еще один уровень сложности для наших конкурентов.

Целевая переменная Y (непрерывная) и переменная обработки X (двоичная) моделируются в соответствии с одним из 12 процессов генерации данных (DGP). DGP отличаются следующими двумя признаками:

Ошибка измерения/остаточный шум. Один из:

  1. IID
  2. Группа коррелирована
  3. Гетероскедастический
  4. Неаддитивный (нелинейный)

Сложность оценки. Один из:

  1. Легкий
  2. Середина
  3. Жесткий

Сложность оценки связана с тремя факторами, которые могут быть либо низкими (0), либо высокими (1):

  1. Величина: величина лечебного эффекта
  2. Шум: отношение сигнал/шум
  3. Смешение: сила смешения (насколько отличается распределение Z между лечением и контролем)

Ниже приведена таблица, показывающая настройки этих факторов для разных сценариев сложности:

Полную информацию о процессе генерации данных можно найти здесь.

Из каждого DGP я моделирую M = 20 наборов данных и измеряю производительность алгоритма, используя 2 измерения:

Первое измерение показывает, насколько хорошо оценивается ATE во всех симуляциях M = 20:

RMSE_ATE = sqrt (∑_ {m = 1} ^ {M} (ATE-ATE ^ (m)) 2)

Мы измеряем RMSE_ATE один раз для всех 20 симуляций.

Второй — тип «объясненной изменчивости» или R-квадрата для CATE:

R²_{CATE} = 1−var(CATE(z)−\hat{CATE(z)})/var(CATE(z))

Мы измеряем R²_{CATE} один раз для каждой симуляции m.

Подождите, а зачем использовать синтетический набор данных вместо реального, как в ML?

В ML мы можем оценить ошибку вне выборки нашей модели f, используя выборки {y_i,f(x_i)} (например, 1/n(∑i=1n(yi−f(xi))2)). Однако в CI все не так просто. При оценке CATE часто z_i однозначно идентифицирует единицу i (например, если хотя бы один из признаков в Z является непрерывным). Поскольку единица была либо обработана, либо необработана, мы наблюдаем только либо {y_i,x_i=1,z_i}, либо {y_i,x_i=0,z_i}. Поэтому, в отличие от машинного обучения, мы не можем протестировать нашу модель, используя выборки {y_i|x_i=1,z_i−y_i|x_i=0,z_i,f(1,z_i)−f(0,z_i)}.

Ситуация, на которую я только что намекнул, много раз описывалась в литературе по КИ в постановке проблемы, которую обычно называют «выводом против фактов».

В случае ATE проблема усугубляется тем фактом, что это параметр совокупности, что означает, что даже если бы мы знали истинное ATE, у нас была бы только одна выборка для данного набора данных для сравнения.

По этим причинам нам нужно использовать синтетический/полусинтетический набор данных, где мы можем моделировать как {y_i,x_i=1,z_i}, так и {y_i,x_i=0,z_i}.

Алгоритмы

А теперь представим наших конкурентов!

  1. ER: эластичная чистая регрессия. В этой реализации сжатие не применяется к X, чтобы предотвратить установку алгоритмом коэффициента для X равным 0. Я также включаю условия парного взаимодействия между обработкой X и всеми функциями в Z, чтобы обеспечить оценку CATE.
  2. РФ: Случайный лес. В этой реализации X всегда добавляется к подмножеству функций, случайно выбранных в каждом узле дерева. Использование гиперпараметров по умолчанию.
  3. BART: Байесовские деревья аддитивной регрессии. Было продемонстрировано, что этот алгоритм имеет хорошую производительность в задачах причинно-следственного вывода. Использование параметров по умолчанию.
  4. КФ: Причинный лес. Форма обобщенных случайных лесов, предназначенная для задач причинно-следственного вывода. См. также это руководство. Использование параметров по умолчанию.
  5. BARTC: Байсовские деревья аддитивной регрессии — каузальная версия. В этой реализации используется двойная робастная оценка TMLE.

В этом конкурсе я сравниваю нестандартные алгоритмы. По этой причине XGBoost и нейронные сети не входят в число конкурентов, поскольку требуют много тонкой настройки гиперпараметров/архитектуры. Я также исключил все методы, которые полагаются исключительно на моделирование механизма назначения (например, повторное взвешивание показателя склонности), поскольку они в основном ориентированы на оценку ATE.

А теперь, без лишних слов, результаты!

ЕЛИ

Ниже я нарисовал оценочные диаграммы ATE вместе с истинным ATE (пунктирная линия).

Мы видим, что распределение ошибок не сильно меняет картину. По этой причине значения RMSE_ATE в таблице ниже являются средними значениями для всех типов ошибок:

Следующее, что мы можем заметить, это то, что в простом случае все алгоритмы достигают ATE, за исключением RF, в то время как в более сложных случаях все они значительно отстают от него, за исключением BARTC, который довольно близок.

КЕЙТ

Ниже я рисую квадратные диаграммы R²_{CATE} и красную линию на 0. Мы отмечаем, что в то время как в ML мы обычно думаем о R² = 0 как о базовой линии, которая равна «угадыванию» (поскольку, если мы угадываем y_i = \ bar{y}∀i мы получаем R²=0), что не было бы в случае CI. Заметим, что \bar{CATE}=ATE, что означает, что в CI эквивалентом угадывания y_i = \bar{y}∀i является предположение CATE(z)=ATE ∀z, и, как мы видели выше, оценка ATE не всегда прямая. вперед.

Ниже я сообщаю полученное среднее значение R²_{CATE}, усредненное по всем наборам данных M = 20 и всем типам ошибок:

Мы видим, что все алгоритмы, ориентированные на причинно-следственный вывод, работают лучше, чем обычные алгоритмы ML. Мы также можем видеть, что BART и BARTC работают лучше всего, но все они борются с трудностями.

Окончательный вывод

Казалось бы, алгоритмы на основе BART лучше всего подходят для задач CI среди конкурирующих алгоритмов. Это не совсем неожиданно, поскольку в прошлом сообщалось, что BART хорошо справляется с задачами CI. Также стоит упомянуть, что автор пакета, реализующего BARTC, является членом группы, которая собрала набор данных, который мы использовали в этом исследовании моделирования.

Думаете, вы знаете алгоритм, который может точно определить CATE даже в сложных случаях? Вы можете написать их в комментариях или не стесняйтесь использовать код, который создал этот пост, чтобы добавить их в конкурс.