Лучшее из обоих миров, часть 2: Двойной выбор и двойной ML для ковариатного выбора

Этот пост был написан в соавторстве с Песками Эмили Глассберг и является второй частью нашей серии Лучшее из двух миров: прикладное введение в ML для причинного вывода (Часть 1 здесь). Пример кода вместе с основными результатами моделирования доступен на GitHub.

Мы благодарны Эвану Магнуссону за его тесное сотрудничество в мыслях и отличное понимание всего.

Независимо от того, проводим ли мы AB-тестирование, проводим более сложные эксперименты или анализируем естественные эксперименты, шум неизбежно проникает внутрь и замедляет нас. Для любого заданного размера эффекта этот шум увеличивает время до значимости - и до принятия решения.

Хотите быстрее прийти к победному ответу? Принципиальное добавление элементов управления (ковариат) может повысить точность наших оценок и ускорить процессы тестирования. В этом посте мы рассмотрим два метода машинного обучения для принципиального ковариантного выбора и покажем влияние на точность в контексте AB-тестирования. Мы также рассмотрим, как эти же методы могут быть применены к ряду более широких методов причинно-следственного вывода за пределами AB-тестирования. На протяжении всего времени мы обсуждаем распространенные ошибки и объясняем, почему неправильная реализация этих методов может быть в лучшем случае проблематичной, а в худшем - просто ошибочной.

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

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

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

Набор функций быстро становится слишком большим, чтобы полная модель могла дать ценную информацию. В крайнем случае количество функций в нашей модели, p, превышает количество наблюдений в нашем наборе данных, n, и обычную модель наименьших квадратов (OLS). Подгонка результата лечения с полным вектором потенциальных средств контроля исключена: OLS идеально соответствует данным, включая шум. Даже если pn, мы рискуем переоценить значение и получить кашу для оценок.

С другой стороны, мы могли бы вручную выбрать подмножество ковариат для включения. И мы часто это делаем. Однако этот тип интеллектуального анализа данных может привести к тщательно подобранным результатам, которые могут не отражать истинный эффект, особенно в тех случаях, когда наша интуиция относительно ключевых ковариат слаба, а набор потенциальных ковариат велик.

В таком случае нам нужен принципиальный способ сведения ковариат к набору, который действительно имеет значение. К счастью для нас, машинное обучение может многое сказать о сокращении размерности или регуляризации. С некоторыми хитростями, разработанными Александром Беллони, Виктором Черножуковым и Кристианом Хансеном, теперь можно использовать методы регуляризации для принципиального ковариантного отбора для более мощного вывода.

Решение 1. Двойной выбор

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

В LASSO целевая функция

Интуитивно, когда λ равно 0, уравнение LASSO эквивалентно OLS. LASSO добавляет к OLS штраф за сложность модели, определяемый λ. Чем выше параметр штрафа, тем меньшее количество переменных из ковариатного вектора X появляется в подобранной модели (т. Е. Чем меньше количество коэффициентов β, отличных от 0). Это отправляет в 0 коэффициенты переменных, которые недостаточно помогают в уменьшении среднеквадратичной ошибки в модели. LASSO весьма привлекателен своей гибкостью; в принципе, он может справиться с обычными, более сложными ситуациями, в которых мы имеем дело с кластеризацией, фиксированными эффектами, ненормальностью и т. д.

Возвращаясь к нашему примеру, мы используем LASSO для регрессии результата Y на векторе потенциальных ковариат X. В R

lasso.fit.outcome <- cv.glmnet(data.matrix(X), df$Y.ab, alpha=1)

Здесь мы фактически не указали значение параметра штрафа λ. Вместо этого λ был выбран путем перекрестной проверки. Это распространенный способ выбора λ для прогнозирования, который во многих случаях также подходит для вывода. Ссылки в конце этого поста предоставляют больше рекомендаций по выбору λ в различных контекстах.

Как и у всех нас, LASSO имеет свои ограничения. Во-первых, поскольку он управляет компромиссом между соответствием модели и сложностью, когда ковариаты, которые должны быть включены в модель, сильно коррелируют друг с другом, LASSO часто предпочитает включать только одну. Это приводит к тому, что LASSO переоснащается по определенной ковариате, и альтернативные методы, такие как эластичные сетки и PCA, могут смягчить это.

Во-вторых, что более важно в нашем контексте, коэффициенты наказываются за их величину, а не только за то, что они не равны нулю. Это известно как усадка и приводит к смещению оценочных коэффициентов в сторону 0.

В настройке прогнозирования мы преодолеваем эту предвзятость с помощью пост-LASSO: во-первых, мы реализуем LASSO для получения набора функций H (из полного набора функций X), которые должны использоваться при прогнозировании результата Y; затем мы реализуем стандартную регрессию OLS для Y на H, и коэффициенты, оцененные по переменным в H, не будут смещены в сторону 0. (Примечание: по той или иной причине забывание выполнить шаг после LASSO является распространенной ошибкой. - не будь этим специалистом по данным!) В контексте прогнозирования достаточно пост-LASSO.

Но когда наша цель - вывод, мы не можем останавливаться на достигнутом. В LASSO функции, которые очень незначительно влияют на результат Y и / или коррелируются с другими выбранными функциями, не выбираются. Это означает, что регрессия после LASSO может фактически страдать из-за смещения переменной. Пропущенные переменные могут влиять на результат Y прямо или косвенно через лечение T (даже если наше лечение должно быть чисто случайным). И, к сожалению, для целей вывода, переменные в этой последней группе на самом деле более склонны не быть выбраны LASSO Y для T и X из-за включения самой функции обработки T.

Решением является Двойной выбор, который выполняется в несколько простых шагов.

В Double Selection мы сначала получаем набор характеристик, выбранных LASSO при регрессии Y на полном наборе потенциальных ковариат X; мы назовем результирующий вектор выбранных признаков H. Затем мы получим набор признаков, выбранных LASSO при регрессии T на X; назовем это К. В R,

lasso.fit.outcome <- cv.glmnet(data.matrix(X), df$Y.ab, alpha=1)
coef <- predict(lasso.fit.outcome, type = "nonzero")
H <- X.colnames[unlist(coef)]
lasso.fit.propensity <- cv.glmnet(data.matrix(X), df$T, alpha=1)
coef <- predict(lasso.fit.propensity, type = "nonzero")
K <- X.colnames[unlist(coef)]

Если вы взглянете на код, вы заметите, что в результатах этого примера H фактически не включает некоторые переменные, которые являются входными в функциональной форме Y. Это потому, что эти исключенные переменные сильно коррелированы. с другими переменными, включенными в результаты LASSO.

Кроме того, как H, так и K включают переменные, не входящие в функциональные формы Y и T. T, в частности, был назначен случайным образом, и поэтому мы надеемся, что K будет пустым. Но это не потому, что задание теста AB не является абсолютно случайным даже в выборках разумного размера.

Наконец, имея в руках оба набора выбранных признаков, мы регрессируем Y на T и объединяем H и K. Простая регрессия OLS будет достаточной для оценки причинного эффекта изменения признака. В R

eq.H_union_K <- paste("Y.ab ~ T + ", sum.H_union_K)
fit.double <- lm(eq.H_union_K, data = df)

И вуаля! Мы использовали методы машинного обучения, чтобы сделать более надежный и принципиальный причинно-следственный вывод - в данном случае для ковариатного отбора.

Насколько хорошо принципиальный ковариантный отбор сочетается с другими методами причинного вывода? На следующем графике мы показываем истинный эффект и сравниваем предполагаемый эффект T с использованием моделей OLS с множеством различных спецификаций ковариат на смоделированных данных:

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

Как видите, конкуренция даже не близка: сравните каждую из точечных оценок и 95% доверительный интервал вокруг них с истинным эффектом (полоса лососевого цвета в крайнем левом углу) + 2%.

Во-первых, рассмотрим необработанные результаты теста AB, представленные золотым слитком; без элементов управления тест был бы далек от завершения, так как мы оцениваем величину эффекта в диапазоне [-1%, 12%].

Затем рассмотрим зеленую полосу, на которой мы добавляем все элементы управления - здесь мы действительно получаем неправильный ответ, потому что модель может идеально соответствовать данным, но из-за переобучения. Бирюзовая полоса (включая наибольшее подмножество ковариат) и синяя полоса (ограниченные элементы управления) работают немного лучше, чем исходный (неконтролируемый) случай, но будут сильно варьироваться в зависимости от выбранного набора ковариат - и подлежат интеллектуальному анализу данных. .

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

Понятия не имею; диапазон доверительной вероятности 95% составляет от -1% до + 12% ??

to

Диапазон доверительной вероятности 95% составляет от + 1,9% до + 2,2%

Напомним, истинный эффект составляет 2%, так что это неплохо! Двойной выбор значительно превосходит сравнение необработанных (неконтролируемых) средних и каждый из беспринципных методов ковариантного выбора.

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

Дополнительный пример: RDD

Двойной выбор актуален не только для анализа AB-тестирования - тот же подход эффективен для анализа целого ряда естественных экспериментов с использованием ряда более сложных эконометрических методов для причинного вывода. Возьмем еще один пример ...

Предположим, мы хотим измерить влияние глобального изменения, например, недавно выпущенных видеороликов, на дневное время, проведенное пользователем на сайте. Это не то изменение, которое мы можем провести в тесте AB: поскольку пользователи нашей платформы общаются друг с другом, контрольная группа будет загрязнена знаниями об опыте группы лечения - не говоря уже о разочаровании из-за отсутствия доступа к новому контенту. Поэтому мы выкладываем новые видео для всех пользователей сразу.

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

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

Мы считаем, что пользователи почти случайным образом распределяются по запуску - мы не объявляли об этом, и никакие другие события не совпадали по времени, - поэтому различия в результатах между двумя группами правдоподобно отражают эффект от запуска нового контента. Тем не менее, как и раньше, мы можем захотеть контролировать ключевые пользовательские и поведенческие характеристики, которые, вероятно, будут коррелировать как с интересующим результатом (время, проведенное на месте), так и, возможно, с лечением (сразу после или непосредственно перед запуском). Добавление этих элементов управления может уменьшить шум и повысить точность нашей оценки RDD.

Процесс такой же, как и раньше. Пусть Y - результат, T - индикаторная переменная до / после изменения, а W - текущая переменная. Сначала, как и раньше, получаем множества H и K. Затем вместо реализации OLS мы выполняем стандартную оценку RDD, используя объединение H и K в качестве элементов управления.

fit.rdd <- RDestimate(eq.H_union_K, data = df)

Это должно быть значительно точнее, чем просто наивный RDD.

Решение 2. Двойное машинное обучение

Double Selection прост в реализации и довольно интуитивно понятен, но в наши дни появился новый ребенок в блоке, известный как двойное машинное обучение или двойное машинное обучение. Основная идея Double ML состоит в том, чтобы рассматривать параметр T как решение нескольких задач прогнозирования, которые тщательно настраиваются и усредняются, чтобы смещение в задачах прогнозирования фактически не проявлялось в T.

По сравнению с Double Selection, Double ML устраняет асимптотическое смещение в оценочном коэффициенте T, поэтому при правильной настройке он, вероятно, будет явным победителем. Однако он немного менее интуитивно понятен и может быть более сложным в использовании в зависимости от метода, который вы используете для вывода (например, RDD). Это также включает в себя разделение выборки, что означает еще один шаг в процедуре оценки, и если ваша выборка недостаточно велика, то стоимость разделения выборки может не оправдать улучшения в снижении систематической ошибки. Мы только кратко рассмотрим Double ML; заинтересованным читателям стоит почитать Черножуков и др. (2017) подробнее.

Как работает Double ML?

Он начинается с чего-то, что очень похоже на двойной выбор - получение векторов важных функций H и K.

Затем мы регрессируем Y на H и вычисляем разницу между Y и предсказанными значениями Y из модели (то есть остатками), которые мы назовем Y *. Мы аналогичным образом регрессируем T на K и вычисляем T *, разницу между T и предсказанными значениями T из модели. Наконец, мы регрессируем Y * на T *. Результирующий коэффициент при T * является точечной оценкой причинного воздействия T на Y.

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

Важным атрибутом Double ML является то, что нам не обязательно использовать LASSO и OLS для вычисления остатков; другие инструменты, такие как случайные леса, усиленные деревья и даже глубокие нейронные сети, также могут быть использованы на этих первых шагах.

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

В этом посте мы рассмотрели два метода машинного обучения для принципиального ковариатного отбора. Независимо от того, проводите ли вы AB-тестирование, проводите более сложные эксперименты или оцениваете причинно-следственные связи из естественных экспериментов, методы, представленные здесь, могут помочь вам получить лучший контроль, чтобы быстрее узнать правильный ответ. Хотите узнать больше? Ознакомьтесь с ссылками ниже.

Скоро в нашей следующей публикации мы рассмотрим ML для отбора инструментальных переменных с множеством потенциальных инструментов.

использованная литература

1. Беллони, Александр, Даниэль Чен, Виктор Черножуков и Кристиан Хансен. 2012. «Редкие модели и методы для оптимальных инструментов с приложением к выдающейся области». Econometrica 80 (6): 2369–2429.

2. Беллони, Александр, Виктор Черножуков, Иван Фернандес-Вал и Кристиан Хансен. 2013. «Оценка программы с использованием многомерных данных». arXiv e-print, arXiv: 1311.2645.

3. Беллони, Александр, Виктор Черножуков, Кристиан Хансен и Дамиан Козбур. 2014. «Вывод на основе многомерных панельных данных».

4. Беллони, Александр, Виктор Черножуков и Кристиан Хансен. 2014. «Многомерные методы и выводы о структурных и лечебных эффектах». Журнал экономических перспектив, 28 (2): 29–50.

5. Чернозюков, Виктор, Денис Четвериков, Мерт Демирер, Эстен Дюфло, Кристиан Хансен, Уитни Ньюи и Джеймс Робинс. 2017. «Двойное / беспристрастное машинное обучение для лечения и причинных параметров».