本发明涉及推荐系统中的评分预测领域,具体涉及一种联合主题模型和异质信息网络的评分预测方法。
背景技术:
预测用户对未购买商品的打分情况,目前存在三种类型的方法:
第一种是根据用户历史评分记录,使用协同过滤实现评分预测。此种方法对于稀疏的用户评分数据会造成冷启动问题。
第二种通过利用评论和评分信息来实现评分预测,lda是一种比较传统的分析评论数据的方法,但目前使用的更多的是通过cnn等深度学习来处理评论信息。此种方法忽视商品固有的属性信息和用户共同购买信息预测效果不佳。
第三种通过商品的属性信息和用户的共同购买信息来构建异质信息网络来实现评分预测。此种方法忽视用户的评论信息,无法准确的构造用户商品向量。我们的模型能充分利用上述信息,从而提高模型预测的准确性。
技术实现要素:
本发明针对现有技术的不足,提供一种联合主题模型和异质信息网络的评分预测方法,以解决评分预测中出现的冷启动,可解释性不强,准确率不高的问题。
为解决技术问题,本发明的解决方案包括以下步骤:
步骤(1)针对指定用户商品对,利用主题模型提取评论信息,从而构建用户和商品的向量表示;
步骤(2)利用商品属性信息和用户共同购买信息构建异质信息网络;
步骤(3)从异质网络中提取出用户商品对的最终关系表示向量;
步骤(4)针对用户商品对,连接用户向量、关系表示向量、商品向量表示,并输入到afm实现评分预测。
步骤(1)具体实现如下:
1-1.首先通过双向lstm获取评论中某个单词的上下文向量表示。假设用户表示为一个k维的潜在因子向量,其中的每一维表示用户对相关主题喜爱程度;即k表示主题的个数。
1-2.传统的lda模型假设文档是主题的多项式分布,主题是单词的多项式分布;由于每条评论对于每个主题的重要性是不一样的,不同单词对主题的重要程度也不一样,因此我们为每一个主题设置一个上下文主题向量vk∈rdim,对于用户的第i条评论,表示为(wi,1,wi,2,wi,3…,wi,t),其中t表示单词的个数,wi,t表示单词对应的上下文表示向量,
首先如公式(1),通过一层的mlp获取单词wi,t在第k个主题下的隐藏表示
最终第i条评论,映射到每一个主题之后的最终表示为ci=[ci,1,ci,2,…,ci,k];其中ci,k表示第i条评论对第k个主题相关程度值;
1-3.首先针对每个用户获取u∈rlu×k,其中lu表示用户评论的个数,k表示主题的个数,也是用户表示向量的维度.u=[c1,c2,…,clu],其中ci∈rk表示用户第i条评论的表示向量.同理针对每个商品我们用v∈rlv×k,其中lv表示商品评论的条数.如下式中,我们通过直接相乘获得关联矩阵的结果,然后对每行元素的最大池化来获取此条评论的重要程度,接着通过一个softmax层获取标准化的重要程度值,最后通过用户矩阵中行向量的线性加权来获取最终的用户表示;
wr=umyt(5)
其中m∈rk×k,表示可训练的中间矩阵。wr∈rlu×lv;表示最终获得的关联矩阵
接着通过最大行池化来计算每条评论的重要程度,并最终获得用户的一个向量表示.:
au=softmax(maxrow(wr))(6)
au∈rlu×1向量的每一维表示对应评论的重要程度权重值,
步骤2、构建异质信息网络:
利用商品属性信息和用户共同购买信息构建异质信息网络,根据三种元路径构建异质信息网络,三种元路径分别为ubub、ubcatb和ubbrdb,其中ubub表示用户共同购买信息;ubcatb表示和用户以前购买商品的类别相同的商品;ubbrdb表示和用户以前购买商品的品牌相同的商品。
步骤3、提取商品对的表示向量;
3-1.首先通过metapath2vec++获取所有节点的初始向量表示,提取信息的时候采用cnn卷积每种类型元路径的所有实例数据:
其中,hu,i,p,s∈rl1表示对于指定的用户和商品对,元路径类型为p的某个具体路径s卷积后的向量表示;fu→i,p∈rl1表示对于指定的用户商品对,元路径类型为p的关联向量表示。
3-2.通过注意力机制实现不同路径信息的融合:
用fu→i表示对于指定用户商品对,融合所有类型的元路径实例之后的向量表示,pu→i表示用户u到商品i的三种元路径类型集合,由于最终要进行评分预测,把从评论中提取的信息也关联到attention中,最终我们设计一个两层的结构来实现attention.
au,i,p=relu(w2αu,i,p+b)(11)
其中[]表示的是连接操作,
接着通过softmax层标准化权重大小,然后通过线性加权获得用户商品对的表示向量:
其中fu→i,p表示用户u和商品i,在元路径类型为p下的关联向量,au,i,p表示对用关联向量的权重系数.
步骤4、实现评分预测:
针对用户商品对,连接用户向量、关系表示向量、商品对的表示向量,并输入到afm实现评分预测。把三个向量直接连接组成最终afm输入x,其中
其中,
步骤5、根据模型计算出的预测评分数据和真实评分数据,计算rmse值,并把此值作为模型效果的评价指标。
本发明有益效果如下:
本发明利用评论信息、商品的属性信息、用户共同购买信息来实现评分预测,由于充分利用上述所有的信息,所以能够获得更好的效果,避免冷启动以及增强可解释性
附图说明
图1是本发明的整体实施方案流程图;
图2是本发明工艺实施方案的具体流程图;
图3是本发明的深度学习评分预测模型网络架构。
具体实施方式
附图的公开了本发明所涉及优选实施例的流程示意图;以下将结合附图详细的说明本发明的技术方案。
步骤1、构建用户和商品的向量表示:
1-1首先通过双向lstm获取评论中某个单词的上下文向量表示。假设用户可以表示为一个k维的潜在因子向量,其中的每一维表示用户对相关主题喜爱程度.
1-2传统的lda模型假设文档是主题的多项式分布,主题是单词的多项式分布;由于每条评论对于每个主题的重要性是不一样的,不同单词对主题的重要程度也不一样,因此我们为每一个主题设置一个上下文主题向量vk∈rdim,对于用户的第i条评论,表示为(wi,1,wi,2,wi,3…,wi,t),其中t表示单词的个数,wi,t表示单词对应的上下文表示向量,首先如公式(1),通过一层的mlp获取单词wi,t在第k个主题下的隐藏表示
最终第i条评论,映射到每一个主题之后的最终表示为ci=[ci,1,ci,2,…,ci,k];其中ci,k表示第i条评论对第k个主题相关程度值;
1-3首先针对每个用户我们获取u∈rlu×k,其中lu表示用户评论的个数,k表示主题的个数,也是用户表示向量的维度.u=[c1,c2,…,clu],其中ci∈rk表示用户第i条评论的表示向量.同理针对每个商品我们用v∈rlv×k,其中lv表示商品评论的条数.如下式中,我们通过直接相乘获得关联矩阵的结果,然后对每行元素的最大池化来获取此条评论的重要程度,接着通过一个softmax层获取标准化的重要程度值,最后通过用户矩阵中行向量的线性加权来获取最终的用户表示.
wr=umyt
其中m∈rk×k,表示可训练的中间矩阵。wr∈rlu×lv;表示最终获得的关联矩阵。接着我们通过最大行池化来计算每条评论的重要程度,并最终获得用户的一个向量表示.
au=softmax(maxrow(wr))
其中,au∈rlu×1向量的每一维表示对应评论的重要程度权重值,
步骤2、构建异质信息网络:
利用商品属性信息和用户共同购买信息构建异质信息网络,主要根据三种元路径构建异质信息网络:
包含三种元路径其中ubub表示用户共同购买信息;ubcatb表示和用户以前购买商品的类别相同的商品;ubbrdb表示和用户以前购买商品的品牌相同的商品.
步骤3、提取商品对的表示向量;
3-1首先通过metapath2vec++获取所有节点的初始向量表示,提取信息的时候采用cnn卷积每种类型元路径的所有实例数据,
其中hu,i,p,s∈rl1,表示对于指定的用户和商品对,元路径类型为p的某个具体路径s卷积后的向量表示.fu→i,p∈rl1,对于指定的用户商品对,元路径类型为p的最终向量表示.
3-2注意力机制来实现不同路径信息的融合:我们用fu→i表示对于指定用户商品对,融合所有类型的元路径实例之后的向量表示,pu→i表示用户u到商品i的三种元路径类型集合,由于最终要进行评分预测,我们把从评论中提取的信息也关联到attention中,最终我们设计一个两层的结构来实现attention.
au,i,p=relu(w2αu,i,p+b)
其中[]表示的是连接操作,
接着通过softmax层标准化权重大小,然后通过线性加权获得用户商品对的表示向量.
其中fu→i,p表示用户u和商品i,在元路径类型为p下的关联向量,au,i,p表示对用关联向量的权重系数.
步骤4、实现评分预测:
针对用户商品对,连接用户向量、关系表示向量、商品对的表示向量,并输入到afm实现评分预测。把三个向量直接连接组成最终afm输入x,其中
其中,
步骤5、根据模型计算出的预测评分数据和真实评分数据,计算rmse值,并把此值作为模型效果的评价指标。
6)其中训练联合评分预测模型的步骤如下:
6.1随机把数据分为三部分,比例为8∶1∶1,一部分为训练集,其它两部分为测试集和验证集
6.2对训练集构造商品属性和用户共同购买信息的异质信息网络,对训练集中的评论信息进行预处理。使用metapath2vec++初始化异质网络中每个点的向量表示。
6.3将评论数据送入主题模型中进行提取,通过cnn卷积提取异质信息网络中元路径信息。然后把数据向量连接起来,直接送入到afm中实现评分预测。