基于高斯过程与批量汤普森抽样的动态定价策略

2022-08-19 08:33毕文杰
计算机工程与应用 2022年16期
关键词:汤普森批量高斯

毕文杰,王 荣

中南大学 商学院,长沙 410083

随着电子商务和信息技术的飞速发展,用户和商家可以接触到的信息发生了巨大的变化。以酒店住房为例,用户可以零成本地通过线上平台(如某团、某程)选择符合自己需求的酒店及房间,商家则可以通过市场上各房型的特征、销售情况及用户行为数据进行需求预测,通过在线学习的方式进行价格策略的调整以更好地实现供需平衡,在提升产品销量的同时提升顾客的服务体验。在产品同质化日趋严重且用户可以接触到大量产品信息,价格敏感型用户的需求快速转变的时代,如何灵活地进行产品组合和利用市场信息快速制定价格策略给商家带来了巨大的挑战。Ferreira 等的研究表明,基于分析的价格决策可以带来显著的收益[1]。因此,对于如酒店、出行以及快消品(牛奶、面包等食品)等同质化严重、可替代性强、可选择性多的产品,虽然缺乏短期的价格需求函数,商家也必须进行定价优化来提升自己的竞争力,这就要求商家提升其对产品和用户行为数据的信息处理能力,在短期内利用最多的相关数据最快地制定产品价格策略。

近年来针对同类型产品的研究主要以模型为主,李丽萍等通过引入竞争因素的Bass 拓展模型研究了双寡头竞争结构下同质产品的动态定价问题[2]。毕文杰等构建了两阶段动态定价模型,解决了需求不确定下在线平台销售两种可替代的有限库存易逝品的问题[3]。Ceryan采用多周期随机动态规划模型来考虑一家销售两种可替代性产品的公司的定价行为,最终得出针对常规产品的最佳补货决策以及针对季节性产品的动态定价和初始数量选择决策[4]。赵天等应用Hotelling模型构造了两个销售商销售同种具有易逝性可替代产品的双周期动态定价模型[5]。

国内外虽然已有不少研究同质产品的方法,但仍停留在传统的定价方法及模型上,并未应用数据驱动的方法来进行定价。不同于以往假设需求函数的定价研究,Besbes和Zeevi首次针对需求未知的问题提出将销售期划分为探索和利用两个阶段,并在此基础上于2012 年将需求学习和定价以优化收入之间的权衡研究扩展到全网络的收益管理问题[6-7]。利用-探索权衡也即在探索阶段进行价格实验来观察价格和平均需求率之间的基本函数关系,在利用阶段根据前期观察到的需求函数来制定价格,最终在有限的销售周期内动态调整价格以最大化预期收益。多摇臂算法是近年强化学习中的学术研究热点,该算法能在有限时间做出决策,有效解决利用-探索权衡问题[8]。国内近年也有学者对多摇臂算法在定价上的应用进行了研究,毕文杰等考虑在线零售商在需求未知情况下的定价问题,利用消费者的类别信息和需求曲线的单调性提出了UCB1-PI-M 算法[9]。乔勋双等研究了需求不确定性情况下的考虑时变奖励的UCB算法在定价上的应用[10]。

汤普森抽样是一个基于贝叶斯主义的后验可信区间的随机算法,能有效解决多摇臂问题。Ferreira 等考虑需求函数未知时基于价格的网络收益管理问题,提出了一种基于汤普森抽样的动态定价算法以解决库存约束条件下利用-探索的平衡[11]。Ringbeck 等提出一种基于多摇臂的非参数需求学习方法,即结合高斯过程回归和汤普森抽样以学习价格和需求之间的任意函数关系,该算法的性能只取决于产品数量,在规模与价格向量的数量上具有更大的伸缩性[12]。汤普森抽样虽然在后悔上界上较UCB1(upper bound confidence 1)、MOSS(minimax optimal strategy in the stochastic case)等其他多摇臂算法表现得更好、更简单,但其无法直接拓展到分布式并行运算中,因此有较多学者探索了该算法结合并行贝叶斯优化以拓展并行测量问题的可能。Hernández-Lobato等为解决贝叶斯优化方法不能扩展到大量的并行测量的问题,提出了一个基于汤普森采样的并行和分布式实现的可扩展解决方案(parallel distributed Thompson sampling,PDTS)[13]。Kandasamy等结合并行贝叶斯优化在给定时段内能比顺序优化策略实现更多次评估的优点,在顺序TS(Thompson sampling)算法的基础上提出了并行汤普森抽样的算法:同步并行汤普森抽样(synchronous parallel Thompson sampling,Syn TS)、异步并行汤普森抽样(asynchronous parallel Thompson sampling,Asy TS)[14]。Alessandro等提出了一种基于在随机流程中采样多个采集函数的想法的批处理贝叶斯优化技术,采集函数-汤普森采样算法(acquisition Thompson sampling algorithm,ATS),与其他批处理贝叶斯优化方法不同,它可用于并行化任何顺序采集函数或使现有并行方法进一步扩展[15]。

总结上述研究发现,当前研究可替代、同质产品的文献中只有极少数采用数据驱动的方法来进行需求函数的学习和定价的研究,而在当前基于汤普森抽样算法和需求未知情况下的定价问题相关文献中,同样缺乏考虑竞争市场中价格敏感型顾客由于产品同质、可替代性强时选择更符合心理支付意愿产品的行为。例如与本文研究相近的Ringbeck 虽然将高斯过程引入算法中来模拟需求函数,但其只考虑了一个商家仅利用市场中自身产品相关数据来进行定价的情形。产品差异化小时价格弹性较大,尤其是线上平台(如某团、某程、某宝等)使得消费者获得的信息比以往更加全面。实际生活中,顾客选购成本低,产品同质化严重,且商家可以观察到市场上同性质产品的销售情况及产品特征,在很短的销售期内商家就能获得体量极大的商品销售与用户行为数据,商家若无法在短期内充分利用相关数据进行定价策略的调整则会丧失部分潜在用户。因此,基于实践的需要和现有理论研究的不足,本文将考虑短期内同一性质(满足用户核心需求,但具体表现形式及产品特征存在差异)的产品的需求函数的学习,利用批量汤普森算法建立基于探索-利用的两阶段学习和决策过程的定价模型,在利用数值实验进行基础分析后,采用某平台出行的真实数据对算法的泛化与实践能力进行分析,旨在为企业定价决策提供良好借鉴。

1 模型概述

本文建模时所涉及的变量及参数如表1 所示。根据所研究问题提出的模型描述如下:考虑库存一定情况下,一个零售商在有限销售期t=1,2,…,T 内销售i=1,2,…,N 种产品的网络收益管理问题,在每个销售初期,商家根据经验决定每个产品的最优价格并进行销售以实现最优收益。N 种产品消耗的资源为j=1,2,…,S种,每单位的产品i ∈N 消耗资源i ∈S 的量为aij,Ij为资源的库存水平。每个销售期,零售商都需要为自己的产品选择一个价格来进行销售,即每期初从有K 个元素的离散价格集合{p1,p2,…,pk} 中选择一个价格向量,其中每一个价格向量包括N 种产品的价格,即:

表1 符号及定义Table 1 Notations and definitions

算法每期对每个产品经过高斯过程预测得到的后验分布会进行M 次抽样,零售商在第t 期的批次中第m 次选择的价格向量为,记为实施该价格策略实现的需求为方便起见,本文将一个销售期内产品i进行M 次抽样得到的预测需求记作所有产品在t 期的预测需求记为

本文在建模时做如下假设:每个产品的需求函数未知,但需求与价格之间存在函数关系;商家可观察到每个价格策略实施后所实现的各产品的总的真实需求,即可观测;各期需求是独立的,即顾客是短视的;不考虑各产品的成本及商家更换产品价格时产生的成本;存在价格p∞满足在该价格下所有产品的需求以1的概率收敛到0。

2 高斯过程-批量汤普森抽样算法

本文首先简单介绍算法需求函数非参数拟合的理论部分——高斯过程和批量汤普森抽样,然后提出高斯过程-批量汤普森抽样算法(Gaussian process-parallel Thompson sampling,GP-PTS)。

2.1 高斯过程

高斯过程(Gaussian process,GP)是一种已被广泛用于回归、分类等领域的非参数模型,它是多元高斯概率分布的泛化。相比参数固定的模型,非参数模型更加灵活,其参数会随着数据量的增加而增加,可拓展性高,且使用贝叶斯方法不容易过拟合[16-17]。此外,高斯过程能够同时预测生成均值和方差的性质,使其非常适合用来解决多摇臂问题。结合上述两点,本文采用高斯过程来对需求函数进行拟合。

高斯过程是由均值函数v(x)=E[f(x)]和半正定的协方差核函数g(x,x′)=E[(f(x)-v(x))(f(x′)-v(x′))]所决定的,且任意有限的随机变量都满足一个联合高斯分布。为简化计算,本文假定均值函数v(x)=0,选择常用的、高灵活性的Matérn协方差函数其中l为反映样本曲线的平滑度的尺度参数[18]。给定一个高斯过程的先验及部分观测值集合(x1,x2,…,xn),y=(y1,y2,…,yn),当存在观测噪声,即y=f(x)+ε,且噪声服从独立同分布的高斯分布ε~N(0,σ2)时,测试点x*的联合分布为:

其中,I为单位矩阵,g=g(x,x),g*=g(x*,x),g**=g(x*,x*)。f(x*)的后验概率分布为:

通过计算所有测试点的后验的均值和方差,就能得到对于f(x*)的预测结果。

2.2 批量汤普森抽样

汤普森抽样是一种从后验分布中采样一个采集函数α(d^m;Dt),然后选择具有最大收益的下一个评估点的随机策略[19]。由于是根据后验分布进行随机采样取最优,汤普森抽样能有效解决探索-利用、批量或延迟反馈的问题,其抽样的随机性能有效地解决批量抽样中数据可能相同的问题,但也正是其随机性使之不能很好地处理高维度的问题。Hernández-Lobato等提出的PDTS将批量贝叶斯优化与顺序汤普森抽样结合起来,本文将该算法与研究的定价问题相结合得到如算法1 所示的伪代码。在批量从后验分布中抽样并评估后,将获得的批量数据统一加入历史数据中进行高斯过程的更新。较之顺序TS,PDTS在销售时间有限时能测试更多的数据点,且通过实验证明算法最终能得到和顺序TS 一样的收敛效果。

2.3 高斯过程-批量汤普森抽样

本文在Ringbeck 提出的GP-TS(Gaussian process-Thompson sampling)算法的基础上,将批量汤普森抽样能在短期测试更多数据点的优势考虑进来,提出了高斯过程-批量汤普森抽样算法(算法2)及其加入产品特征ζ来估计需求的变体算法(算法3)。首先在每个销售期对每个产品的高斯过程进行估计,其次对每个产品进行M次需求函数的抽样,也即线性规划部分参照Ferreira 在2018 年所提出的模型,把需求和价格向量作为输入来求解当前库存及概率约束下使得期望收益最好的价格。最后一步为观察线性规划求解出的最优价格下的真实需求,并对Dt进行更新。

2.4 基于特征的高斯过程-批量汤普森抽样算法

产品需求仅受价格影响的设定在现实生活中是少见的,为了使算法更贴近实际情况,将除价格之外其他影响产品需求的、商家在每期制定价格之前能观察到的外生特征ζ(t)(ζ∈Z,其中Z为一个离散的特征空间),如季节、天气、竞争对手行动等信息引入算法中,商家将充分利用ζ(t)来制定p(t)。假设对于任意特征ζ和pk的需求都是根据一个参数未知的已知分布随意分布的,商家可以观察到同一个特征ζ在每个产品上的表现情况。是第t期第m次抽样时的特征是商家在此时选择的价格向量为pmk时产品i所预测的需求。与算法2 不同,算法3 将特征加入到高斯过程的估计中,即将特征加入需求函数的估计中,且每批次抽样需求函数之前会对当期的特征进行观察,并将其加入到后续更新历史数据中。关于考虑产品特征的GP-PTS变体算法的遗憾值上界,Agrawal 和Goya 在情景汤普森抽样算法上界的证明得到此时的上界与特征的维度相关,即受到特征数量 ||Z的影响[23]。因此,可以知道本节构建的考虑特征的GP-PTS 算法同样会收敛至

3 实验分析与比较

3.1 数值实验

本文将用数值实验测试算法2、算法3,并在三种不同的问题设置中将其与相关的基准算法进行比较。首先考虑具有高斯分布需求和库存约束的单产品设置,然后将算法2的单产品扩展到多产品设置,最后在特征和多产品的参数设置中测试算法3。本文将和GP-TS、BZ(Besbes and Zeevi algorithm)进行比较。GP-TS是本文算法改进的基础,该算法首次将高斯过程和汤普森抽样与动态定价相结合,灵活地实现了需求学习的非参数估计。BZ 算法将销售季节划分为探索和利用阶段,该算法前一阶段计算出所有价格的收益情况,在销售剩余时间内利用此前获得的知识进行实施。本文参考原作者建议设置的参数,将销售季节按照τ=T2/3划分为两个阶段。

在批次的选择上,本文将参照Alessandro 设置的M=5,10 来进行对比实验,在数值实验部分参考GP-TS的数值实验的需求函数的假设,需求依赖于3个外生的参数(a,b,c),价格(p),当前的产品索引(i),参数γ反映需求函数中前后期特征之间的关系。a=3 000,b=10,c=4,γ=100,i为产品的索引。此外,将随机因素考虑进去,在需求函数(式(6))上增加一个服从高斯分布的随机扰动项σ。

数值部分展示了500 个销售期不同设定下模拟的结果,其中每个图显示了在库存I和批次M的不同组合情况下三种算法在整个销售期中的性能。最适合衡量需求学习问题绩效的方法是每轮产生的收益占最优定价下产生的收益的比例,因此图中纵坐标1的表现意味着当需求函数先验已知时,算法所获得的收益等于最优收益。通过观察各算法收敛到1的速度,可以了解到各学习算法的性能。

3.1.1 单产品

当商家在有限时间内销售一种产品时,可以把该产品的库存视为售出单位产品时产生的资源消耗。在这种情况下,假定初始库存和销售期之间存在的函数关系为I=α×T,考虑α=300,700 两种情况。零售商评估定价决策对高斯分布的每个时期的销售数量的影响,客户需求是服从高斯分布的,其均值是价格的函数,参照Ringbeck 的实验结果,将每个价格的方差σ固定设为150。设定价格为1~100 中的5 个可能的取值,为K={1.0,25.75,50.50,75.25,100.00}。

从图1结果可以看出,在批量和库存约束的多种组合下,考虑了批量的GP-PTS性能表现最好,在短期内能迅速获取价格需求关系并且收敛到最优,批量的取值在该情况下无法看出明显的优劣。虽不能和GP-PTS一样快速收敛到最优,随着销售期的增长,BZ和GP-TS也会慢慢收敛到最优,二者在探索期表现效果一致,后期由于GP-TS仍在不断学习,整体效果较BZ更好。BZ在库存越小时表现越好,原因在于库存少时销售前期的历史数据更具学习意义,在销售后期商家可能出现供不应求的情况,此时GP-TS 和GP-PTS 无法再获得探索得到的新经验来进一步提升性能。

3.1.2 多产品

假定商家销售四种产品,其余设定和单产品类似,把该产品的库存视为售出单位产品的资源消耗,对于每一个产品,α=[300,300,300,300],α=[700,700,700,700],价格为1~100 中的5 个可能的取值,每个价格的方差σ固定设为150,即K={[1.0,1.0,1.0,1.0],[25.75,25.75,25.75,25.75],[50.50,50.50,50.50,50.50],[75.25,75.25,75.25,75.25],[100.00,100.00,100.00,100.00]}。由于设定简单且和单产品相似,如图2所示的多产品的计算结果表现出和单产品类似的趋势,整体性能GP-PTS 表现最好,GP-TS次之,BZ第三。由于采用了批量,GP-PTS在短时间内吸收的探索经验骤增,能以最快的速度收敛,但随着销售期的延长,三种算法最终都会收敛到最优。

图2 定价算法性能比较(多产品)Fig.2 Performance comparison of pricing algorithms(Multiple products)

3.1.3 考虑特征的多产品

在上述两种设置中,都没有考虑除价格之外的可能影响需求的特征,为了测试算法3,本文调整多产品设置,加入一个特征向量,需求函数随机分配特征向量的变动情况,从而模拟影响需求波动的外生因素。以天气为例,恶劣天气会使得顾客对在线零售商提供的产品产生更大的需求。假定一个特征向量ζ,向量长度为N,ζi∈[0,1]。在销售初期,ζ(t)在0~1 之间随意取值,为0时不受到γ的影响,为1 时需求函数受到γ的影响最大,不同的特征取值下定价问题会得出不一样的解决方案。为了使得数值实验更加简单,假定真实情况下每个产品的特征取值都相等,即ζi=ζj=1。其他的设置与上述第二种的多产品设置保持一致。

如图3 所示,在考虑产品特征后,各算法在不同的批量和库存约束组合下表现各异。四种情况下,GP-PTS表现得都更好,GP-TS 次之,BZ 表现相对较差。其中M=10 且库存较小时GP-TS 曾出现短暂的异常值,BZ则由于前期学习的不稳定且后期不再进行探索性学习,性能无法完全收敛到最佳。整体看来,随着销售期的增长,三种算法都会随着探索经验的积累慢慢收敛。

图3 定价算法性能比较(考虑产品特征的多产品)Fig.3 Performance comparison of pricing algorithms(Multiple products considering product characteristics)

观察销售前期可以发现,若GP-PTS 在前期(t <50)表现出来的性能好,则在整个销售期的收益表现都较好,否则,GP-PTS需要通过后期成批的学习来纠正前期需求探索学习中出现的偏差。GP-TS 在每增加一个数据时就对产品的高斯过程进行一次拟合,相较于GPPTS,该算法虽然计算高斯过程更繁重,但在某次抽样的结果不具代表性时也能使算法更快进行调整,不会产生批量累计误差的影响。GP-PTS 由于是批量处理数据,若在t期由于异常数据使得产品高斯过程产生的拟合效果不好,则t+1 期时批量抽样产生的误差将正比于批量M累计增加,在短期内对收益产生的负面影响更大,此时,GP-PTS只有在更多代表性数据出现时模拟出来的高斯过程才会趋于真实情况做出调整,纠正后的算法也会逐渐收敛。BZ 由于只在(0,τ)内进行探索性学习,算法的整体性能取决于其在探索期内的表现,若在探索期表现不好,后期由于无法再更新经验会使得算法无法收敛到最佳性能。综合来看,在考虑产品特征时,GP-PTS能够更快更好地收敛,相较于其他两种算法,在销售期一定时更新探索的数据量更多,在数据量一定时高斯过程的计算复杂度更小,整体性能更好。

3.2 真实数据

本文使用某平台2017 年4 月在某社区上提供的脱敏后的出行产品相关的历史数据,整个数据集共计4 000个产品,包括22个产品相关特征、195万条成交量和成交价格。本文在数据预处理时主要进行了以下几个步骤的处理:通过描述性分析,发现价格、评分等特征存在异常情况,因此,首先对如价格、评分为负的异常数据进行了删除;另外,地铁站距离、火车站距离、市级、经纬度等特征缺失值较多,考虑到有综合评分的特征,故对上述缺失值较多的特征进行了删除;通过对单个产品交易形成的时间进行提取,发现每个产品在同一天并无重复交易记录,故无需去重;考虑到销售期的问题,本文最终筛选出交易次数大于500的产品进行讨论,将产品的综合评分选为具备代表性的产品特征来进行实例分析。示例中选择的是销售数据最多的产品(产品id 为1550,综合评分为3.5)进行批次为10,销售期为500 的算法应用模拟。

如图4 所示,把算法应用到真实数据时,三种算法计算的结果都比真实情况下的收益高,其中GP-PTS 表现最好。算法在此处较数值模拟的结果呈现出波动的原因在于,本文在处理真实数据时仅采用综合评分这一个特征对价格-需求函数进行拟合,也即,假设了需求只受价格和综合评分的影响,此时高斯过程模拟出的价格-需求函数与真实需求函数(受到价格、评分、地理位置、日期活动等多个特征影响)之间存在较大偏差,最终由于需求函数学习的准确性问题使得结果呈现出波动。但仍然能够明显地看出,若给定一个先验且只有一个给定特征时,基于算法模拟出来的价格会取得比真实价格更好的收益。

图4 某平台数据集模拟Fig.4 Simulation of a platform dataset

4 结束语

本文通过短期内同类型产品的需求函数的学习,考虑批量贝叶斯优化的优点,构建了基于探索-利用的两阶段学习和决策过程的定价模型——高斯过程-批量汤普森抽样算法(GP-PTS),最终通过数值模拟和某平台真实数据集的分析得到了如下结论:若给定一个先验且产品特征完备时,基于GP-PTS 算法模拟出来的价格会取得比目前平台价格策略更好的收益,但是实际情况中由于特征无法完备,需求函数的学习往往无法使得算法达到完全精准。GP-TS 和GP-PTS 在本质上是相同的,二者都可适用于离散价格集的情况,高斯过程的引入可以学习价格和需求之间的任何函数关系,此外,计算的优化模型都应用于网络收益管理问题。但本文所使用的批量的思想使得GP-PTS 具备了更多优点。首先,当销售期T一定时,GP-PTS会使用更多的数据,使得算法在更短的时间快速达到最优性能。其次,当能够使用的数据一定时,GP-PTS 会进行更少次数的高斯过程的模拟,极大地简化了模型的计算复杂度。再次,为预防批次抽到相同数据的情况,本文参考Kandasamy的理论证明使用汤普森抽样内在的随机性来解决,抽样的随机性可以在并行计算时避免冗余函数评估,相较于UCB 和EI为了防止M次中存在抽中同样的点而引入额外的超参数,计算流程更加便捷有效。最后,GP-PTS还可拓展至捆绑销售以及时下热兴的盲盒销售概念中,也即,将各资源看作是单个产品,产品则为各种不同产品的组合。

当然,本文也有许多不足之处。其一,在用真实数据进行拟合时,由于产品特征的缺失值过多,拟合需求函数时只使用了一个产品特征,该真实应用场景的拟合在一定程度上具备很大局限性。其二,虽然本文提出了批量贝叶斯优化的方式来减少高斯过程的计算次数,但估计高斯过程这一步骤本身是非常复杂且耗时的,因此该算法不能拓展至更大的产品数据集。其三,本文仅考虑产品特征,实际生活中商家应该更多地对用户特征进行分析,为用户提供更好的购物体验。因此,考虑更多产品集以及在不违背社会道德,考虑公平的原则下,针对用户进行定价是本文后续研究的重点。

猜你喜欢
汤普森批量高斯
批量精装房项目工程信息管理综述
云南:铁路“520”运输鲜花4万余件 高铁批量运输创新高
批量提交在配置分发中的应用
会做生意的汤普森
数学王子高斯
天才数学家——高斯
因情绪失控而被毁的竞选
卷首语
“60分汤普森”一战封神
从自卑到自信 瑞恩·高斯林