贝叶斯统计和因果推断在转转估价中的落地实践


  • 一、业务背景

    • 1.1、为什么需要智能估价模型

    • 1.2、什么是理想的估价模型

    • 1.3、一些相关的尝试

  • 二、基于贝叶斯统计和因果推断的定价方案

    • 2.1、基础原理

    • 2.2、利用贝叶斯统计实现sku粒度定价

    • 2.3、使用因果推断实现商品粒度定价

  • 三、总结

  • 四、参考资料


一、业务背景

转转作为一个主打手机+3C数码品类的电商平台,每天都有着数以万计的商品上架到B2C卖场,这其中既包括三方商户依托平台流量进行售卖的商品,也包括了转转自身C2B回收业务回收后进行售卖的商品。在上架的过程中,价格必然是绕不开的一个需求,如何给每一台商品制定更贴合市场供需和更匹配用户购买需求的价格策略,同时又不伤害商户及平台自身利益,是平台需要重点关注的问题。

1.1、为什么需要智能估价模型

基于转转平台当前的体量,多样的货源结构,每日以万计的上架量,不断变化的市场环境和供需结构,仅仅通过人工对商品的价格进行管控,是有一定的局限性,同时也需要大量的人力成本。通过一个智能估价模型来制定价格策略,在投入更少人力成本下,对于不同型号,不同机况的手机及3C数码做更精细化的价格运营,并且更加灵活自动地捕捉和适应外部市场和供需结构的变化,对于平台自身营收和用户的购物体验,都是非常重要的。

1.2、什么是理想的估价模型

同大多数分类回归模型需要有所区别的是,一个理想的估价模型的衡量指标,就不再仅仅是全局的准确率。全局的准确率高的估价模型也无法避免出现模型出价远远偏离商品实际价值的情况,而即使是极少数的bad case,对业务和用户来说也是难以接受的;同时,由于业务运营人员的需要,理想的估价模型需要有别于传统深度学习模型的黑盒模式,当人工需要参与到价格策略的制定时,是能够从中找到抓手的,因为尽管模型的出价是对当前市场价格的合理预测,但业务基于对市场的考量和业务需要,需要有对价格进行整体或局部微调的能力。因此,模型需要具备更多的确定性和可控性,而不再是一个完全的黑盒。

1.3、一些相关的尝试

  1. 尽管通过人工对每一台商品进行定价具有极大的难度,在但在一定粒度的属性上进行人工定价,比如对同一型号,运存,成色的商品,以同样的价格进行上架是可行的。该方案可控性高,可以一定程度避免bad case的产生,但却无法进行更细粒度的定价,并且价格的调整和维护带来更高的人力成本。
  2. 利用深度模型进行回归,以历史的成交样本进行训练,成交价为训练的目标,将商品的属性、质检信息、历史的成交统计信息作为特征。该方案尽管能够精细地对每一个商品进行估价,但是作为一个黑盒的模型,无法避免bad case的出现。
  3. 在方案1基础上进行调整,同样是人工定价方案,但仅仅只对部分的sku进行定价,同时维护一套不同商品属性之间的价格差,两者结合对所有的sku进行定价,尽管商品的价格是波动的,但不同属性之间的价格差相对稳定。该方案相对来说降低了人力维护的成本,但与方案一一样,同样无法更细粒度定价。

二、基于贝叶斯统计和因果推断的定价方案

2.1、基础原理

在经典的贝叶斯理论中,我们通过观测能够得到样本X,同时我们需要进行估计的未知量为 ,对该未知变量的描述可以用一个概率分布来概括,也就是以下的公式:

其中, 分别为先验分布,似然函数和后验分布,而对应到我们的场景中,如果我们的价格满足于某一个数学分布,而则是该分布的参数,那么我们的问题就是可以通过计算 得到的估计值来得到解决,我们往往会采用以下两种方法来进行求解:

极大似然估计(MLE)

即找到似然函数的最大值,找到一组参数估计,使得目前观察到的样本数据的概率最大。

最大后验概率估计(MAP)

计算参数的后验分布,选择最高概率对应的作为最终估计值。

MCMC

我们可以用上述的方法试图去求解,正如我们曾经尝试的用机器学习的优化方法进行求解一样,但无论是MAP还是MLE,一方面将会带来一定的计算开销,另一方面也有适用的条件。实际上,我们可以通过对后验分布进行采样的方法,来近似拟合真实的后验分布。马尔可夫链蒙特卡洛(MCMC)的metropolis-Hastings方法被证明是一种在已知后验可靠的采样方法:

  1. 我们对后验概率 进行采样,首先指定采样的初始值,设定状态转移次数阈值,需要的样本数量

  2. for =0 to + -1:

    a. 从条件概率分布中采样得到样本,这里可以假定服从正态分布

    b. 从均匀分布采样 中随机生成一个, 与接受概率进行比较,如果,则接收本次采样后的结果为新的采样值, 反之则拒绝此次采样,采样值仍然为

  3. 保留最近的个采样值作为本次采样的结果

因果推断

因果推断是基于某一事件发生的条件得出关于因果联系结论的过程。例如,对一件商品进行发券或者的行为,会不会直接促进商品由难以成交的状态即刻被买下,并且成交的原因不是因为其他因素的改变。这里需要给出一些因果推断中的关键定义:

  1. 处理变量(T):即受策略开发者控制的变量,上面案例中商品是否被投放优惠券以及投放优惠券的金额,可以当做处理变量。
  2. 响应变量(Y):即希望优化的目标变量,上面案例中商品是否成交可以当做响应变量。
  3. 处理效应():即处理变量带来的增益(uplift),上面案例中是优惠券带来的商品转化的增量。
  4. 协变量(X): 影响处理效应的关键特征(季节,流量)

一般性地,假设处理变量是多元的,即T=0,1,2,...,k,令T=0为参考值,其余处理值对应的处理效应可以被定义为

最大处理效应所对应的处理值就是我们所需要求解的,可以看到,因果推断相较于一般的机器学习模型所不同的是,它不聚焦于对结果变量的推断,而是分析处理变量的改变如何影响着结果变量。
因果推断的重要一环是通过随机对照试验来获得样本,该试验需要将实验对象根据处理变量的不同分到对照组和实验组当中,两个组的条件和环境保持一致,从而对结果变量进行研究。然而,当缺乏随机对照试验的环境时,就需要考虑别的方案。假设目前我们只有观测数据,传统的做法是做倾向性评分,可以对每一条观测样本的协变量,建模一个对于其处理变量的预测概率(简单的线性模型就可以满足需求),这就是倾向性评分,然后将该评分通过匹配或加权的方式,建立实验组和对照组之间更为平衡的比较基础。
这里我们引入一种基于深度网络来解决因果推断问题的模型,同时该模型不需要事先进行随机对照试验。

Dragonnet是一个处理二元因果推断的三头网络,它的工作原理如下:

  1. 通过来训练表征协变量X,的网络参数是共享的。
  2. 基于的输出来预测T和Y。Q分别由一个双层的全连接网络构成,T=0的样本只通过来训练,而T=1的样本只通过来训练,一条样本只会通过其中的一头,且只更新对应的网络参数。作为倾向性评分网络,由一个简单的sigmoid函数构成,其功能就是通过协变量来训练得到倾向性得分
  3. 损失函数为

2.2、利用贝叶斯统计实现sku粒度定价

如前所述,我们可以用贝叶斯的理论,结合MCMC的方法进行采样,构建出一套sku粒度的估价模型。在我们的方案中,我们将相同机型、容量、成色的机器,认为是同一个sku。在之前使用机器学习模型进行回归估价的方案中,实际上我们所求解的是这样的一个问题:

其中 y是我们所需要估计的价格,x可以认为是需要估价的商品的一系列特征,而 则是模型的参数,我们可以通过训练得到得到 以及其对应的 ,但这是一个黑盒的过程,我们并不能直观去控制 是一个怎样的函数,尤其是当我们采用的是深度神经网络等高阶非线性的模型的情况下。反映在实际的场景中就是,当一个商品输入到 中作为入参,尽管通过训练,我们在测试样本集上得到了非常理想的MSE,但对于 输出的值域范围我们是难以把控的。
但是如果我们能够根据先验的知识定义出 的概率模型,那么我们的问题显然就能得到解决。假设商品的特征x和y 服从某种已知的概率分布,而该分布的概率密度函数也是已知的,那么我们只需要利用刚刚介绍的MCMC的方法通过采样得到概率分布的参数。由于 是我们预先给定的,显然我们能够清楚地知道模型的边界和可能出现的风险。
但是需要构建出 的概率模型,并不现实,探究商品的海量特征和价格之间的分布,显然需要花费更大的精力。因此,不妨我们转换一下思路,我们或许可以探索价格与成交之间的关系,因为对于价格和成交,其实我们是具备一些先验的认知的。很显然,刚发布的iphone 15系列手机绝对不可能以1000元的价格上架,那样平台的库存必然立马就告罄了,同样,一个高于新机的价格,同样会使得商品无法被成交,价格的波动是在一定范围内波动,且价格越高,越难以促进成交,价格越低,则越容易促进成交。所以我们可以将问题转变为求解以下的概率:

成交价格

我们以iPhone 12 Pro 128GB 95新为例,下面是该sku下价格与成交之前的关系:

在上图中,我们选用了最近一周的成交的数据,1代表成交,0代表未成交,我们可以看到,当商品的价格低于2900之后,只有成交的样本,而当商品价格高于3800,所有的样本都是未成交样本。在中间密集区域以外的部分,则是价格越高,成交的样本越少,而价格越低,成交的样本越多,中间的密集区域,是大部分样本集中的部分,也就是市场价格主要所出的位置,符合我们期望的价格极有可能落在这个区域。
观察这个数据分布,我们可以联想到其与logistic函数的曲线具有一定的相似性,如下图所示:

因此,我们不妨假设价格与成交之间的关系服从Logistic分布,即
成交|价格价格
其中,

我们对样本中的价格进行归一化的处理,并且上采样明显高于低于该机型市场价位的价格样本,分别打上对应的y,价格过高则为未成交,价格过低则为成交,此举是为了更好地拟合我们的分布,因为观测数据中并不一定会有这些不合理的定价,而为了让我们的价格分布中能考虑到这些bad case并防止它们的发生,指定,进行MCMC采样。

如上图所看到的那样,参数都成功得到了收敛,我们选择采样点的均值来作为最终两个参数的估计值, 成交|价格与价格的分布如下:

根据成交|价格的计算方法,我们再对价格进行计算:

价格成交|价格

注意在这个公式中,除了已经通过采样得到的之外,成交|价格也成为了确定的变量,它的取值可以通过业务的自身考虑进行给定,当库存堆积,需要以更快的流速来清理库存,那么成交|价格可以被指定为一个大于0.5的值;当库存告罄,市场需求增加,需要减慢销售的速率的时候,成交|价格可以被指定为一个小于0.5的值。

2.3、使用因果推断实现商品粒度定价

如前所述,我们已经实现了在sku上构建了一套价格的计算方式,它满足了我们所期望的对于价格的可控性,因为价格的分布是已知的,同时我们也可以根据对于销售节奏的预期,通过不同的成交|价格得到不同的定价。
但上述方案并没有能够很好地满足我们的另一个期望——更细粒度地在商品上进行定价。即使是同一个sku,随着质检状况、购买渠道、外观情况等等的区别,在价格上也同样需要有所区别。因此我们以贝叶斯统计在sku粒度上的定价为基础,利用Dragonnet进行商品维度的定价,该定价方案的关键步骤描述如下:

  1. 圈选出所有的需要估价的sku,使用2.2中贝叶斯统计的方法构建每个sku下价格与成交的概率模型,并且令成交|价格,计算出每个sku对应的价格
  2. 范围内采样M个价格,将作为参照值,不同的M个价格作为不同的处理值。我们利用商品成交/未成交数据作为训练样本,样本包含了商品的一系列特征,同时将商品价格转化为与其数值上最为接近的处理变量。
  3. 建模Dragonnet模型,此时需要对网络结构进行修改,因为我们的问题已经不再是二元的问题,因此除了继续保留来进行倾向性评分,我们还需要搭建M+1头网络,它们分别通过参照值和不同处理值的样本来进行更新。同样,我们以样本是否成交来作为结果变量y,此时我们的损失函数为
  1. 训练完成后,当我们需要对商品进行估价时,首先我们需要寻找到处理效应最大的处理变量

根据,我们不难得出最大处理变量所对应的价格采样点,将此作为商品的定价。
就像2.2中所描述的,我们可以根据对销售速度的期望的不同,来给定成交|价格的取值,从而得到期望的价格参照值。更重要的是,通过上述因果推断的方案,我们通过规定不同的价格采样点作为处理变量,寻求成交增益最大的采样点,实现了在商品维度上更细粒度的定价。同时,由于处理变量是围绕价格参照值周围进行采样,而不像一般的深度模型是在一个不受限制的值域上进行价格推断,因此价格更为可控,更大限度地避免了异常价格的出现。

三、总结

第一节中,我们介绍了商品估价的业务背景,关键问题,和对其应用于转转平台的要求,同时也介绍了当前业务为实现一套有效的商品估价机制所进行的一些尝试。

在第二节中,我们详细的介绍了贝叶斯统计和因果推断的相关原理,并将其与转转平台所面临的在商品估价上的关键问题相结合,在此之上提出了两种不同粒度的估价方案。

四、参考资料

【1】最大似然估计和最大后验估计:https://zhuanlan.zhihu.com/p/379591600
【2】PyMC3概率编程及模型搭建,入门篇:https://zhuanlan.zhihu.com/p/515432470
【3】Markov Chain Monte Carlo in Python:https://towardsdatascience.com/markov-chain-monte-carlo-in-python-44f7e609be98
【4】广义因果森林的构造以及在在线交易市场的应用:https://mp.weixin.qq.com/s/Jaue3mxbayaMUvFc3MrNdw
【5】Shi, C., Blei, D. M., & Veitch, V. NeurIPS (2019). Adapting Neural Networks for the Estimation of Treatment Effects

关于作者

樊汉勤,转转算法工程师,多年搜索、推荐算法开发经验,目前负责转转价格策略的算法开发工作,微信号:fanhanqin

更多好文:

强化学习在推荐系统的应用

基于ChatGPT的智能客服助手

解析ChatGPT背后的技术演进

解决GC毛刺问题——转转搜索推荐服务JDK17升级实践

“第三只眼”之转转一体化监控系统

想了解更多转转公司的业务实践,欢迎点击关注下方公众号:



相关推荐

  • 凭一己之力在六个平台之上开发一款游戏:孰优孰劣?
  • 大模型时代,得开发者生态得天下!
  • 底层全部重构,小米澎湃OS完整系统架构公布
  • “经销茅台”的陕西样本:华鼎老板1.39亿布局“10支私募”
  • 其实宋向前和李小加是一种人
  • 美国命令英伟达立即停止对华销售AI芯片,BAT 50亿美元芯片还能交付吗?
  • 别再吹 GPT-4V 了!连北京烤鸭都不认识,你敢信??
  • 为什么架构设计总没法一劳永逸?
  • 揭秘阿里语雀生死时刻:创始人离职,团队骤减,险被钉钉合并
  • 关于“语雀故障” 的思考:可监控!可灰度!可回滚!
  • Spotify 如何切换到 Bazel 进行 iOS App 构建
  • 抗住百万级流量并发,快手 + 阿里云混合云弹性调度系统的建设之路
  • 抖音大型直播画质优化实践:“62 亿人次观看的亚运会直播”有哪些创新领域
  • 语雀突发 P0 级事故!宕机 8 小时被网友怒喷,运维又背锅?
  • 快收藏!!Google内部Python代码风格指南(中文版)
  • 36个顶级数据分析方法与模型!
  • 内推|【企知道】自然语言开发工程师
  • 大规模数据分析避坑指南-实战篇
  • 探索大模型技术在自智网络方向的应用前景(推荐收藏)
  • 与创新者同行,Doris Summit Asia 2023 线下技术峰会圆满落幕!