当前位置:首页 期刊杂志

基于机器学习的电商秒杀商品点击率预估模型设计与实现

时间:2024-05-04

周贺阳

(北京云杉世界信息技术有限公司 北京市 100006)

1 国内外研究现状

电商秒杀系统[1],就是网络卖家发布一些超低价格的商品,所有买家在同一时间网上抢购的一种销售方式。由于商品价格低廉,往往一上架就被抢购一空,有时只用一秒钟。2011年以来,在淘宝京东等大型购物网站中,秒杀活动是非常的一种形式。为了增加秒杀商品的营业额,提高秒杀商品的点击率ctr[2]是非常重要的事情,常见的ctr预估方案是利用LR[3]逻辑斯特回归来预测,这种方案简单效果也很好,在工业界得到了大规模推广,但是LR是强记忆模型对于泛化特征并不友好。直接利用深度学习来预测秒杀ctr[7]也是一种不错的方案,但模型比较重,在线上环境部署的要求比较高。

对于用户对秒杀商品的泛化特征提取可以通过隐语义模型[6]来提取,隐语义模型更加注意挖掘用户秒杀包含商品之间的泛用信息。具体来说隐语义模型和协同过滤有点像,协同过滤中的相似性都是基于现实世界中具有实际意义的语义维度来定义的。类比在SVM(Support Vector Machine)中的核函数等模型,将数据映射到高维空间,调整坐标轴,以使得数据在新的空间中更好分的这个思想,调整后的空间和维度可以比现实世界中具有实际语义的空间和维度能更好地描述事物对象。也就是说,如果可以把事物的描述通过某种转换,变换到一个新的语义空间,可能会更好地描述事物的相似性。

2 总体框架

本文总体结构借鉴了谷歌Wide&Deep[8]网络的思路,将用户对秒杀商品特征分为三种,分别为用户对秒杀商品的记忆特征、用户秒杀商品泛化特征、用户秒杀商品时间序列特征,其中记忆特征承担了wide部分,泛化特征和时间序列特征承担了deep部分,然后通过XGBoost模型将wide部分和deep部分联合进行训练。

3 特征表示

3.1 用户秒杀商品记忆特征

对于用户秒杀商品而言,需要首先提取其记忆特征,记忆特征主要分为三个方面,首先是用户的特征包含户的年龄,性别,地理位置,职业,手机平台等,然后是秒杀商品的特征,包括秒杀商品信息、商品一级分类信息、商品二级分类信息、秒杀商品图片信息等,最后是环境上下文特征,包括星期、所处的页面,用户对于ctr的反馈等。这些特征有一个共同点就是属于显性的特征,如果出现在模型中,属于强记忆特征,基于记忆的推荐通常更贴近主题,并且与用户已经执行的操作直接相关。

获取到上述记忆特征后,需要进行特征的离散化,以秒杀商品的反馈ctr,用户年龄,性别三个特征为例。反馈ctr是一个浮点数,直接作为特征是可以的,假设1号特征就是反馈ctr。对应年龄来说就不是这样了,因为年龄不是浮点数,而且年龄的20岁跟30岁这两个数字20,30大小比较是没有意义的,相加相减都是没有意义的,哪怕用逻辑化公式再比较,得到的值也是比较大的,但是往往20岁的人跟30岁的人对同一个秒杀商品的兴趣差距不会那么大。解决这样的情况的方法就是,每个年龄一个特征,如总共只有20岁到29岁10种年龄,就把每个年龄做一个特征进行OneHot编码转化为对应的二进制,这样的特征称为离散化特征。

离散化完成后会进行特征交叉,比如对于生鲜电商来说,黄焖鸡用户更加喜欢鸡肉用品,酸菜鱼用户更加喜欢鱼类,就可以用用户的门店属性跟商品分类属性的交叉得到的特征值。还有很多其他的方式可以进行交叉,比如秒杀商品跟用户经济实力的交叉特征,秒杀商品跟手机平台的交叉特征,秒杀商品跟地域的交叉特征,用户和秒杀活动的交叉特征,本文的离散特征和交叉特征总共47个。

3.2 用户秒杀商品的泛化特征

除了上述的用户秒杀商品记忆特征外,泛化特征也是很重要的一种补充。记忆能力”可以被理解为模型直接学习并利用历史数据中物品或者特征的“共现频率”的能力。“泛化能力”可以被理解为模型传递特征的相关性,以及发掘稀疏甚至从未出现过的稀有特征与最终标签相关性的能力。

协同过滤能够很好的解决用户商品相似性问题但泛化能力不足。为了增强泛化能力,从协同过滤中衍生出矩阵分解模型(Matrix Factorization, MF)或者叫隐语义模型, 就是在协同过滤共现矩阵的基础上,使用更稠密的隐向量表示用户和物品,挖掘用户和物品的隐含兴趣和隐含特征。

本文利用Funk-SVD[5]矩阵分解算法进行矩阵分解,Funk-SVD的思想为: 把求解上面用户和秒杀商品两个隐矩阵的参数问题转换成一个最优化问题,可以通过训练集里面的观察值利用最小化来学习用户矩阵和秒杀物品矩阵,具体如下所示:

其中rui是用户对秒杀商品的下单次数,是用户矩阵,qi是秒杀商品矩阵,用户矩阵和秒杀商品矩阵的维度都为64,也就是用户和秒杀商品都会转化为64维的向量,训练时会采用梯度下降法来求解上述问题,其中分解时的学习率alpha 为0.1,正则化系数lmbda为0.1, 最大迭代次数为max_iter为100。

3.3 用户秒杀商品时间序列特征

由于用户对每天秒杀商品的点击关系是一个比较典型的时间序列问题,本文用lstm来提取其时间序列特征,并将lstm最后一个序列ot的状态作为XGBoost模型的特征输入,如下所示:

长短期记忆网络(LSTM, Long Short-Term Memory)是一种时间循环神经网络,是为了解决一般的RNN(循环神经网络)存在的长期依赖问题而专门设计出来的,所有的RNN都具有一种重复神经网络模块的链式形式。在标准RNN中,这个重复的结构模块只有一个非常简单的结构,例如一个tanh层。LSTM 同样是这样的结构,但是重复的模块拥有一个不同的结构。不同于单一神经网络层,这里是有四个,以一种非常特殊的方式进行交互。

LSTM如图1所示,内部主要有三个阶段:忘记阶段,这个阶段主要是对上一个节点传进来的输入进行选择性忘记。简单来说就是会 “忘记不重要的,记住重要的”。具体来说是通过计算得到的来作为忘记门控,来控制上一个状态的哪些需要留哪些需要忘。选择记忆阶段,这个阶段将这个阶段的输入有选择性地进行“记忆”。主要是会对输入进行选择记忆。哪些重要则着重记录下来,哪些不重要,则少一些。当前的输入内容由前面计算得到的表示。输出阶段,这个阶段将决定哪会被当成当前状态的输出。

图1:lstm网络结构

本文选用的时间序列输入特征包含如下:

(1)用户按天的秒杀点击行为时间序列,衡量用户秒杀的点击习惯;

(2)用户秒杀商品点击距离上一次点击天数时间序列,衡量用户商品的点击周期;

(3)用户秒杀商品下单距离上一次下单天数时间序列,衡量用户商品的下单周期;

(4)用户下单时间序列,衡量用户下单按天的购买习惯;

(5)用户下单距离上一次下单天数时间序列,衡量用户下单的购买周期;

(6)用户下单按天购买商品数量时间序列,衡量用户下单按天购买商品数量习惯;

(7)用户秒杀商品下单星期时间序列,衡量用户秒杀商品下单对星期的习惯。

4 分类模型

4.1 算法设计

本文采用 XGBoost[4]来进行最终的秒杀商品点击预测,XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了GBDT算法并进行了算法和工程上的许多改进,被广泛应用在Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。XGBoost是有k个基模型组成的一个加法模型,假设我们第t次迭代要训练的树模型是ft(x),则有:

(1)设定函数初始值F0,为一个恒值函数,论文中基于变量优化出恒值,实际上也可以给定任意值或者直接为0。

(2)根据参数M,进行M次迭代,不断将当前函数Fm-1往最优函数F*空间上逼近,逼近方向就是当前函数下的函数负梯度方向。由于优化函数,而非变量,本质上属于泛函优化。

(3)每次迭代计算出函数负梯度,基于训练数据构建模型来拟合负梯度。原则上可以选择任何模型:树模型,线性模型或者神经网络等等,很少框架支持神经网络,如果用树模型进行拟合进行CART建树过程。

(4)优化步长,根据目标函数来最优步长ρm,属于变量优化,并更新当前函数,继续迭代。框架并没有收缩机制来控制过拟合,采用树模型和线性模型也可能过度拟合,目前现代的boosting框架都支持收缩,即最终的优化步长应乘以shrinkage参数:。

本文将输入的用户商品记忆特征、用户商品隐语义特征、用户秒杀商品时间序列特征进行拼接后作为最终的特征输入,将用户秒杀商品当天的是否点击作为预测标签,然后利用XGBoost进行训练,训练学习速度参数learning_rate为0.1,迭代次数为n_estimators为100,最大树深度max_depth是7,子树观测权重之和的最小值min_child_weight为1,损失参数为binary:logistic二分类的逻辑回归,最终模型返回预测的概率。

4.2 算法结果

本文选择四种模型进行对比,分别为LR、决策树、随机森林和本文模型,模型评价选择Auc(ROC曲线下的面积)和Acc(准确率)两个指标,详细结果见表1所示,其中离线部分和LR、决策树、随机森林三个模型均有对比结果,线上A/B测试部分对比了baseline最好的随机森林,这样通过离线和在线两种方式更能对本文提出的模型进行客观的评价。

表1:算法结果对比

算法随机抽取线上50000条标准的秒杀商品数据进行评测,训练集和测试集、的比例为7:3。由于采用特征选择后,可以看到模型效果,LR、决策树、随机森林都是属于传统的机器学习模型,用的特征也都是以记忆特征为主,本文在以前的模型基础上主要增加了lstm提取的时间序列特征和用户商品之间的隐语义特征,相比较最好的baseline随机森林,本文提出的模型在Auc增加了5.3%,Acc增加了4.6%,线上A/B测试点击率提高了4.2%。

5 总结和展望

在本文中,我们提出了一种将记忆特征和泛化特征相结合来进行秒杀商品点击预估的机器学习方案,在记忆特征保留了传统的用户秒杀商品的交互特征,在泛化特征方面引入了隐语义分解和lstm时间序列来分别提取泛化特征和时间序列特征,实验表明这样在保证模型轻量级的前提下,可以有效的提高线上秒杀商品的点击率。在未来,我们将在这些问题上继续实践我们的方法,并进一步地设计更完善的算法结构来解决类似的问题。

免责声明

我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!