因果推断与反事实预测——利用DML进行价格弹性计算(二十三)

2022-01-21 15:24:16 浏览数 (1)

文章目录

  • 1 导言
    • 1.1 价格需求弹性介绍
    • 1.2 由盒马反事实预测论文开始
    • 1.3 DML - 价格弹性预测推理步骤
  • 2 案例详解
    • 2.1 数据清理
    • 2.2 [v1版]求解价格弹性:OLS回归
    • 2.3 [v2版]求解价格弹性:Poisson回归 多元岭回归
    • 2.4 [v3版]求解价格弹性:DML
      • 2.4.1 DML数据准备 建模 求残差
      • 2.4.2 三块模型对比
      • 2.4.3 稳健性评估

1 导言

1.1 价格需求弹性介绍

经济学课程里谈到价格需求弹性,描述需求数量随商品价格的变动而变化的弹性。价格一般不直接影响需求,而是被用户决策相关的中间变量所中介作用。假设 Q 为某个商品的需求的数量,P 为该商品的价格,则计算需求的价格弹性为,

通过上式可以简单知道,价格改变 1 元比价格改变 100 元,会导致更大的需求改变。比如以 5 元的价格每日可以卖 100 单位产品,如果价格需求弹性为 -3 ,那供应商将价格提升 5%(dp /P,从 5 元-> 5.25 元),需求将下降 15%(dQ/Q ,从 100->85)。那么收入将减少 100_5-5.25_85=53.75。

如果单价降低 5%,那么收入同理将提升 46.25。如果供应商知道了产品的价格弹性,那无须反复测试,即可清楚为提升收入到底应该是提价还是降价。

1.2 由盒马反事实预测论文开始

之前在因果推断笔记——DML :Double Machine Learning案例学习(十六)这篇提到用DML求价格弹性,不过没有实操模块,本篇是在看过因果推断与反事实预测——盒马KDD2021的一篇论文(二十三) 盒马论文之后,想实操一下价格弹性这块。

先来提一下盒马这篇,在反事实预测任务上(随着折扣改变销量如何改变)的尝试半参数模型、XGBtree模型、DeepIV:

  • 第一种,半参数模型,不过这篇对动态折扣下销量的预估的半参数笔者还没深入了解,感觉用分层的价格弹性(平均折扣tree销量预测 价格弹性拟合动态折扣销量增量)来规避了核心因果推理的问题,后续要再理解一下该模型
  • 第二种,错误尝试,将折扣当作treatment,动态将treatment作为特征来预测销量
  • 第三种,deepIV,将三级品类的平均价格(treatment)作为工具变量

三者效果如图,还是semi-para好多了:

本篇是想放大价格弹性的因果计算模块,与盒马的不同:

  • 推估弹性的方法不同(本篇是用DML预测)
  • 粒度不同,本篇案例可没顾得上商品分类,一股脑子全放一起了,盒马那篇弹性系数是By 每个商品

1.3 DML - 价格弹性预测推理步骤

最好的方式,当然是直接进行 A/B 实验测试不同价格对用户的需求反应,但是价格这类的外生因素在同一产品同一阶段上,对不同用户展示不同的价格会直接损坏用户体验。因此从观察历史数据进行因果推断,但混杂因素(季节性、产品质量等)如何控制是因果推断的挑战。

这里采用 DML(Double Machine Learning) 方法进行因果推断,该方法主要解决两个问题:

  • 第一,通过正则化挑拣重要控制变量;
  • 第二,对比传统的线性回归模型,用非参数推断可以解决非线性问题。

DML 先应用机器学习算法去分别通过特征变量 X, W 拟合结果变量 Y 和处理变量 T,然后通过线性模型,使用处理变量的残差拟合出结果变量的残差。

目标是估计 ,这里的 Y 函数构成为 T 的因果作用和 X、W 的协同作用之和。

本篇整个价格弹性的推理过程:

  1. 将数据分为两部分,一部分样本选用随机森林等模型,用混杂变量预测处理变量(价格 P),得到 EP|X;另外的样本同样可选择随机森林模型,用混杂变量预测结果变量(需求量 Q),得到 EQ|X。
  2. 计算残差,得到不受混杂变量影响的价格 P 和 需求量 Q,即为
widetilde P , widetilde Q
widetilde P = P-E[P|X]
widetilde Q = Q-E[Q|X]
  1. 因此直接将widetilde P , widetilde Q 进行 log-log 回归就能得到弹性系数

    0 人点赞