【论文学习】订单估计

1,204 阅读5分钟

Representation Learning for Predicting Customer Orders

简介

预测未来客户订单对零售商做出许多关键的运营决策具有重要参考价值,这篇论文的目标在于预测未来订单的分布信息,即商品的可能子集及其频率(概率),这是前端仓库的分类选择和交付中心的能力评估等决策所需要的重要数据。

订单分布信息的学习与下一篮子预测(next-basket prediction)、时间集预测(temporal set prediction)和频繁集挖掘(frequent set mining)有很大的不同,其目标是描述一个特定时期内市场聚合行为的全貌,而下一篮子预测和时间集预测关注的是特定客户下一次购物的行为,而不考虑购买的时间,此外频繁集挖掘只给出高频集合,而不提供挖掘集合的确切概率信息,不能满足业务应用的需要。

由于可能的订单类型的组合爆炸式增长,从数据中学习订单分布面临着许多重大挑战,包括:

  • 用于学习分布的订单数据通常是稀疏的,其中观察到的订单数量远远小于可能的订单类型的数量,许多可能的顺序类型不会出现在数据集中,或者只出现一次。
  • 学习的订单分布应该捕捉到商品类目之间的相关性,因为一个订单所属的商品类目往往不是独立的。
  • 为了在前面提到的下游应用程序中使用订单分布,通常需要生成许多随机订单。因此,还需要设计出有效的方法来根据学习到的订单分布抽样随机订单。

未来订单预测

在介绍预测模型之前,首先探讨在已知数据集订单分布pp的前提下如何预测未来订单。

符号

V={1,2,..,n}V=\{1,2,..,n\}表示商品品类集合,SS表示订单类型,为VV的一个子集,所有可能的订单类型数量为N=2nN=2^n

假设订单分布在一定时间内是不变的(这是能够用历史订单预测未来订单的前提),假设p={p1,...,pN}p=\{p_1,...,p_N\}为从历史数据中学习得到的订单分布,pip_i表示随机订单属于第ii个订单类型中的概率,用pg={p1g,...,pNg}p^g=\{p_1^g,...,p^g_N\}表示近期订单的 ground truth 分布。

KK表示未来一段时间内订单的数量,假设KK是给定的(因为预测KK比预测特定订单要容易得多)。使用一个N-维整数向量Cg=(c1g,...,cNg)C^g=(c^g_1,...,c^g_N)来表示 ground truth 未来订单,c1gc^g_1表示第ii类订单的ground truth 订单数量。Cp=(c1p,...,cNp)C^p=(c^p_1,...,c^p_N),表示学习得到的订单,显然Cp1=K||C^p||_1=KC𝑝C^𝑝的构造通常是基于学到的订单分布pp

评估度量

目标是让预测CpC^p尽可能接近CgC^g,因此需要度量二者的差异,二者间 overlap(可以理解为相似度)可以计算为:

Overlap(Cp,Cg)=i=1Nmin(cip,cig)KOverlap(C^p,C^g)=\sum^N_{i=1}\frac{\min(c^p_i,c^g_i)}{K}

由于Cp1=Cg1=K||C^p||_1=||C^g||_1=K,上式可以简化为:

Overlap(Cp,Cg)=1CpCg12KOverlap(C^p,C^g)=1-\frac{||C^p-C^g||_1}{2K}

可见最小化CpCg1||C^p-C^g||_1等同于最大化Overlap(Cp,Cg)Overlap(C^p,C^g)

Overlap 最大化算法

定义概率Pr(Cg=C1;K,pg)Pr(C^g=C^1;K,p^g),其中Cg=C1=(c11,...,cN1),C1=KC^g=C^1=(c^1_1,...,c^1_N),||C^1||=K,它根据ground truth 订单分布pgp^g 随机生成订单,因此得到:

Pr(Cg=C1;K,pg)=K!c11!,...,cN1!i=1N(pig)ci1Pr(C^g=C^1;K,p^g)=\frac{K!}{c^1_1!,...,c^1_N!}\prod^N_{i=1}(p^g_i)^{c^1_i}

ii个订单类型中ground truth订单数量的边际概率为:

Pr(cig=Cci1;K,pg)=Kci1(pig)ci1(1pig)Kci1Pr(c^g_i=Cc^1_i;K,p^g)= \begin{matrix} K\\ c^1_i \end{matrix}(p^g_i)^{c^1_i}(1-p^g_i)^{K-c^1_i}

可知,cigc^g_i重复二项式分布B(K,pig)B(K,p^g_i)。对于一个确定的订单预测CpC^p,有:

image.png

此处的E[cigcip;K,pg]E[|c^g_i-c^p_i|;K,p^g]定义为根据pgp^g生成cigc^g_icigcip|c^g_i-c^p_i|的期望值。当cipc^p_icigc^g_i的几何平均数时(即KpigKp^g_i取整),E[cigcip;K,pg]E[|c^g_i-c^p_i|;K,p^g]达到其最小值。

Observation 1:当设置CpKpgC^p\approx Kp^g时,cipc^p_i的值为KpigKp^g_i取整且Cp1=K||C^p||_1=KE[cigcip;K,pg]E[|c^g_i-c^p_i|;K,p^g]接近于其最小值,其几何意义为CgC^gCpC^p间的l1l_1-距离期望值。

通过Observation 1可以很容易发现之前提到的最大化Overlap(Cp,Cg)Overlap(C^p,C^g)实际上就是要设置CpKpgC^p\approx Kp^g。然而实践中,并不能知道ground truth订单分布pgp^g,只能通过近期历史数据中学习一个订单分布pp,然后使用pp来构造CpC^p,并希望pppgp^g尽可能接近,pp也称之为一个代理订单分布(proxy order distribution)。

算法1中展示了使用代理订单分布pp来构造CpC^p的过程。

image.png

生成性选择模型

本节提出了一个生成选择模型,可以有效地生成随机订单,该模型将商品类别嵌入到一个欧几里得空间并基于嵌入构建了一个商品类别图,在商品类别图上运行随机漫步来生成随机订单。

商品类别嵌入和商品类别图

给定商品品类集合V={1,2,...,n}V=\{1,2,...,n\}和多个历史订单集合S={S1,S2,...,Sr}S=\{S_1,S_2,...,S_r\}SiS_iVV的一个子集。品类ii表示为一个dd-维向量xiRdx_i\in \mathbb{R}^d,称为品类嵌入(item embedding)

为构建品类图,引入了两个虚顶点(imaginary vertices),源节点00和汇聚节点n+1n+1,以及嵌入x0x_0的顶点00。品类图为一个有向图G=<V{0,n+1},E>G=<V\cup\{0,n+1\},E>EE中包含了从00VV、从VVVV(除了循环),从VVn+1n+1的所有边,和一个n+1n+1上的循环,一个n=4n=4的品类图如图2(a)所示:

image.png

随机漫步生成随机订单

将顾客选择的生成过程建模为基于品类图的随机漫步过程:从源节点00开始,客户只能沿着当前顶点外的边移动,最终将被困在汇聚节点𝑛+1𝑛+1中(可见图2中最后的自循环),通过这种方式得到该客户的订单就是其所访问商品的集合。

形式化后,随机漫步可以被看过一个马尔科夫过程(Markov process){Xi,i=0,1,..X0=0}\{X_i,i=0,1,..|X_0=0\},访问过的品类集合为S={Xii=0,1,...}{0,n+1}S=\{X_i|i=0,1,...\}-\{0,n+1\}。此外还需要一个转移概率矩阵PP,矩阵中PijP_{ij}表示从ii转移到jj的概率,文中PijP_{ij}的设置方式如下所示:

image.png

yiy_i表示客户在购买品类ii后是否会停止购买,定义一个参数集合X={x0,...,xn,y1,...,yn}X=\{x_0,...,x_n,y_1,...,y_n\}。使用xiTxjx_i^Tx_j来度量品类i,ji,j间的相关性,使用softmaxsoftmax函数来标准化品类图中品类ii和其他节点间的相关性。通过该模型随机生成的订单定义为SS,使用Pr{S=sX}Pr\{S=s|X\}来表示某个订单类别sVs\subseteq V中一个随机订单SS的概率。

训练过程

在本节中,为了学习顶点表示,我们首先将训练过程制定为一个最大似然估计任务。随机梯度的精确计算如算法2所示:

image.png

数据集和源码

数据集链接 源码链接