| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 因果推断笔记——解析一篇因果反事实预测论文(二十三) -> 正文阅读 |
|
[人工智能]因果推断笔记——解析一篇因果反事实预测论文(二十三) |
反事实预测应该是一个非常有意思的话题,笔者也是由一篇盒马的文章出发,对这个模块先行进行简答的学习。主要参考: 盒马这篇论文的地址: 这个团队另外一篇也很给力,是非常通用的营销预测框架类,很给力了: 关联文章: 利用机器学习因果推理进行弹性定价 1 已有研究者的描述1.1 YuyangZhangFTD
这篇文章中了KDD2021,是做阿里盒马生鲜的折扣定价问题。 我个人很早之前也关注过电商商品定价的问题,之前看过比如说rue lala、一号店、zara的一些动态定价的方法,心里有些比较模糊的想法,当时想的大概是用choice-model来刻画商品互补替代效应的同时,加入价格的影响,然后在某个周期内求解最优化模型。由于种种原因,当时并没有深入思考算法细节以及针对实际问题进行实践,这类问题主要有三个比较棘手的问题:
这篇文章有很多细节&落地的工作,本文的几个主要贡献:
1.1.1 Introduction在生鲜零售的场景,商品的新鲜程度是消费者最关心的问题,很多有保质期的商品,比如说蔬菜、肉类、鸡蛋、面包,都是只有有限的销售周期,为了提供新鲜、高质量的商品,控制库存就变得十分重要,如果一个商品在过期之前还没有卖完,那么零售商就会有损失,生鲜零售商往往会采用促销的手段来最大化总利润,但却很难知道最优的价格折扣是什么。 本文中,我们考虑有两种渠道销售商品的生鲜零售商,其中一个是正常价格销售,另一个渠道是折扣商品,其中消费者可以在购满一定销售额的基础上,以一定折扣购买商品。 1.1.2 Problem Formulation
1.1.3 Counterfactual Prediction反事实预测问题的目标是在干预
d
i
d_i
di?和条件
X
=
x
i
X=x_i
X=xi?下预估需求/销量 因为历史上一个商品很少有多种折扣的数据,所以我们无法拟合单个商品的价格需求函数,为了解决这个问题,我们使用数据聚合的方式,我们把所有商品用类目信息进行聚合,然后联合学习多个商品的价格弹性。 我们假设模型结构为 E [ ln ? ( Y i / Y i nor ) ] = g ( d i ; L i , θ ) + h ( d i o , x i ) ? g ( d i o ; L i , θ ) \mathbb{E}\big[\ln(Y_i/Y_i^\text{nor})\big] =g(d_i;L_i,\theta) + h(d_i^\text{o},x_i) - g(d_i^\text{o};L_i,\theta) E[ln(Yi?/Yinor?)]=g(di?;Li?,θ)+h(dio?,xi?)?g(dio?;Li?,θ) 其中:
对于价格弹性,我们提出一种双log结构的nested模型: g ( d i ; L i , θ ) = E [ ln ? ( Y i / Y i nor ) ] = ( θ 1 + θ 2 T L i ) ln ? d i + c g(d_i;L_i,\theta)=\mathbb{E}\big[\ln(Y_i/Y_i^\text{nor})\big]=(\theta_1+\theta_2^\mathsf{T}L_i)\ln d_i +c g(di?;Li?,θ)=E[ln(Yi?/Yinor?)]=(θ1?+θ2T?Li?)lndi?+c 其中 θ 2 ∈ R m \theta_2\in\mathbb{R}^m θ2?∈Rm, θ = [ θ 1 , θ 2 T ] T \theta=[\theta_1, \theta_2^\mathsf{T}]^\mathsf{T} θ=[θ1?,θ2T?]T, c c c为截距参数, L i L_i Li?为由三级one-hot变量组成 L i = [ 0 , ? ? , 1 , 0 ? category?1 , 0 , 1 , ? ? , 0 ? category?2 , 0 , ? ? , 0 , 1 ? category?3 , ] T L_i=[ \underbrace{0,\cdots,1,0}_\text{category 1}, \underbrace{0,1,\cdots,0}_\text{category 2}, \underbrace{0,\cdots,0,1}_\text{category 3}, ]^\mathsf{T} Li?=[category?1 0,?,1,0??,category?2 0,1,?,0??,category?3 0,?,0,1??,]T 通过指数转换,模型可以写作: Y i = Y i nor e c d i θ 1 + θ 2 T L i , ? i Y_i=Y_i^\text{nor} e^c d_i^{\theta_1 +\theta_2^\mathsf{T}L_i},\forall i Yi?=Yinor?ecdiθ1?+θ2T?Li??,?i 其中 θ 1 + θ 2 T L i \theta_1 +\theta_2^\mathsf{T}L_i θ1?+θ2T?Li?就是价格弹性,所以每个独立SKU的价格弹性是由类别的价格弹性组成的。 为了顾及价格弹性,我们用所有样本最小化均方误差来拟合模型,在现实电商场景中,一个更好的方式是在线实时更新参数: min ? θ , c ∑ i = 1 N ∑ j = 1 t τ t ? j ∥ ln ? Y i , j Y i , j nor ? θ T L ^ i ln ? d i , j ? c ∥ 2 2 + λ ∥ θ ∥ 2 2 \underset{\theta,c}{\min} \sum_{i=1}^N\sum_{j=1}^t\tau^{t-j} \|\ln\frac{Y_{i,j}}{Y_{i,j}^\text{nor}} - \theta^\mathsf{T}\hat{L}_i \ln d_{i,j} - c\|^2_2 +\lambda\|\theta\|^2_2 θ,cmin?∑i=1N?∑j=1t?τt?j∥lnYi,jnor?Yi,j???θTL^i?lndi,j??c∥22?+λ∥θ∥22? 其中 λ > 0 \lambda>0 λ>0是正则系数, 0 < τ ≤ 1 0<\tau\leq1 0<τ≤1为忘记因子,为了避免较遥远历史数据的影响。 最终的预测模型为 ln ? Y i , t ( d i ) = θ ^ t T L i ( ln ? d i ? ln ? d i , t o ) + ln ? Y i , t o \ln Y_{i,t}(d_i)=\hat{\theta}_t^\mathsf{T}L_i (\ln d_i -\ln d_{i,t}^\mathsf{o}) + \ln Y_{i,t}^\mathsf{o} lnYi,t?(di?)=θ^tT?Li?(lndi??lndi,to?)+lnYi,to? 此处只是建模了商品的价格弹性,忽略了商品之间的互补替代效应。 1.1.4 excample of problem商品价格为 p 0 p_0 p0?,这个价格是常规渠道的销售价格,且价格固定,用 d t d_t dt?表示商品在周期 t t t时的折扣,对应的价格为 p t = p 0 d t p_t=p_0d_t pt?=p0?dt?,我们对于常规渠道的销量预测为 Z j , t , ? j , t Z_{j,t},\forall j,t Zj,t?,?j,t,反事实的销量预测为 Y j t ( d t ) Y_{jt}(d_t) Yjt?(dt?),同时考虑到最后浪费的损失,优化问题为: max ? d 1 , ? ? , d T ∑ j ∈ J ( ∑ t = 1 T j p 0 d t Y j t ( d t ) ? w j [ B j ? ∑ t = 1 T J ( Y j t ( d t ) + Z j t ) ] + ) s.t. ∑ t = 1 T j ( Y j t ( d t ) + Z j t ) ≤ B j ? j ∈ J l b j t ≤ p t ≤ u b j t ? t = 1 , … , T j , j ∈ J \begin{aligned} \underset{d_1,\cdots,d_T}{\max} & \sum_{j\in\mathcal{J}}\bigg( \sum_{t=1}^{T_j} p_0d_tY_{jt}(d_t)-w_j\big[ B_j-\sum_{t=1}^{T_J}\big(Y_{jt}(d_t)+Z_{jt}\big) \big]^+ \bigg) \\ \text{s.t.} & \sum_{t=1}^{T_j}\big( Y_{jt}(d_t)+Z_{jt} \big) \leq B_j \quad \forall j\in \mathcal{J} \\ &lb_{jt} \leq p_t \leq ub_{jt} \quad \forall t=1,\dots,T_j,j\in \mathcal{J} \end{aligned} d1?,?,dT?max?s.t.?j∈J∑?(t=1∑Tj??p0?dt?Yjt?(dt?)?wj?[Bj??t=1∑TJ??(Yjt?(dt?)+Zjt?)]+)t=1∑Tj??(Yjt?(dt?)+Zjt?)≤Bj??j∈Jlbjt?≤pt?≤ubjt??t=1,…,Tj?,j∈J? 其中 w j w_j wj?是浪费损失的权重, [ ? ] + [\cdot]^+ [?]+为非负运算符, l b j t lb_{jt} lbjt?和 u b j t ub_{jt} ubjt?是折扣最大和最小的上下限制,因为 Z j t Z_{jt} Zjt?和 B j B_j Bj?是独立于决策变量的,所以可以简化上述问题为: max ? d 1 , ? ? , d T ∑ j ∈ J ∑ t = 1 T j ( p 0 d t + w j ) Y j t ( d t ) s.t. ∑ t = 1 T j ( Y j t ( d t ) + Z j t ) ≤ B j ? j ∈ J l b j t ≤ p t ≤ u b j t ? t = 1 , … , T j , j ∈ J \begin{aligned} \underset{d_1,\cdots,d_T}{\max} & \sum_{j\in\mathcal{J}} \sum_{t=1}^{T_j} \bigg( p_0d_t+w_j \bigg) Y_{jt}(d_t) \\ \text{s.t.} & \sum_{t=1}^{T_j}\big( Y_{jt}(d_t)+Z_{jt} \big) \leq B_j \quad \forall j\in \mathcal{J} \\ &lb_{jt} \leq p_t \leq ub_{jt} \quad \forall t=1,\dots,T_j,j\in \mathcal{J} \end{aligned} d1?,?,dT?max?s.t.?j∈J∑?t=1∑Tj??(p0?dt?+wj?)Yjt?(dt?)t=1∑Tj??(Yjt?(dt?)+Zjt?)≤Bj??j∈Jlbjt?≤pt?≤ubjt??t=1,…,Tj?,j∈J? 对于上面这个问题,我们并不准备直接求解,考虑到可以打的折扣是是有限的,我们将这个问题转化成离散优化问题。虽然模型已经给出了 Y j t ( d t ) Y_{jt}(d_t) Yjt?(dt?)和 Z j t Z_{jt} Zjt?的预估,但是仍会有随机的误差,所以我们需要考虑上述问题的不确定性,我们用MDP来建模整个决策过程。 定义每个门店
j
j
j在常规渠道和折扣渠道的真实销量为
a
j
t
y
a^y_{jt}
ajty?和
a
j
t
z
a^z_{jt}
ajtz?,用
s
j
t
s_{jt}
sjt?表示商品
t
t
t时刻在门店
j
j
j的库存: 其中
s
j
t
s_{jt}
sjt?是个单调递减的序列,候选折扣集合 为了建模销量的不确定性,我们从历史数据中发现,大部分情况下销量服从泊松分布,期望参数为 Y j t ( d t ) Y_{jt}(d_t) Yjt?(dt?)和 Z j t Z_{jt} Zjt?(此处假设 Y j t ( d t ) Y_{jt}(d_t) Yjt?(dt?)和 Z j t Z_{jt} Zjt?是 a j t y a^y_{jt} ajty?和 a j t z a^z_{jt} ajtz?的无偏估计) 定义 a j t = a j t y + a j t z a_{jt}=a^y_{jt}+a^z_{jt} ajt?=ajty?+ajtz?,销量不会高于库存,所以我们定义状态转移矩阵 P ( s j , t + 1 ∣ s j , t , d t ) = { Poi ( s j , t ? s j , t + 1 ∣ Y j t ( d , t ) + Z j t ) 0 < s j , t + 1 ≤ s j , t 1 ? Q ( s j , t ? 1 , Y j t ( d t ) + Z j t ) s j , t + 1 = 0 \begin{aligned} P(s_{j,t+1}|s_{j,t},d_t)= \begin{cases} \text{Poi}\big(s_{j,t}-s_{j,t+1}|Y_{jt}(d,t)+Z_{jt}\big) & 0<s_{j,t+1} \leq s_{j,t} \\ 1-Q(s_{j,t}-1,Y_{jt}(dt)+Z_{jt}) & s_{j,t+1}=0 \end{cases} \end{aligned} P(sj,t+1?∣sj,t?,dt?)={Poi(sj,t??sj,t+1?∣Yjt?(d,t)+Zjt?)1?Q(sj,t??1,Yjt?(dt)+Zjt?)?0<sj,t+1?≤sj,t?sj,t+1?=0?? 期望状态转移后的奖励为 R ( s j , t , d t , s j , t + 1 ) = ( p 0 d t , + w j ) [ s j , t ? s j , t + 1 ? Z j t ] + R(s_{j,t},d_t,s_{j,t+1})=(p_0d_t,+w_j)[s_{j,t}-s_{j,t+1}-Z_{jt}]^+ R(sj,t?,dt?,sj,t+1?)=(p0?dt?,+wj?)[sj,t??sj,t+1??Zjt?]+ 所以多阶段的优化问题变成一个选择策略 π ( ? ) \pi(\cdot) π(?)来最大化累计奖励的问题 ∑ j ∈ J ∑ t = 1 T j R ( s j , t , d t , s j , t + 1 ) , d t = π ( s t ) \sum_{j\in\mathcal{J}}\sum_{t=1}^{T_j}R(s_{j,t},d_t,s_{j,t+1}), d_t=\pi(s_t) ∑j∈J?∑t=1Tj??R(sj,t?,dt?,sj,t+1?),dt?=π(st?) 为了求解这个MDP的问题,我们提出了一种两阶段的算法,分开反向求解和联合优化两步: 对于每个门店,单独进行更新 联合优化,对于所有店铺联合优化,并在单个阶段求最优 所以我们可以得到最优定价
p
1
?
=
p
0
d
1
?
p_1^*=p_0d_1^*
p1??=p0?d1??,因为这个算法每天会重新更新训练,所以只需要每天重新计算第一阶段的最优值。 1.1.5 Experiment文中对比了不同模型:Xgb、DeepIV和提出的结构化的回归模型: 1.1.6 train _ price-sale curve1.1.7 ab测试1.1.8 一些想法论文内容部分讲完了,总体是一篇很踏实的文章,一个业务有接近20%的GMV提升,可以说是非常“有效”的解决了问题,但这篇文章仍然有些缺点,或者说没有放在论文里的点,再回顾一下最开始的三个问题:
1.2 知乎:斑马KDD2021论文推荐:盒马-融合反事实预测与MDP模型的清滞销定价算法 研究问题:如何动态决策滞销商品(在保质期内无法以原价销售完)的折扣力度以获取最大收益?滞销定价策略通过在商品生命周期的不同阶段动态调整折扣额以实现库存成本的降低和 GMV 收益的提升。滞销品定价所面临的核心问题在于商品历史价格点稀疏且噪声较大导致难以确定合适的价格。 产品形态:盒马App的商品销售页面有2种,一种是商品原价的正常频道页,一种是满x元换购折扣商品的降价频道页。 1.2.1 整体框架和技术亮点整体思路/框架:将滞销商品定价流程拆解为两步,
技术亮点: 1.2.2 折扣和销量之间的因果建模总体ML建模思路:基础销量预估模型+价格弹性模型
基础销量预估模型: 反事实预估: 2 个人笔记:特定折扣下的反事实销量预测2.1 核心式子1:整体方程结构
函数
h
(
d
i
o
,
x
i
)
h(d_i^\text{o},x_i)
h(dio?,xi?)为非参数预测模型,用于预测某个商品平均折扣
d
i
o
d_i^\text{o}
dio?下的销量,
2.2 核心式子2:销量预测模块
同时为什么有
ln
?
(
Y
i
/
Y
i
nor
)
\ln(Y_i/Y_i^\text{nor})
ln(Yi?/Yinor?)是一种标准化的手法,消除不同商品之间销量的差异; 2.3 核心式子三:价格弹性
其来自双log结构的nested模型
将其转化为指数形态: Y i = Y i nor e c d i θ 1 + θ 2 T L i , ? i Y_i=Y_i^\text{nor} e^c d_i^{\theta_1 +\theta_2^\mathsf{T}L_i},\forall i Yi?=Yinor?ecdiθ1?+θ2T?Li??,?i 其中,来解读一下这个式子,总销量 = 原价销量 * 销量变化量(价格弹性-折扣):
2.4 反事实需求销量预测
可以得到最终的反事实需求预测模型为 ln ? Y i , t ( d i ) = θ ^ t T L i ( ln ? d i ? ln ? d i , t o ) + ln ? Y i , t o \ln Y_{i,t}(d_i)=\hat{\theta}_t^\mathsf{T}L_i (\ln d_i -\ln d_{i,t}^\mathsf{o}) + \ln Y_{i,t}^\mathsf{o} lnYi,t?(di?)=θ^tT?Li?(lndi??lndi,to?)+lnYi,to? 这里解决了【2.2 核心式子2:销量预测模块】提到的问题,可以自由改变折扣来进行销量预测。 2.5 动态优化(未完待续)
基于反事实预估得到的销量不可避免存在一定的不确定性(ML中存在偏差和方差),为了提高优化算法的鲁棒性,需要将需求的不确定性考虑进去。基于MDP提出了一种多阶段联合价格优化方法。 max ? d 1 , ? ? , d T ∑ j ∈ J ( ∑ t = 1 T j p 0 d t Y j t ( d t ) ? w j [ B j ? ∑ t = 1 T J ( Y j t ( d t ) + Z j t ) ] + ) s.t. ∑ t = 1 T j ( Y j t ( d t ) + Z j t ) ≤ B j ? j ∈ J l b j t ≤ p t ≤ u b j t ? t = 1 , … , T j , j ∈ J \begin{aligned} \underset{d_1,\cdots,d_T}{\max} & \sum_{j\in\mathcal{J}}\bigg( \sum_{t=1}^{T_j} p_0d_tY_{jt}(d_t)-w_j\big[ B_j-\sum_{t=1}^{T_J}\big(Y_{jt}(d_t)+Z_{jt}\big) \big]^+ \bigg) \\ \text{s.t.} & \sum_{t=1}^{T_j}\big( Y_{jt}(d_t)+Z_{jt} \big) \leq B_j \quad \forall j\in \mathcal{J} \\ &lb_{jt} \leq p_t \leq ub_{jt} \quad \forall t=1,\dots,T_j,j\in \mathcal{J} \end{aligned} d1?,?,dT?max?s.t.?j∈J∑?(t=1∑Tj??p0?dt?Yjt?(dt?)?wj?[Bj??t=1∑TJ??(Yjt?(dt?)+Zjt?)]+)t=1∑Tj??(Yjt?(dt?)+Zjt?)≤Bj??j∈Jlbjt?≤pt?≤ubjt??t=1,…,Tj?,j∈J? 来解读一下:
对于上面这个问题,我们并不准备直接求解,考虑到可以打的折扣是是有限的,我们将这个问题转化成离散优化问题。 到此笔者就没仔细往后看,因为涉及到MDP,可能是后面的功能,
2.6 实验对比
跟预测任务一样,评估模型的指标:RMAE,以当天的实际折扣来预测第二天降价渠道的销售 本模型是半参数模型,上图是顺着使用数据的比例增加三个模型的RMAE,
2.7 文章的一些启发该文章有提到: 反事实预测和优化框架是相当通用的,可以应用于电子商务平台的其他场景:
在上述三个例子中,处理分别为价格、优惠券和补偿支付,结果分别为产品销售、用户转化率和满意度,优化目标分别为总体利润、ROI和满意度。为了解决这些问题,我们首先基于半参数模型建立了治疗与结果之间的因果关系,然后利用预算或库存约束对目标进行优化。值得注意的是,我们在之前的工作中已经为第二种情况提出了一个营销预算分配框架 在营销场景中,该团队之前的一篇文章我也学习过,都是非常通用的营销预测框架类,很给力了: 特征工程,四大类:
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 22:45:16- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |