一、业务背景
1.1、为什么需要智能估价模型
1.2、什么是理想的估价模型
1.3、一些相关的尝试
二、基于贝叶斯统计和因果推断的定价方案
2.1、基础原理
2.2、利用贝叶斯统计实现sku粒度定价
2.3、使用因果推断实现商品粒度定价
三、总结
四、参考资料
转转作为一个主打手机+3C数码品类的电商平台,每天都有着数以万计的商品上架到B2C卖场,这其中既包括三方商户依托平台流量进行售卖的商品,也包括了转转自身C2B回收业务回收后进行售卖的商品。在上架的过程中,价格必然是绕不开的一个需求,如何给每一台商品制定更贴合市场供需和更匹配用户购买需求的价格策略,同时又不伤害商户及平台自身利益,是平台需要重点关注的问题。
基于转转平台当前的体量,多样的货源结构,每日以万计的上架量,不断变化的市场环境和供需结构,仅仅通过人工对商品的价格进行管控,是有一定的局限性,同时也需要大量的人力成本。通过一个智能估价模型来制定价格策略,在投入更少人力成本下,对于不同型号,不同机况的手机及3C数码做更精细化的价格运营,并且更加灵活自动地捕捉和适应外部市场和供需结构的变化,对于平台自身营收和用户的购物体验,都是非常重要的。
同大多数分类回归模型需要有所区别的是,一个理想的估价模型的衡量指标,就不再仅仅是全局的准确率。全局的准确率高的估价模型也无法避免出现模型出价远远偏离商品实际价值的情况,而即使是极少数的bad case,对业务和用户来说也是难以接受的;同时,由于业务运营人员的需要,理想的估价模型需要有别于传统深度学习模型的黑盒模式,当人工需要参与到价格策略的制定时,是能够从中找到抓手的,因为尽管模型的出价是对当前市场价格的合理预测,但业务基于对市场的考量和业务需要,需要有对价格进行整体或局部微调的能力。因此,模型需要具备更多的确定性和可控性,而不再是一个完全的黑盒。
在经典的贝叶斯理论中,我们通过观测能够得到样本X,同时我们需要进行估计的未知量为 ,对该未知变量的描述可以用一个概率分布来概括,也就是以下的公式:
其中,,, 分别为先验分布,似然函数和后验分布,而对应到我们的场景中,如果我们的价格满足于某一个数学分布,而则是该分布的参数,那么我们的问题就是可以通过计算 得到的估计值来得到解决,我们往往会采用以下两种方法来进行求解:
极大似然估计(MLE)
即找到似然函数的最大值,找到一组参数估计,使得目前观察到的样本数据的概率最大。
最大后验概率估计(MAP)
计算参数的后验分布,选择最高概率对应的作为最终估计值。
MCMC
我们可以用上述的方法试图去求解,正如我们曾经尝试的用机器学习的优化方法进行求解一样,但无论是MAP还是MLE,一方面将会带来一定的计算开销,另一方面也有适用的条件。实际上,我们可以通过对后验分布进行采样的方法,来近似拟合真实的后验分布。马尔可夫链蒙特卡洛(MCMC)的metropolis-Hastings方法被证明是一种在已知后验可靠的采样方法:
我们对后验概率 进行采样,首先指定采样的初始值,设定状态转移次数阈值,需要的样本数量
for =0 to + -1:
a. 从条件概率分布中采样得到样本,这里可以假定服从正态分布
b. 从均匀分布采样 中随机生成一个, 与接受概率进行比较,如果,则接收本次采样后的结果为新的采样值, 反之则拒绝此次采样,采样值仍然为
保留最近的个采样值作为本次采样的结果
因果推断
因果推断是基于某一事件发生的条件得出关于因果联系结论的过程。例如,对一件商品进行发券或者的行为,会不会直接促进商品由难以成交的状态即刻被买下,并且成交的原因不是因为其他因素的改变。这里需要给出一些因果推断中的关键定义:
一般性地,假设处理变量是多元的,即T=0,1,2,...,k,令T=0为参考值,其余处理值对应的处理效应可以被定义为
最大处理效应所对应的处理值就是我们所需要求解的,可以看到,因果推断相较于一般的机器学习模型所不同的是,它不聚焦于对结果变量的推断,而是分析处理变量的改变如何影响着结果变量。
因果推断的重要一环是通过随机对照试验来获得样本,该试验需要将实验对象根据处理变量的不同分到对照组和实验组当中,两个组的条件和环境保持一致,从而对结果变量进行研究。然而,当缺乏随机对照试验的环境时,就需要考虑别的方案。假设目前我们只有观测数据,传统的做法是做倾向性评分,可以对每一条观测样本的协变量,建模一个对于其处理变量的预测概率(简单的线性模型就可以满足需求),这就是倾向性评分,然后将该评分通过匹配或加权的方式,建立实验组和对照组之间更为平衡的比较基础。
这里我们引入一种基于深度网络来解决因果推断问题的模型,同时该模型不需要事先进行随机对照试验。
Dragonnet是一个处理二元因果推断的三头网络,它的工作原理如下:
如前所述,我们可以用贝叶斯的理论,结合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的值。
如前所述,我们已经实现了在sku上构建了一套价格的计算方式,它满足了我们所期望的对于价格的可控性,因为价格的分布是已知的,同时我们也可以根据对于销售节奏的预期,通过不同的成交|价格得到不同的定价。
但上述方案并没有能够很好地满足我们的另一个期望——更细粒度地在商品上进行定价。即使是同一个sku,随着质检状况、购买渠道、外观情况等等的区别,在价格上也同样需要有所区别。因此我们以贝叶斯统计在sku粒度上的定价为基础,利用Dragonnet进行商品维度的定价,该定价方案的关键步骤描述如下:
根据,,我们不难得出最大处理变量所对应的价格采样点,将此作为商品的定价。
就像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
。
更多好文:
想了解更多转转公司的业务实践,欢迎点击关注下方公众号: