Записки из промышленности

Причинно-следственный вывод: цены на эластичность

Как машинное обучение может улучшить причинно-следственные связи в промышленности? Описываю реальный пример с кодом для розничного ценообразования.

Причинный вывод - горячая тема в машинном обучении, и существует множество отличных учебников по теории причинного вывода [1–4]. Но существует гораздо меньше примеров реальных приложений причинно-следственного вывода на основе машинного обучения. В этой статье представлен один такой пример из отраслевого контекста с использованием (общедоступного) набора реальных данных. Он предназначен для технической аудитории с пониманием основ причинно-следственной связи.

В частности, я рассмотрю «идеальный» сценарий оценки эластичности цены [2, 5]. Этот сценарий очень актуален для розничных торговцев, желающих оптимизировать цены, например, чтобы лучше управлять запасами или просто быть более конкурентоспособными.

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

1 Зачем нужна эластичность?

Основная концепция большинства курсов Econ101, «эластичность спроса по цене», описывает, насколько чувствителен к цене спрос на данный продукт. Если продукт «более эластичен», рост цен приведет к большему сокращению спроса. В качестве причинно-следственной концепции эластичность позволяет нам количественно определить, на сколько единиц больше мы могли бы продать (противодействуя), если бы были снижены цены, скажем, на 5%.

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

Поэтому несколько удивительно, что эластичность действительно можно оценить. Но с момента его формального определения в 1890 г. [6] экономисты обнаружили, что эластичность спроса по цене является достойным приближением к реальности во многих сценариях [5]. Это приближение особенно удобно в каноническом определении относительных изменений: эластичность измеряет процентное изменение объема спроса (q) при изменении цены в процентах ( p):

Интуиция здесь проста: изменение цены на 1 доллар для продукта стоимостью 5 долларов приведет к более резким изменениям спроса, чем для продукта стоимостью 100 долларов. В целом потребителей волнуют «относительные» изменения. Эмпирически это определение удобно, поскольку оно означает, что оцениваемый параметр θ остается приблизительно постоянным при изменении p.

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

Чтобы создать некоторую интуицию, предположим, что в настоящее время они продают 100 единиц по цене 5 долларов США и по цене 4 доллара США. Тогда они в настоящее время получают 100 * (5–4) = 100 долларов прибыли. Предположим, они оценили эластичность как θ = -3, т.е. они ожидают, что повышение цены на 5% (с 5 до 5,25 долларов) приведет к снижению спроса на 15% (со 100 до 85). Тогда новая прибыль будет немного увеличена, 85 * (5,25–4) = 106 долларов. Если же они снизят цену на 5%, они потеряют прибыль: 115 * (4,75–4) = 86 долларов. Обратите внимание, что более высокие цены не всегда приводят к более высокой прибыли: например, если себестоимость единицы продукции составляла всего 3 доллара: увеличение цены на 5% привело бы к снижению прибыли со 100 * (5–3) = 200 долларов до 85 * (5,25–3). ) = 191 доллар.

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

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

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

2 Признавая трудность

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

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

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

  1. MacBook дороже, чем, скажем, Chromebook. Предполагая, что розничный торговец продает больше MacBook, чем Chromebook (и ничего больше), данные наблюдений показывают, что высокие цены коррелируют с высокими продажами. Но было бы глупо (наоборот) ожидать, что повышение цены Chromebook до уровня Apple позволит продавать больше Chromebook.
  2. Спрос на многие товары носит сезонный характер, например, из-за праздников (Рождество) и изменений погоды (лето). Как правило, цены высокие в высокий сезон (и все же продается много товаров) и ниже в межсезонье (когда продается меньше товаров); тем не менее, несмотря на эту корреляцию, было бы глупо ожидать увеличения продаж в результате повышения цен в межсезонье до уровня высокого сезона.

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

В стороне: эластичность цены - это пример проблемы, известной в эконометрике как «модель одновременных уравнений» [7] - основная идея заключается в том, что цена фактически определяется одновременными решениями по предложению- и спросу. -сайд. В этом примере розничный торговец считает, что у него достаточно данных о своих ценовых решениях, чтобы выделить последовательную оценку реакции рынка на изменение цен.

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

3 Двойное машинное обучение, или Контроль за наблюдаемыми 2.0

Решение, которое я здесь описываю, в первую очередь решает две проблемы: во-первых, регуляризация выбирает соответствующие элементы управления из большого числа потенциальных затруднений. Во-вторых, поскольку я использую гибкий алгоритм машинного обучения, функциональная форма и взаимодействие между контрольными переменными (то есть их предварительная обработка) имеют меньшее значение, чем при традиционном регрессионном подходе, когда вмешивающиеся факторы контролируются с помощью стандартной линейной регрессии. Естественно, нужно еще много подумать, чтобы найти переменные, которые могут сбивать с толку, и каких переменных следует избегать, поскольку они могут привести к «смещению коллайдера» [8], к которому этот метод не невосприимчив. .

В моем решении реализовано двойное машинное обучение (DML) [9]. Основная идея относительно интуитивно понятна: учитывая некоторые наблюдаемые потенциальные искажающие факторы, я использую непараметрические гибкие оценки (модели машинного обучения) для эффективного управления различными функциональными формами и эффектами взаимодействия. Другими словами, я аппроксимирую реальный механизм смешения в процессе генерации данных с помощью моделей машинного обучения.

Для этого я обучаю две отдельные «вспомогательные» модели для прогнозирования лечения (цена, P) и результата (требуемое количество, Q ) соответственно. Обе модели обучаются независимо с набором X потенциально мешающих переменных (например, качества продукции и сезона), так что их прогнозы приблизительно соответствуют ожидаемым значениям, E [P | X] и E [Q | X].

Используя эти прогнозы, я затем резидуализирую те части лечения и эффекта, которые можно предсказать с помощью набора контрольных переменных:

В моей реализации ниже я выбираю RandomForests для оценки условных ожиданий, выбранных из-за их надежной производительности. Вы можете думать об этих двух вспомогательных моделях как о «управляющих моделях»: если X содержит достаточно информации о соответствующих искажающих факторах и если хотя бы одна из моделей «подходит», по построению P̃ и Q̃ являются теперь «необоснованные», и остается только истинная причинно-следственная связь (по этому поводу имеется обширная литература, начиная с [9]).

Итак, после остаточного содержания меня интересует

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

Как именно это работает, выходит за рамки данной статьи (если вы все же хотите следовать, см. [10]). Важный вывод состоит в том, что в реальной реализации я буду (линейно) регрессировать остаточное логарифмическое количество на остаточную логарифмическую цену, чтобы получить θ.

На приведенной ниже диаграмме разброса я показываю «наивный» результат простого взятия корреляции между логарифмическим количеством и логарифмической ценой в моем выборочном наборе данных: зависимость кажется несколько линейной даже без учета факторов, влияющих на факторы, таких как сезон или качество продукции. Эластичность, θ, представляет собой наклон этой линии ([10]). Как вы увидите, контроль искажающих факторов значительно изменяет (улучшает) оценку.

Теперь, чтобы объединить подход:

  1. Я возьму журналы p и q.
  2. Я создам набор потенциальных факторов, вызывающих затруднения, X.
  3. Я обучу вспомогательную модель RandomForest предсказывать log (p) от X.
  4. Я обучу отдельную вспомогательную модель RandomForest для прогнозирования log (q) от X.

Если вы внимательно проследите за этим процессом, то заметите, что описанный процесс остаточной остаточности является «предсказанием внутри выборки», то есть вспомогательные модели обучаются на тех же данных, на которых они предсказывают. Это может привести к переобучению и смещению - чтобы противодействовать этому, я разделю свои данные на две половины. Я использую одну половину данных для подбора вспомогательных моделей, а затем использую модели для остаточного анализа log (p) и log (q) в другой половине. Затем я могу измерить причинную эластичность в последнем наборе данных. Прополощите и повторите, отключив два набора и усреднив по обоим оценкам. Так:

  1. Разделите набор данных на две половины и возьмите журналы p и q.
  2. Создайте набор потенциальных искажающих факторов X (одинаковые переменные в обеих половинах).
  3. Используйте первую половину для обучения вспомогательной модели RandomForest для прогнозирования log (p) от X.
  4. Используйте первую половину для обучения отдельной вспомогательной модели RandomForest для прогнозирования log (q) от X.
  5. Используйте две вспомогательные модели для прогнозирования log (p) и log (q) от X во второй половине данных, чтобы получить после резидуализации:

6. Вывести эластичность как коэффициент линейной регрессии,

7. Повторите шаги 3–6, заменив две половинки. В качестве окончательного результата используйте среднее значение обеих θ -оценок.

Чтобы лучше проиллюстрировать, как этот механизм работает на практике, давайте рассмотрим несколько пошаговых примеров кода. Для ваших собственных экспериментов DML и многие другие современные методы доступны в EconML, новом пакете Python, поддерживаемом Microsoft Research [11]. По состоянию на начало 2021 года я обнаружил, что API довольно нестабилен, но продолжающаяся разработка очень многообещающая. Точно так же DoubleML предлагает реализацию DML для python и R [12].

4 Пример кода

В коде используется этот идеализированный набор реальных данных: есть строка для каждого дня и каждого продукта, а также некоторые дополнительные функции этой комбинации (день x продукт), которые могут использоваться в качестве потенциальных искажающих факторов, X . Наиболее важно то, что в каждой строке записи данных Q и P.

Во-первых, я определю две стандартные модели машинного обучения для прогнозирования log (p) и log (q) из всех возможных потенциальных искажающих факторов X. Обратите внимание: поскольку существуют индивидуальные контрольные переменные для каждого дня и каждого продукта, модели могут отражать как качество продукта, так и сезонность.

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

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

Далее для фактического вывода я буду использовать модель линейной регрессии. Это позволит оценить наклон θ логарифмической регрессии, как обсуждалось выше.

В исходной статье DML предлагается немного другая оценка для этой регрессии, чем OLS, для достижения большей надежности: вместо использования стандартного решения OLS,

они используют следующую беспристрастную оценку. Обратите внимание, что первая P остаточная, вторая - не, а третья:

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

Окончательный результат выглядит так:

1st Fold:
DML elasticity:  -1.90
OLS elasticity for comparison: -1.83
2nd Fold:
DML elasticity:  -1.92
OLS elasticity for comparison: -1.85
DML efficient estimate of elasticity: -1.91 

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

Этот окончательный результат визуализируется на следующей диаграмме рассеяния:

В сюжете синим цветом виден «наивный» подход. Это просто график зависимости количества в журнале от цены в журнале без учета факторов, вызывающих затруднения (т. Е. Путаницы корреляции и причинно-следственной связи). Несмотря на то, что отношения «беспорядочные», вы уже можете увидеть отрицательный наклон: более высокие цены приводят к снижению спроса. Параметр регрессии здесь составляет около θ ≈ -0,6.

Оранжевая линия представляет собой визуализацию результата DML с учетом возможных искажающих факторов. Обратите внимание, что наклон стал более крутым, что указывает на более эластичный спрос (θ ≈ −1,9). Вы также можете заметить, что эта взаимосвязь стала значительно менее шумной, и вы можете увидеть резкое уменьшение дисперсии цен (диапазон линии на оси x) в результате остаточного анализа DML, «объясняющего» большую часть этого разброса.

5 Обсуждение

Как и в примере с самого начала, рассмотрим розничного продавца, который в настоящее время продает 100 единиц продукта по 5 долларов каждая по цене 2 доллара. При оценочной эластичности -1,9 розничному продавцу следует снизить цены для получения большей прибыли. Но с (необъективной, наивной) оценкой -0,6 они бы повысили цены.

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

Цель этой статьи - сквозное объяснение одного отраслевого приложения. Более подробно каждый шаг можно проследить в работающей записной книжке. Многие бизнес-задачи выигрывают от аналогичных подходов; Надеюсь, это был полезный пример.

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

Благодарности

Спасибо Римме Рахал, Джонатану Хаасу и Полу Хюнермунду за содержательные обсуждения и комментарии к ранним наброскам.

Ссылки / Сноски

[1] Тэдди, Мэтт: Наука о бизнес-данных. McGraw-Hill Education, 2019.

[2] Каннингем, Скотт: Причинный вывод: микстейп. Издательство Йельского университета, 2021 г. https://mixtape.scunning.com/introduction.html

[3] Пари, Стефан: СТАТИСТИКИ 361: Причинный вывод. Стэнфордский университет, 2020 г. https://web.stanford.edu/~swager/stats361.pdf

[4] Вариан, Хэл Р.: Причинно-следственный вывод в экономике и маркетинге. Труды Национальной академии наук, июль 2016 г.

[5] https://en.wikipedia.org/wiki/Price_elasticity_of_demand

[6] Маршалл, Альфред: Принципы экономики. Архив истории экономической мысли Университета Макмастера, 1890 г. https://socialsciences.mcmaster.ca/econ/ugcm/3ll3/marshall/prin/prinbk5.htm

[7] Глава 16: Модели одновременных уравнений. В: Вулдридж, Джеффри: вводная эконометрика: современный подход, 7-е издание. 2019.

[8] Ли Х., Аронсон Дж. К., Нунан Д.: Смещение коллайдера. Каталог предвзятости, 2019. https://catalogofbias.org/biases/collider-bias/

[9] Черножуков, Виктор и др.: Двойное / несмещенное машинное обучение для лечения и структурных параметров. The Econometrics Journal, том 21, 2018 г. https://academic.oup.com/ectj/article/21/1/C1/5056401

[10] Чтобы увидеть, что линейная логарифмическая регрессия действительно оценивает эластичность, рассмотрим следующее: логарифмическая регрессия предполагает, что

Взяв частную производную этого уравнения регрессии по P, вы получите

[11] Microsoft Research: EconML. Пакет Python для оценки эффектов гетерогенной обработки на основе машинного обучения. Https://github.com/microsoft/EconML

[12] Бах П., Черножуков В., Курц М. С., Спиндлер М .: DoubleML - объектно-ориентированная реализация двойного машинного обучения на Python, 2021. arXiv: 2104.03220