阿里巴巴B2B电商算法实战
上QQ阅读APP看书,第一时间看更新

1.2 货——货源

优质货源是所有电商平台的核心竞争力,CBU作为B2B属性的事业部,尤其关注其平台货源的竞争力。从消费者心理的角度出发,“低价”和“新款”永远是核心诉求,因此我们聚焦在价格力和趋势力两个维度的数据挖掘和算法建模。

1.2.1 价格力

价格力作为CBU源头厂货面向次终端的核心抓手,精准预估不同价格段商品的市场需求是牵引新供给的关键信息。传统的销量预测模型只对训练数据准确度负责,忽略了价格与其他特征的相互影响,预测结果往往对商品价格变动并不敏感,模拟商品变价时会有较大偏差。

为了解决这一问题,我们分别采用基于价格弹性的量价模型与价格归因—销量预测模型进行分析。相比传统销量预测,量价模型更能够捕捉“价格”因子的影响力,更具可解释性、低价泛化性和牵引能力。

1.基于价格弹性的量价模型

需求价格弹性是计量经济学中常见的概念,用来描述商品成交价与销量的关系,定义为销量变化比例与价格变化比例的比值,即需求价格弹性ε满足关系:

积分式为:

可知在价格弹性固定时,销量是价格的幂函数。由于弹性可能随着外部的指标(如流量状态、促销状态)而改变,对于适宜使用需求价格弹性模型的商品,销量和价格往往呈幂函数簇的映射关系。

图1-16是从CBU网站上随机选取的16个头部商品的每日销量与日平均成交价的定性关系,对于大多数1688网站上的头部商品,随着日均成交价的降低,日销量会加速上升,呈现幂函数簇的映射关系,因此适用于价格弹性模型。

假设价格弹性固定不变,问题可简化为销量与价格的对数回归。为了保证特征在对数变换后依然保持无偏性,一般采用泊松回归。泊松回归假设销量满足泊松分布,即:

其概率密度函数可表示为:

并通过极大似然方法求解,相当于最小化损失函数:

图1-16 日销量-平均成交价散点图

损失函数与回归偏差的关系如图1-17所示。

图1-17 损失函数–回归偏差

可以看出,在该损失函数下,回归结果对低估容忍度较高,对高估容忍度较低,这保证了在指数变换后销量预估的无偏性。在泊松回归时,我们假设价格弹性固定不变,但实际上,价格弹性受诸多因素影响,比如所处流量状态、促销状态、类目属性及时间等。先通过神经网络拟合价格弹性系数,并代入泊松回归进行销量预测,即为深度泊松回归(见图1-18),预测结果呈幂函数簇的形式。

图1-18 深度泊松回归网络

图1-19为某头部商品不同流量状态下日均成交价与日销量的定性量化分布图,3条曲线为固定其他特征后深度泊松模型的拟合结果。

图1-19 日均成交价-日销量分布图

价格弹性模型除了有较强的解释性和牵引能力外,其本身明晰的结构也使其可以更好地应用于大规模优化问题,如动态定价、营销配置等,从而大大降低了求解复杂度。

2.价格归因

传统的销量预测模型本质上是对商品销量的准确估计,而量价模型却是要准确衡量价格变动所引起的销量变化。在需求价格弹性模型中,我们人为确定了指数函数簇来描述这一变化关系,这相当于引入了先验知识,但同时丧失了一定的模型自由度。价格归因—销量预测模型基于更自由的销量预测模型(如GBDT),但在此基础上,它会考察特征的独立性与共线性,挖掘价格对其他浅层特征的影响,并基于贝叶斯网络与工具变量,归纳价格对销量多层级的影响,从而更准确地估计价格变动与销量的关系(见图1-20)。

假设存在特征P来描述商品的相对价格或相对价格变化,X为其他特征的集合,对于一个销量预测的机器学习模型,满足:

很多模型在训练时存在特征独立性的基本假设,但在实际模型构建中很难兼顾这一点。假设在X中存在一个特征Xi,满足COV(P,Xi)≠0,则说明P与Xi存在内生性或共线性。如果协方差比较大,那么两个特征间往往存在因果性或相互性的影响,比如价格折扣影响点击率,点击率影响销量,或者某些类目有固有的价格变动周期。针对这种情况,我们构建工具变量来去除可能存在的内生性,对Xi与P做线性回归,即:

其中,回归残差εi可以描述成Xi脱离P相互影响后对销量进行的独立影响。以εi替换Xi,则在P因子上,归纳了P-Xi-Q链路与P-Q链路两条“贝叶斯链”的影响,此时Xi起到了工具变量的作用。

图1-20 价格-销量关系

工具变量的选择需要业务侧与数据侧共同的洞察,一个好的工具变量可以提升相对价格特征的重要性,进一步捕捉价格因子对销量的影响。为了进一步直观地对模型效果进行说明,我们随机选取了CBU电商平台9个大促期间销量较好的头部商品,并固定大促期间其他特征,调整商品价格来预测销量。图1-21为商品处于低价状态下(当前展示价格的0.6~1.0倍)不同模型的预测结果,实线为量价归因推理模型,虚线为同特征GBDT销量预测模型。

可以看出,在一般的销量预测中,销量对价格并不敏感,甚至预测与业务直观感受相反,这是因为其他特征与价格间存在共线性影响,固定其他特征忽略了这种影响。而在归因推理模型中,销量会随着价格降低而得到较为显著的提升,更加符合业务认知。

图1-21 低价状态多模型预测结果

1.2.2 趋势力

随着阿里巴巴集团新零售业务的发展及新零售技术事业群的不断发展壮大,算法在日常业务中的重要性越来越高,在品类、营销、供应链、搜索推荐等业务上都发挥着非常重要的作用。销量预测是电子商务的重要诉求,是商品供应链管理与平台流量分发的核心,可以指导商家和平台更好地设计商品在未来周期的流量扶持、打爆、备货与补货策略等,对平台供应链管理意义重大。

本节首先介绍销量预测常用的模型与算法,主要包括回归类的机器学习模型、深度学习模型和时间序列模型。之后,基于商品未来30天销量预测与供应链仓级别销量序列预测两个场景,介绍销量预测常见的业务形态和算法方案。

1.销量预测

预测,即通过历史数据或其他外部因素构建模型,学习其变化“模式”,利用该模式对未来事务进行预测的过程。预测有个特点,即短期预测的准确率高于长期预测的。而一般机器学习问题中所说的预测环节,比如图像分类等,在这里不归于预测。一般用回归或者时间序列的方法来解决经典的预测问题。

·回归:包括基础的线性回归、GBM类树回归、DNN类回归,比较适合单品级别基于商品特征工程的模型构建。

·时间序列:包括传统的Arima、Holt-Winters时间序列方法,Facebook新公开的Prophet方法,以及一些深度的Seq2Seq类时序预测方法(LSTM、Wavenet CNN),一般来说,较适合某些聚合维度的预测,比如类目、整个大盘的销量趋势预测等,在序列有趋势性、季节性时效果会很好。

下面我们基于两个经典的业务场景,未来30天单品销量预测与供应链仓级别的销量预测,来分别介绍回归和时间序列两类模型在具体业务中的使用。

2.回归模型场景应用

未来30天的销量预测,在业务上一般属于商品的长期销量预测,即预测每个单品(SKU)在未来30天的销量总和。平台单品级别的销量预测更多的是对存量品的预测,由于能获取到大量商品的流量特征,因此效果最优的模型一般为采用基于特征工程的机器学习与深度学习模型。

这里我们采用几种不同的回归模型来建模,包括销量预测算法问题的训练目标、评估函数、算法模型、特征工程与实验设计。

(1)训练目标

这里的训练目标是每个单品在未来30天的销量。

(2)评估函数

评估函数采用了加权准确率:

其中yi为某SKU实际销量,为某SKU预测销量,n为评估的SKU数。注意,上式右边的分子为全部预测样本的绝对误差之和,分母为全部预测样本的真实值之和,对于固定的验证样本集合来说是一定的。所以,该评估指标会偏向头部和腰部商品的预测结果。

(3)算法模型

GBDT(Gradient Boosting Decision Tree,梯度提升树):是一个以回归树模型为基本单元器、以Boosting为框架的集成学习模型。GBDT具有既可做分类任务又可做回归任务、对数据特征的尺度不敏感、可自动填补缺失特征、可以做特征筛选、效果较为突出等几大优点,是传统机器学习算法在工业界最为流行的算法之一,并且在各大数据竞赛中大放异彩。

LightGBM:LightGBM是对GBDT的高效实现,由微软提供。LightGBM原理上与GBDT类似,均采用损失函数的负梯度作为当前决策树的残差近似值,去拟合新的决策树。LightGBM具有更快的训练效率、更高的准确率、可以直接支持ID类特征的特点。

Wide&Deep:Google在2016年提出的一类用于分类和回归的深度学习模型,目前在Google Play应用商店的推荐场景中有使用。Wide&Deep模型的核心思想是结合线性模型的记忆能力(Memorization)和DNN模型的泛化能力(Generalization),在训练过程中同时优化两个模型的参数,从而达到整体模型的预测能力最优。在销量预测任务中使用Wide&Deep模型,既可以加入传统特征工程,又可以把ID类特征引入模型中,在训练中自动学习Embedding,且受益于DNN类模型较强的拟合效果,达到更准确的预测效果。

(4)特征工程

销量预测建模过程中使用的特征工程如图1-22所示。

1)类别型离散特征(Categorical Feature):GBDT类的模型在销量预测等回归问题中一般有着非常好的效果,但是对大规模的稀疏特征及离散的ID特征支持并不好,而在电商中,单品有着大量的ID特征,如类目ID、品牌ID、店铺ID等,因此这里我们将ID特征预先处理成连续的Embedding特征。这里采用了经典的item2vec方法:基于用户在电商上的行为序列,如用户在类目上的序列cate1..cate2..cate3..cateN,采用word2vec的训练方法SGNS(Skip-Gram+Negative Sampling),将有用的ID特征均Embedding到一个低维向量(这里为8维)中,再当作商品的连续特征输入到后续的模型里。对于DNN类的模型,如Wide&Deep,可以直接将ID类特征连结一层Embedding层,端到端地训练出ID的Embedding。

图1-22 预测特征工程

2)比例类特征:在商品的静态特征中,为了反映商品的趋势或效率,我们会用到大量的比例类特征,如增长率、CTR、好评率等。比例类特征会涉及分子分母的量纲问题,如单品粒度的增长率(商品本周比商品过去一周销量)特征。对于商品A,从100增长到150,增长绝对值为50,增长率为1.5;对于商品B,从1增长到5,增长绝对值为4,增长率为5。在这样的情况下,直接使用增长率作为特征,会产生量纲变化过大的问题。下面介绍两种方法来处理这种问题。

方法一:贝叶斯平滑

贝叶斯平滑的思想是,在分子分母上分别加一个先验的常数,该常数可以由整体数据集的均值统计出来:

对于模型的均值来说,本周与过去一周销量均值均为100,对于上述的两个商品,A商品由100增长到150,增长率150/100→(150+100)/(100+100)=1.25;B商品由1增长到5,增长率5/1→(5+100)/(1+100)=1.04。这样得出新的增长率分别为1.25和1.04,可以将增长率拉回到一个平滑且可比的水平。

方法二:威尔森区间下界

威尔森区间下界一般用于点击率、好评率等统计特征,其思想为计算以95%的概率落入区间[A,B]的特征的比例,并以该区间的下界作为该特征取值,计算公式如下:

其中p为好评率或点击率,n为样本量,z为置信水平的z统计量1.96。

(5)实验设计

预测未来30天的销量,即需要构建商品在当前的特征情况下,未来30天销量为label的样本。这里要注意业务日期的穿越问题,即测试样本与训练样本要严格按时间分割,而不能使用常见的K-Folds Cross Validation,即测试样本的特征日期要大于训练样本的label日期,这样才符合真实的业务场景。例如,在7月1日预测未来30天的商品销量,能拿到最近的训练样本是以6月1日至6月30日的商品销量为label的样本。

训练样本:特征2019.6.1,label 2019.6.30

测试样本:特征2019.7.1,label 2019.7.30

基于准确的特征与样本构建情况下,我们就可以评估不同模型和参数的效果,且均可保证与线上实际效果一致。在我们的实验里,采用了下面几种方法。

·Baseline(基线):基于规则的方法,即直接拿商品过去N天的销量当作商品未来N天的销量。

·GBDT:梯度提升树的方法,主要采用统计特征和预训练的Embedding特征。

·DNN:这里采用了Wide&Deep方法,Wide侧为统计特征归一化之后的特征,Deep侧为归一化的统计特征结合ID类特征的Embedding。

在我们的实验中,GBDT方法的预测准确率比Baseline提升18%,Wide&Deep方法的预测准确率比GBDT方法提升2%。

3.时间序列模型场景应用

供应链仓级别的销量预测的目的为预测某个仓未来一段时间内每天的销量,属于单一曲线未来N个时间点的销量预测,即一个时间序列的预测问题。传统的统计学时间序列方法,特点为通过参数的学习,将一条序列拆解为趋势性+季节性+噪声波动几部分。一般仅考虑序列本身的特征,而较少考虑外部因素,具有人工工作少、建模迅速、参数都为自动学习的优点,且可解释性效果较好。缺点为理论较为复杂,同时泛化性较差。不同于大家熟悉的复用在所有序列上的机器学习模型,统计时间序列一般需要针对每一条序列单独建立一个模型(即学习一套模型参数)。下面我们简单介绍ARIMA和Holt-Winters这两个经典的时间序列方法及其在业务中的效果。

(1)ARIMA

ARIMA方法是一种结合了AR(Auto Regression,自回归)和MA(Moving Average,移动平均)的经典时间序列方法。下面简单介绍我们的建模实践。

yt:时间序列的观测序列。

et:未观测到的白噪声序列。

AR(p)(Auto Regression,自回归模型),下个预测值是前p个观测值的线性组合:

其中,et是白噪声序列。MA(q)(Moving Average,移动平均模型),下个预测值是白噪声序列前q项的线性组合:

可逆MA(q)过程可以转成AR过程,同时在之后求解参数时会求出每一项噪声序列。

ARMA(p,q),自回归移动平均模型,是AR与MA的结合:

P阶AR和q阶MA均要求序列平稳(不随时间改变的均值与方差)、可逆。

ARIMA(p,d,q),差分自回归移动平均模型:先将序列进行d阶差分,使序列平稳,再执行ARMA(p,q)模型。

差分:消除趋势性、季节性。

Δyt=yt-yt-1 前后1个时间窗口的差分消除趋势性。

Δyt=yt-yt-s 前后s个时间窗口的差分消除季节性。

ARIMA模型建模步骤如下:

·差分使序列平稳,差分次数d由人工观察序列的趋势性和季节性来确定;

·模式识别ARMA(p,q),人工定阶通过观察自相关ACF与偏自相关图PACF,自动定阶通过grid search(p,q)计算模型AIC与BIC最小的参数(auto arima);

·参数估计:识别回归项的系数,方法有矩估计、最小二乘法等;

·残差分析:残差=预测值-真实值,判断残差是否为白噪声序列;

·预测:根据模型的递推公式预测未来每一步的值。

(2)Holt-Winters

Holt-Winters方法即三次指数平滑的方法,将一条序列分解为历史各个时间点的加权递推。

(3)业务算法效果

业务场景为预测40多个仓,每个仓未来7天和30天内每个时间点的GMV。对比的方法包括如下几种。

·Baseline:周同比。拿过去星期同比的N个时间点的平均值当作未来N个时间点的预测,如预测下周四的销量时,使用过去4个周四的销量的均值。

·ARIMA/Holt-Winters:经典的时间序列模型。

·多模型ensemble:这里模型的ensemble方法借鉴AdaBoost,对模型的历史权重和本次误差做平衡加权。

其中,εi为模型i预测的误差,αi为基于模型i的误差计算该模型的权重,误差εi越小的模型,话语权αi越大。Z为归一化因子表征所有模型的总加权权重(基于模型当前归一化权重λi和话语权计算得到),λi为模型i在当前的归一化加权权重。

图1-23展示了各种方法的对比效果,在时序预测问题上,周同比已经是个较强的Baseline。在我们的实验里,Holt-Winters单模型可以比Baseline准确率提升2.4%,ARIMA、Holt-Winters与周同比多模型的ensemble可以比Baseline准确率提升6.7%,达到较好效果。

至此,我们总结了在新零售业务中常见的销量预测问题的解决方法,介绍了单品维度的基于回归机器学习模型的销量预测,以及聚合维度如仓维度、类目维度的基于时间序列的预测模型。

图1-23 预测效果比较