一种考虑库存约束的神经协同过滤的产品推荐方法

文档序号:33562254发布日期:2023-03-22 15:53阅读:131来源:国知局
一种考虑库存约束的神经协同过滤的产品推荐方法

1.本发明涉及信息推荐的技术领域,特别涉及一种考虑库存约束的神经协同过滤的产品推荐方法。


背景技术:

2.随着网络技术的快速发展,网络信息成几何式地爆炸增长。过量的信息需要推荐系统来帮助解决用户信息过载方面的问题,现有的推荐系统多致力于提升个性化推荐的准确性,其中准确性被界定为消费者偏好和推荐商品之间的契合度。但现有推荐方法通常不考虑库存信息或者假设产品库存量是无限的,进而可能导致推荐的商品出现缺货情况,严重影响了消费者的购物体验。这一发现促使研究人员设计考虑产品库存约束和用户偏好的推荐系统。
3.最近关于考虑库存约束研究使用的方法主要基于两个领域,分别是基于机器学习,和基于运筹优化的。文献[recommendation with capacity constraints.proceedings of the 2017 acm on conference on information and knowledge management.2017]设计了一个既优化推荐准确性,又优化了符合容量限制的预期项目使用框架,并结合三个潜在因素模型验证了其有效性。文献[stock constrained recommendation in tmall.in proceedings of the 21th acm sigkdd international conference on knowledge discovery and data mining.2015]根据用户偏好和不同商品的库存大小,通过求解一个n
×
n的非光滑矩阵联合优化所有用户的推荐商品。虽然这些研究通过机器学习和运筹优化的方法在推荐的过程中考虑了库存信息,但是所使用的传统机器学习算法矩阵分解的潜在因素空间简单的元素积的方法只能捕捉用户和产品的线性关系,而无法捕捉样本中更加深层的非线性关系,因此获得的推荐精度较低。


技术实现要素:

[0004]
本发明为了克服现有技术存在的不足之处,提出一种考虑库存约束的神经协同过滤的产品推荐方法,以期对可能产生缺货的产品进行惩罚,减少推荐系统推荐用户缺货产品的概率,从而能提高推荐的准确率和用户的满意度。
[0005]
本发明为达到上述发明目的,采用如下技术方案:
[0006]
本发明一种考虑库存约束的神经协同过滤的产品推荐方法的特点是按如下步骤进行:
[0007]
步骤1、构建用户对产品的评分数据集合和产品的库存数据集合:
[0008]
步骤1.1、从包含有库存信息变化的用户订单记录数据库中获取多个订单评分数据并构成评分数据集合,且每个订单评分数据包括:一个用户id,一个产品id,用户对产品的评分时间、用户对当前订单的评分;
[0009]
步骤1.2、由每个订单评分数据中的产品id获取用户订单记录数据库中对应的库存信息并构成产品的库存数据集合;
[0010]
步骤1.3、使用留一法将评分数据集合划分训练集与测试集:
[0011]
将用户i对所有订单的评分按照以评分时间的先后顺序进行降序排序,并生成用户i的评分序列,从而得到所有用户的评分序列,并由所有用户的评分序列中的第一个评分构成验证集d,所有用户的剩余评分构成训练集t;
[0012]
步骤2、构建神经协同过滤推荐模型,包括:输入层、嵌入层、神经协同过滤层和输出层;
[0013]
步骤2.1、所述输入层对用户i的用户id和产品j的产品id进行one-hot编码,得到用户i的长度为m,维度为1的二进制用户向量以及长度为n的二进制产品向量且xi中只有第i个元素为1,其余的元素均为0;x
′j中只有第j个元素为1,其余的元素均为0;
[0014]
步骤2.2、定义并随机初始化用户的k维潜在因素嵌入矩阵pm×k、产品的k维潜在因素嵌入矩阵qn×k;
[0015]
所述嵌入层将用户i的二进制用户向量与用户的k维潜在因素嵌入矩阵pm×k进行元素积计算,生成用户i的嵌入向量pi;将产品j的二进制向量与产品的k维潜在因素嵌入矩阵qn×k进行元素积计算,生成产品j的嵌入向量qj,其中,m表示用户总数,n表示产品总数,k表示嵌入向量潜在空间的维度;
[0016]
步骤2.3、所述神经协同过滤层包含:广义矩阵分解层和多重感知器;
[0017]
步骤2.3.1、所述广义矩阵分解层利用式(1)得到用户i与产品j的线性关系表示
[0018][0019]
式(1)中,

表示元素积;表示用户i在广义矩阵分解层中的嵌入向量,表示产品j在对广义矩阵分解层中的嵌入向量;
[0020]
步骤2.3.2、所述多重感知器的输入层利用式(2)得到用户i和产品j的拼接嵌入向量z1:
[0021][0022]
式(2)中,φ表示输入层的映射函数,表示用户i在多重感知器层中的嵌入向量,表示产品j在多重感知器层中的嵌入向量;
[0023]
当c=1时,以拼接嵌入向量z0作为所述多重感知器的第c-1层隐藏层的输入z
c-1
,并利用式(2)得到第c层隐藏层的输出zc,并将所述多重感知器的最后第c层的输出zc作为和的非线性关系表示φ
mlp

[0024][0025]
式(2)中,wc,bc,ac分别表示第c层感知器的权重矩阵,偏差向量和激活函数relu,φc表示多层感知器的第c层隐藏层的映射函数;t表示转置;
[0026]
步骤2.4所述输出层利用式(4)得到用户i对产品j的预测评分
[0027][0028]
式(4)中,σ表示激活函数sigmoid,h表示输出层的权重;
[0029]
步骤3、构建损失函数:
[0030]
步骤3.1、利用式(7)构建均方差损失函数l
mes

[0031][0032]
式(7)中,r
ij
表示用户i对产品j的实际评分;
[0033]
步骤3.2、构建库存损失函数:
[0034]
步骤3.2.1、利用式(8)预估用户i的用户倾向ui:
[0035][0036]
式(8)中,fi表示用户i被推荐的总次数,mi表示用户i与所有产品的交互次数;
[0037]
步骤3.2.2、利用式(9)预估所有用户对产品j的总的消费期望ej:
[0038][0039]
式(9)中,σ表示sigmoid激活函数;
[0040]
步骤3.2.3、利用式(10)生成罚函数pt:
[0041][0042]
式(10)中,cj表示产品j的期末库存,ij表示产品j的期初库存,ψ(
·
)表示可行域为[0,1],值域为[0,1]的罚因子函数,并有:
[0043][0044]
步骤3.2.4、利用式(12)生成库存损失函数l
inv

[0045]
l
inv
=log(1+exp(pt))
ꢀꢀꢀ
(12)
[0046]
步骤3.3、利用式(13)构建目标损失函数l:
[0047]
l=α
×
l
mse
+(1-α)
×
l
inv
ꢀꢀꢀ
(13)
[0048]
式(13)中,α表示加权参数,是一个值域为[0,1]的固定值;
[0049]
步骤3.4、基于所述训练集t和验证集d,利用反向传播和随机梯度下降法对神经协同过滤推荐模型进行训练,并使得目标函数l最小以更新模型参数,当训练次数大于最大迭代次数时停止训练,并得到最优的神经协同过滤推荐模型;
[0050]
步骤4、获取推荐结果:
[0051]
将目标用户id输入所述最优的神经协同过滤推荐模型中,并将输出的预测评分通过sigmoid激活函数得到目标用户对产品的0至1之间的推荐值,并选取前k个产品构成推荐列表推荐给目标用户。
[0052]
本发明一种电子设备,包括存储器以及处理器,其特点在于,所述存储器用于存储支持处理器执行所述产品推荐方法的程序,所述处理器被配置为用于执行所述存储器中存储的程序。
[0053]
本发明一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,其
特点在于,所述计算机程序被处理器运行时执行所述产品推荐方法的步骤。
[0054]
与现有技术相比,本发明的有益效果在于:
[0055]
(1)本发明引入的深度神经网络学习用户和产品之间关系,深度学习方法相比传统的机器学习模型能够捕获项目和用户之间深度的复杂的非线性关系,从而获得了更高的产品推荐预测精度。
[0056]
(2)本发明提出了一种使用罚函数概念的损失函数,将库存约束转化为无约束问题。在模型的训练阶段,对低库存的产品进行惩罚,从而在模型参数层面降低了此类产品的被推荐概率,以此方式大大地减少了推荐系统推荐缺货产品的现象。
附图说明
[0057]
图1为本发明中网络的程框图;
[0058]
图2为本发明的总体流结构图。
具体实施方式
[0059]
本实施例中,一种考虑库存约束的神经协同过滤推荐方法,综合考虑了库存信息对推荐方法的约束,利用罚函数将库存约束转化为无约束问题,将考虑深度学习的神经协同过滤模型在模型训练优化的过程中,降低模型对于低库存产品的推荐概率,从而减少了推荐方法推荐缺货产品的现象,如图1所示,具体步骤如下:
[0060]
步骤1、构建用户对产品的评分数据集合和产品的库存数据集合:
[0061]
步骤1.1、从包含有库存信息变化的用户订单记录数据库中获取多个订单评分数据并构成评分数据集合,且每个订单评分数据包括:一个用户id,一个产品id,用户对产品的评分时间、用户对当前订单的评分,本实施例中,使用的数据包含有1,000,008条订单数据,总计包含有110,446个用户id,34,816个产品id;
[0062]
步骤1.2、由每个订单数据中的产品id获取用户订单记录数据库中对应的库存信息并构成产品的库存数据集合;
[0063]
步骤1.3、使用留一法将评分数据集合划分训练集与测试集:
[0064]
将用户i对所有订单的评分按照以评分时间的先后顺序进行降序排序,并生成用户i的评分序列,从而得到所有用户的评分序列,并由所有用户的评分序列中的第一个评分构成验证集d,所有用户的剩余评分构成训练集t;
[0065]
步骤2、构建神经协同过滤推荐模型,其神经模型图如图2所示包括:输入层、嵌入层、神经协同过滤层和输出层;
[0066]
步骤2.1、输入层对用户i的用户id和产品j的产品id费进行one-hot编码,得到用户i的长度为m,维度为1的二进制向量以及产品j长度为n,维度为1的二进制向量以及产品j长度为n,维度为1的二进制向量且xi中只有第i个元素为1,其余的元素均为0;x
′j中只有第j个元素为1,其余的元素均为0,本实施例中,得到用户i的长度m取值为110,446,产品j的长度为n为34,816;
[0067]
步骤2.2、定义并随机初始化用户的k维潜在因素嵌入矩阵pm×k、产品的k维潜在因素嵌入矩阵qn×k;
[0068]
嵌入层将用户i的二进制用户向量与用户的k维潜在因素嵌入矩阵pm×k进
行元素积计算,生成用户i的嵌入向量pi;将产品j的二进制向量与产品的k维潜在因素嵌入矩阵qn×k进行元素积计算,生成产品j的嵌入向量qj,其中,m表示用户总数,n表示产品总数,k表示嵌入向量潜在空间的维度;
[0069]
步骤2.3、神经协同过滤层包含:广义矩阵分解层和多重感知器;
[0070]
步骤2.3.1、广义矩阵分解层利用式(1)得到用户i与产品j的线性关系表示
[0071][0072]
式(1)中,

表示元素积;表示用户i在广义矩阵分解层中的嵌入向量,表示产品j的在对广义矩阵分解层中的嵌入向量;
[0073]
步骤2.3.2、多重感知器的输入层利用式(2)得到用户i和产品j的拼接嵌入向量z1:
[0074][0075]
式(2)中,φ表示输入层的映射函数,表示用户i在多重感知器层中的嵌入向量,表示产品j在多重感知器层中的嵌入向量;
[0076]
当c=1时,以拼接嵌入向量z0作为多重感知器的第c-1层隐藏层的输入z
c-1
,利用式(2)得到第c层隐藏层的输出zc,并将多重感知器的最后第c层的输出zc作为和的非线性关系表示φ
mlp

[0077][0078]
式(3)中,wc,bc,ac分别表示第c层感知器的权重矩阵,偏差向量和激活函数relu,φc表示多层感知器的第c层隐藏层的映射函数;t表示转置;
[0079]
本实施例中,设置隐藏层为5层,且将隐藏层的神经元个数分别设置为16,64,32,8。每一层的隐藏层皆为全连接层,为了防止模型训练的过程中出现过拟合的现象,本实施例中,在多重感知器的每一层中加入可以在训练过程随机杀死神经元的drop-out层,并将每一层drop-out层的参数p设定为0.5。
[0080]
步骤2.4输出层利用式(4)得到用户i对产品j的预测评分
[0081][0082]
式(4)中,σ表示激活函数sigmoid,h
t
表示输出层的权重;
[0083]
步骤3、构建损失函数:
[0084]
步骤3.1、利用式(7)构建均方差损失函数l
mes
以衡量模型的推荐精度:
[0085][0086]
式(7)中,r
ij
表示用户i对产品j的实际评分;
[0087]
步骤3.2、构建库存损失函数以减少低库存产品的推荐概率:
[0088]
步骤3.2.1、利用式(8)预估用户i的用户倾向ui:
[0089][0090]
式(8)中,fi表示用户i被推荐的总次数,mi表示用户i与产品的交互次数;
[0091]
步骤3.2.2、利用式(9)预估所有用户对产品j的总的消费期望ej:
[0092][0093]
式(9)中,σ表示sigmoid激活函数;
[0094]
步骤3.2.3、利用式(10)生成罚函数pt以在罚函数层面对低库存产品进行惩罚:
[0095][0096]
式(10)中,cj表示产品j的期末库存,ij表示产品j的期初库存,ψ(
·
)表示可行域为[0,1],值域为[0,1]的罚因子函数,本实施例中将一天作为一期的时间长度并有:
[0097][0098]
步骤3.2.4、利用logistic loss式(12)量化库存损失,并生成库存损失函数l
inv

[0099]
l
inv
=log(1+exp(pt))
ꢀꢀꢀ
(12)
[0100]
步骤3.3、利用式(13)构建目标损失函数l:,
[0101]
l=α
×
l
mse
+(1-α)
×
l
inv
ꢀꢀꢀ
(13)
[0102]
式(13)中,α表示加权参数,是一个值域为[0,1]的固定值,本实施例中,加权参数α取值为0.68;
[0103]
步骤3.4、基于所述训练集t和验证集d,利用反向传播和随机梯度下降法对神经协同过滤推荐模型进行训练,并使得目标函数l最小以更新模型参数,当训练次数大于最大迭代次数时停止训练,并得到最优的神经协同过滤推荐模型;
[0104]
步骤4、获取推荐结果:
[0105]
将目标用户id输入考虑库存约束的神经协同过滤推荐中,并将输出的预测评分通过sigmoid激活函数得到目标用户对产品的0至1之间的推荐值,并选取前k个产品构成推荐列表推荐给目标用户。本实施例中将top-k中的k取值为10,并且生成的推荐列表在常用的推荐衡量指标ndcg和hr中表现优秀。
[0106]
本实施例中,一种电子设备,包括存储器以及处理器,该存储器用于存储支持处理器执行上述产品推荐方法的程序,该处理器被配置为用于执行该存储器中存储的程序。
[0107]
本实施例中,一种计算机可读存储介质,是在计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行上述产品推荐方法的步骤。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1