技术领域
[0001] 本发明主要涉及数据推荐技术领域,具体涉及一种商品推荐方法、系统及存储介质。
相关背景技术
[0002] 随着互联网的快速发展,网络信息急剧增长,商品推荐面临的问题从过去的信息匮乏转变为如何在当前信息过载的环境下有效过滤信息,并获取有价值的信息。推荐方法是信息过滤技术的一种,旨在预测用户的偏好,并据此向用户推荐可能感兴趣的商品或内容,广泛应用于电子商务、流媒体服务、个性化学习等领域。
[0003] 在现实生活中,用户对商品的偏好不仅会受到社交好友对商品偏好的影响,而且在一定程度上还会受到社交好友的朋友对商品偏好的影响,也就是信任传播。而现有的推荐方法未考虑信任传播的影响,导致推荐的准确性较低。
具体实施方式
[0029] 以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
[0030] 如图1所示,本发明实施例提供的一种商品推荐方法,包括如下步骤:
[0031] 构建初始推荐模型,并将预先从购物平台上采集的用户数据导入所述初始推荐模型,所述初始推荐模型包括可靠性分析单元、建模单元和评分预测单元;
[0032] 通过所述初始推荐模型的可靠性分析单元对所述用户数据进行可靠性分析,得到可靠性值;
[0033] 通过所述初始推荐模型的建模单元对所述用户数据和所述可靠性值进行用户建模,得到用户特征表示向量,并对所述用户数据和所述可靠性值进行商品建模,得到商品特征表示向量;
[0034] 通过所述初始推荐模型的评分预测单元对所述用户特征表示向量和所述商品特征表示向量进行融合计算,得到预测评分;
[0035] 通过损失函数对所述预测评分与所述用户数据进行计算,得到损失值,根据所述损失值对所述初始推荐模型进行优化,得到推荐模型;
[0036] 通过所述推荐模型对导入的待推荐用户节点和待推荐商品节点进行计算,得到商品推荐结果。
[0037] 具体地,在初始推荐模型中,可靠性分析单元的输出与建模单元的输入连接,建模单元的输出与评分预测单元的输入连接。
[0038] 应理解地,导入多个待推荐用户节点和多个待推荐商品节点到推荐模型,通过推荐模型对多个待推荐用户节点和多个待推荐商品节点进行推荐预测,得到各个待推荐用户节点对多个待推荐商品节点的预测评分,将预测评分进行降序排序,选择排序结果在预设范围内的预测评分,将被选择预测评分所对应的商品推荐给对应的用户(即商品推荐结果)。
[0039] 本发明实施例中,通过从用户数据中获得用户可靠性值,在用户建模和商品建模过程中利用用户可靠性值对用户商品评分进行缩放(即加强推荐或减弱推荐),来完成信任传播的捕捉。用户特征表示向量包含了用户的初始偏好及用户的社交信息,商品特征表示向量包含了商品受欢迎程度,通过学习用户和商品的特征表示,可以挖掘用户对商品的偏好和兴趣,提高商品推荐的效果,使得推荐结果更加准确。
[0040] 优选地,所述用户数据包括多个用户节点和多个所述用户节点分别对应的邻居集合;
[0041] 所述通过所述初始推荐模型的可靠性分析单元对所述用户数据进行可靠性分析,得到可靠性值,具体为:
[0042] 根据多个所述邻居集合统计对应用户节点的一阶邻居的邻居的数量,得到多个所述用户节点的邻居数量序列;
[0043] 通过可靠性表达式分别对多个所述邻居数量序列进行编码转换,得到各个所述用户节点对应的上下文向量,并分别对多个所述上下文向量进行可靠性计算,得到各个所述用户节点对应的可靠性值,所述可靠性表达式为:
[0044]
[0045] 其中,ci为用户节点ui的上下文向量,Encoder为由LSTM单元组成的序列编码器,为用户节点ui的一阶邻居的邻居数量序列,用户节点ui邻居集合为用户节点ui的一阶邻居 的邻居数量,ri为用户节点ui
的可靠性值,minC为所有用户节点的上下文向量C的最小值,maxC为所有用户节点的上下文向量C的最大值。
[0046] 应理解地,用户数据包括多个用户节点和多个所述用户节点分别对应的邻居集合,分别统计与各个用户节点对应的邻居集合中邻居节点总数。如图2所示,用户节点u1的邻居节点总数为5,用户节点u2的邻居节点总数为3,用户节点u3的邻居节点总数为3,用户节点u4的邻居节点总数为3,用户节点u5的邻居节点总数为4,用户节点u6的邻居节点总数为1。用户节点u1的一阶邻居包括u2、u3、u4、u5和u6,用户节点u1的一阶邻居的邻居数量序列为<3,
3,3,4,1>。
[0047] 其中,可靠性表达式中上下文向量为上下文向量对应的范数,且通过numpy.linalg.norm()函数得到所有用户节点的上下文向量对应的欧几里得范数,并对所有欧几里得范数比较大小,获得最大值maxC和最小值minC。
[0048] 本发明实施例中,通过量化用户在社交网络(即购物平台)中的邻居的邻居的数量,将对应的邻居数量序列转换成用户节点的上下文向量,此向量包含了邻居数量序列的全局信息和关键特征,进而获得用户对应的可靠性值,可靠性值可以衡量用户在社交网络中的信任度和影响力,可靠性值的大小表示用户社交能力的强弱,值越大表示用户社交能力越强,则该用户的评分越具有参考意义,从而提高推荐结果的准确性和可信度。
[0049] 优选地,所述用户数据还包括多个商品节点和多个所述用户节点对应的商品评分;
[0050] 所述通过所述初始推荐模型的建模单元对所述用户数据和所述可靠性值进行用户建模,得到用户特征表示向量,具体为:
[0051] 分别将多个所述用户节点、多个所述用户节点对应的邻居集合、多个所述商品节点和多个所述用户节点对应的商品评分进行向量化处理,分别得到多个用户嵌入向量、各个所述用户节点对应的邻居嵌入向量、多个商品嵌入向量和各个所述用户节点对应的评分嵌入向量;
[0052] 分别对多个所述用户嵌入向量、多个所述商品嵌入向量、多个所述可靠性值和多个所述评分嵌入向量进行商品聚合,得到各个所述用户节点对应的用户商品嵌入向量,其中,各个所述用户节点对应的用户商品嵌入向量包括各个邻居集合中各个邻居节点对应的邻居商品嵌入向量;
[0053] 分别对多个所述用户嵌入向量和多个所述邻居商品嵌入向量进行社交聚合,得到各个所述用户节点对应的用户社交嵌入向量;
[0054] 通过用户特征表达式分别对各个所述用户商品嵌入向量和对应的所述用户社交嵌入向量进行计算,得到各个所述用户节点对应的用户特征表示向量,所述用户特征表达式为:
[0055]
[0056] 其中,hi为用户节点ui的用户特征表示向量, 为用户节点ui的用户商品嵌入向量, 为用户节点ui的用户社交嵌入向量,Wi为权重矩阵。
[0057] 本发明实施例中,将用户商品嵌入向量和用户社交嵌入向量拼接,再进行维度变换来得到一个合成的向量,此向量能够表征用户的偏好和用户社交信息。
[0058] 优选地,所述分别对多个所述用户嵌入向量、多个所述商品嵌入向量、多个所述可靠性值和多个所述评分嵌入向量进行商品聚合,得到各个所述用户节点对应的用户商品嵌入向量,具体为:
[0059] 通过交互向量表达式分别对多个所述可靠性值、多个所述商品嵌入向量和多个所述评分嵌入向量进行计算,得到各个所述用户节点对已评分商品的交互表示向量,所述交互向量表达式为:
[0060]
[0061] 其中,xij为用户节点ui对商品节点vj的交互表示向量,fU为多层感知器MLP,qj为商品节点vj对应的商品嵌入向量,eij为用户节点ui对商品节点vj评分对应的评分嵌入向量,ri为用户节点ui的可靠性值, 为两个向量的拼接操作;
[0062] 通过商品嵌入表达式分别对多个所述用户嵌入向量和对应的所述交互表示向量进行注意力分析,得到多个所述交互表示向量对应的关注度,将多个所述关注度分配给对应的交互表示向量,并对关注度分配结果进行聚合操作,得到各个所述用户节点对应的用户商品嵌入向量,所述商品嵌入表达式为:
[0063]
[0064] 其中,αij为用户节点ui对商品节点vj的关注度,pi为用户节点ui对应的用户嵌入向量, 为用户节点ui的商品嵌入向量,xij为用户节点ui对商品节点vj的交互表示向量,为用户节点ui评价过的商品集合,ReLU为激活函数,Tanh为激活函数, WI为权重矩阵, bI为偏置向量,T为矩阵转置, 为两个向量的拼接操作。
[0065] 具体地,通过多层感知器MLP推导商品嵌入向量和评分嵌入向量所对应的用户节点,并将该用户节点对应的可靠性值分配给评分嵌入向量,得到用户对已评分商品的交互表示向量;即通过可靠性值来衡量用户评价在社交传播中的参考价值,故将可靠性值分配给评分嵌入向量。
[0066] 通过两层神经网络对多个用户嵌入向量和对应的交互表示向量进行学习(即注意力分析),得到多个对应的交互表示向量的关注度,将多个关注度分配给对应的交互表示向量,并对多个具有关注度的交互表示向量进行聚合操作,得到各个所述用户节点对应的用户商品嵌入向量;即当一个用户对多个商品进行评分,根据关注度分配交互表示向量的权重值,经过聚合使模型重点关注用户的高评分商品,得到用户对商品的初始偏好。其中,两层神经网络包含两个隐藏层的神经网络架构。
[0067] 应理解地,当邻居集合中各个邻居节点作为用户节点时,该用户节点所对应的用户商品嵌入向量即为邻居节点对应的邻居商品嵌入向量,也就是将商品嵌入表达式中的用户节点ui替换成用户节点uk(即用户节点ui的邻居节点uk),替换后的商品嵌入表达式为:
[0068]
[0069] 其中,αkj为用户节点uk对商品节点vj的关注度,pk为用户节点uk对应的用户嵌入向量, 为用户节点uk的商品嵌入向量,xkj为用户节点uk对商品节点vj的交互表示向量,为用户节点uk评价过的商品集合,ReLU为激活函数,Tanh为激活函数, WI为权重矩阵, bI为偏置向量,T为矩阵转置, 为两个向量的拼接操作;
[0070] 在计算邻居商品嵌入向量 时,涉及的关注度αkj中, 此时商品节点vj代表的是用户节点uk交互过的任意商品,与用户节点ui交互过的任意商品节点vj表示符号相同,但实际代表的商品节点不同。
[0071] 本发明实施例中,将用户社交能力的强弱与用户对商品的评分关联,捕捉用户对商品的联系及评分信息,并且通过关注度反应出同一用户对不同商品的关联程度,再通过商品聚合来反应出用户对商品的初始偏好。
[0072] 优选地,所述分别对多个所述用户嵌入向量和多个所述邻居商品嵌入向量进行社交聚合,得到各个所述用户节点对应的用户社交嵌入向量,具体为:
[0073] 通过社交嵌入表达式分别对多个所述用户嵌入向量和多个所述邻居商品嵌入向量进行注意力分析,得到各个所述用户节点对应的用户社交强度,将多个所述用户社交强度分配给对应的邻居商品嵌入向量,并对社交强度分配结果进行聚合操作,得到各个所述用户节点对应的用户社交嵌入向量,所述社交嵌入表达式为:
[0074]
[0075] 其中,βik为用户节点ui与邻居节点uk的社交强度, 为用户节点ui对应邻居节点uk的邻居商品嵌入向量,pi为用户节点ui的用户嵌入向量, 为用户节点ui的社交嵌入向量,为用户节点ui的邻居集合,ReLU为激活函数,Tanh为激活函数, 、Ws为权重矩阵, bs为偏置向量, 为两个向量的拼接操作,T为矩阵转置。
[0076] 具体地,通过两层神经网络对多个用户嵌入向量和多个邻居商品嵌入向量进行学习(注意力分析),得到用户社交强度;其中,两层神经网络包含两个隐藏层的神经网络架构。
[0077] 本发明实施例中,通过用户社交强度反应用户与各个邻居节点的关联程度,基于用户社交强度帮助模型关注社交关系较强的社交好友的商品偏好,再通过社交聚合后得到用户所有社交好友的商品交互信息,即用户社交嵌入向量。
[0078] 优选地,所述对所述用户数据和所述可靠性值进行商品建模,得到商品特征表示向量,具体为:
[0079] 通过交互感知向量表达式分别对多个所述可靠性值、多个所述用户嵌入向量和多个所述评分嵌入向量进行计算,得到各个所述用户节点对已评分商品的意见交互感知表示向量,所述交互感知向量表达式为:
[0080]
[0081] 其中,yji为商品节点vj与用户节点ui的意见交互感知表示向量,fV为多层感知器MLP,pi为用户节点ui对应的用户嵌入向量,eij为用户节点ui对商品节点vj评分对应的评分嵌入向量,ri为用户节点ui的可靠性值, 为两个向量的拼接操作;
[0082] 通过商品特征表达式分别对多个所述商品嵌入向量和对应的所述意见交互感知表示向量进行注意力分析,得到多个所述意见交互感知表示向量的注意力权重,将多个所述注意力权重分配给对应的意见交互感知表示向量,并对注意力权重分配结果进行聚合操作,得到各个所述商品节点对应的商品特征表示向量,所述商品特征表达式为:
[0083]
[0084] 其中,μji为注意力权重,qj为商品节点vj对应的商品嵌入向量,yji为商品节点vj与用户节点ui的意见交互感知表示向量,hj为商品节点vj的特征表示向量, 为评价过商品节点vj的用户集合,ReLU为激活函数,Tanh为激活函数, Wj为权重矩阵,bj为偏置向量,T为矩阵转置, 为两个向量的拼接操作。
[0085] 具体地,通过两层神经网络对多个商品嵌入向量和对应的意见交互感知表示向量进行学习(即注意力分析),获取注意力权重,将注意力权重分配给意见交互感知表示向量分配权重后,聚合不同用户节点对同一商品节点的意见交互感知表示向量,得到商品的特征表示向量;其中,两层神经网络包含两个隐藏层的神经网络架构。
[0086] 本发明实施例中,根据意见交互感知表示向量捕捉商品对用户的联系及评分信息,并且通过注意力权重反应出不同用户对同一商品的关联程度,再通过用户聚合得到商品的受欢迎程度,即商品特征表示向量。
[0087] 优选地,所述通过所述初始推荐模型的评分预测单元对所述用户特征表示向量和所述商品特征表示向量进行融合计算,得到预测评分,具体为:
[0088] 通过评分计算表达式分别对各个所述用户节点对应的用户特征表示向量和各个所述商品节点对应的商品特征表示向量进行计算,得到各个所述用户节点对各个所述商品节点的预测评分,所述评分计算表达式为:
[0089]
[0090] 其中, 为用户节点ui对商品节点vj的预测评分,hi为用户节点ui的用户特征表示向量,hj为商品节点vj的商品特征表示向量,W1、W2、Wr为权重矩阵,b1、b2为偏置向量,Tanh为激活函数,T为矩阵转置, 为向量拼接操作。
[0091] 本发明实施例中,根据商品的受欢迎程度和用户对商品的偏好与用户的社交关系分析用户对各个商品的评分,以判断模型的推荐能力是否合格。
[0092] 优选地,所述通过损失函数对所述预测评分与所述用户数据进行计算,得到损失值,根据所述损失值对所述初始推荐模型进行优化,得到推荐模型,具体为:
[0093] 通过初始损失函数对所述预测评分与所述商品评分进行计算,得到初始损失值,所述初始损失函数为:
[0094]
[0095] 其中,L为初始损失值,rij为用户节点ui对商品节点vj的商品评分, 为用户节点ui对商品节点vj的预测评分;
[0096] 通过RMSprop算法按照所述初始损失值对所述初始推荐模型进行迭代优化,得到目标损失函数,根据所述目标损失函数更新所述初始推荐模型的模型参数,得到推荐模型。
[0097] 应理解地,RMSprop算法是一种自适应学习率的优化算法,主要用于解决梯度下降中的学习率调整问题,比如学习率选择不当导致的收敛速度慢或不收敛。
[0098] 本发明实施例中,根据预测评分与真实评分进行损失计算,再根据损失值对初始模型进行优化,来提升模型的推荐精确度。
[0099] 应理解地,本方案中的各个权重矩阵和各个偏置向量均可训练参数,训练为:
[0100] 首先使用函数随机初始化权重矩阵和偏置向量,并基于初始损失值通过反向传播算法和RMSprop算法不断更新权重矩阵和偏置向量,以最小化初始损失函数。
[0101] 具体地,使用初始化函数对权重矩阵和偏置向量进行初始化,其中偏置向量初始化为零;针对ReLU激活函数,使用Kaiming均匀分布初始化权重矩阵,针对Tanh激活函数,使用Xavier均匀分布初始化权重矩阵;通过反向传播算法计算初始损失值关于权重矩阵和偏置向量的梯度,通过RMSprop算法按照计算出的梯度更新各个权重矩阵和各个偏置向量。
[0102] 如图3所示,本发明实施例提供的一种商品推荐系统,包括:
[0103] 导入模块,用于构建初始推荐模型,并将预先从购物平台上采集的用户数据导入所述初始推荐模型,所述初始推荐模型包括可靠性分析单元、建模单元和评分预测单元;
[0104] 分析模块,用于通过所述初始推荐模型的可靠性分析单元对所述用户数据进行可靠性分析,得到可靠性值;
[0105] 建模模块,用于通过所述初始推荐模型的建模单元对所述用户数据和所述可靠性值进行用户建模,得到用户特征表示向量,并对所述用户数据和所述可靠性值进行商品建模,得到商品特征表示向量;
[0106] 预测模块,用于通过所述初始推荐模型的评分预测单元对所述用户特征表示向量和所述商品特征表示向量进行融合计算,得到预测评分;
[0107] 优化模块,用于通过损失函数对所述预测评分与所述用户数据进行计算,得到损失值,根据所述损失值对所述初始推荐模型进行优化,得到推荐模型;
[0108] 推荐模块,用于通过所述推荐模型对导入的待推荐用户节点和待推荐商品节点进行计算,得到商品推荐结果。
[0109] 本发明实施例提供的一种商品推荐系统,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现如上述的一种商品推荐方法。
[0110] 本发明实施例提供的一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,当所述计算机程序被处理器执行时,实现如上述的一种商品推荐方法。
[0111] 上述一种商品推荐系统及存储介质,可以参见如上对一种商品推荐方法进行具体描述的实施内容及其有益效果,在此不再赘述。
[0112] 需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
[0113] 以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。