1. 引言
推荐系统旨在为用户提供个性化的产品或服务推荐,以解决日益严重的信息过载问题[1]。推荐系统通过项目、用户以及项目与用户之间的交互的相关信息预测用户对项目的兴趣来向特定用户或企业推荐最合适的产品或服务,并提高用户的满意度和忠诚度[2]。推荐系统能在海量数据中自动帮助用户找到可能偏好的信息,产生了难以估量的商业价值,也获得了学术界和工业界的广泛关注[3]。
推荐算法的发展呈现出以下几个主要趋势:基于隐因子模型的推荐算法、基于用户画像的推荐算法、基于深度学习的推荐算法。
基于隐因子模型的推荐算法。矩阵分解是隐因子模型中常用且知名的方法之一[4]。它能够有效地将用户和物品的高维交互数据分解成低维的用户和物品的特征表示,从而提高推荐的效果和效率。常见的矩阵分解算法如SVD++ [5]在SVD基础上,增加了对用户行为的考虑,特别是用户与物品之间的隐式反馈(如用户浏览过某物品但未评分的影响)。Funk-SVD [6]旨在通过低秩矩阵分解来预测用户对未评分物品的评分,从而实现个性化推荐。
基于用户画像的推荐算法。用户画像是基于用户的行为数据、人口统计信息、兴趣偏好等多种维度的数据,综合分析和描绘出的一个用户的特征[7]。周[8]等融合多源数据构建用户画像,作为外部信息融入链路预测中,提高了算法的精度。Triyanna [9]等将用户的个人信息(年龄、性别、职业、地理位置)作为用户的基本画像,使用K-Means方法对用户进行聚类,实验结果显示,每个类中的MAE和RMSE都比聚类处理前要低。
基于深度学习的推荐算法。近年来,深度学习迅速发展,并在自然语言处理、图像处理等多个领域取得了显著成果[10]。Tegene [11]等将现有的深度学习方法与隐因子模型结合,通过嵌入技术生成的稠密用户和物品向量映射到两个神经网络架构中,从而预测评分。Lee [12]等通过嵌入层将用户和物品的内容信息转化为稠密特征向量,利用交叉卷积滤波器捕捉用户和物品特征之间的复杂交互关系,并通过全局池化技术减轻过拟合,从而实现有效的评分预测和个性化推荐。Dien等[13]提出了基于深度矩阵分解的学习资源和课程推荐方法,在DMF中,用户和学习资源两个嵌入特征被连接在一起,作为神经网络的输入,通过一个输出层来预测评分。
推荐系统发展至今仍面临一些问题:1) 大多数推荐算法仅依赖用户对物品的显式反馈,如用户–物品评分数据,往往忽视了用户的兴趣或隐式偏好,导致推荐效果难以达到最佳。2) 如何从复杂的用户–物品交互数据中有效提取并利用用户与物品的特征,是提升个性化推荐算法准确性的重要挑战。3) 当遇到新用户或新物品时,由于缺乏历史数据,推荐系统难以提供准确的推荐,进而面临冷启动问题。针对如何利用用户的兴趣或隐式偏好以及如何从复杂的交互数据中提取并利用用户和物品的特征,本文提出一种融合画像约束和潜在特征的深度推荐算法(Deep Portrait Feature and Latent Embedding Algorithm, DPFLE)。
2. 相关工作
LIBMF [14]是专门用于大规模数据的矩阵分解算法,它可以利用磁盘来缓存训练矩阵,并且能够在多核机器上并行计算,能够在处理非常大的用户–物品评分矩阵时保持高效的计算性能。因此,本文使用LIBMF对用户–物品评分矩阵进行处理,以提取用户以及物品的潜在特征,使用预先计算的潜在特征初始化算法中用户与物品的嵌入层。
注意力机制使模型能够根据输入数据中各部分的重要性动态调整关注点,从而更有效地捕捉关键信息[15]。DeepICF [16]通过神经网络学习物品之间的特征,Cheng [17]等提出了特征级别的注意力方法并应用在DeepICF上,以提高其性能。Zhai [18]等使用点乘的方式来实现自注意力模块的计算,包括AFT-Full、AFT-Simple、AFT-Local,其中AFT-Simple的时间和空间复杂度均为线性级别。本文利用线性注意力来捕捉输入数据中不同特征之间的相关性,减少计算复杂度的同时提升模型的性能。
推荐系统中的主要问题在于用户和物品之间的非线性交互以及大量的数据,这使得特征学习变得困难,在神经协同过滤(Neural Collaborative Filtering, NCF)中,通过神经网络隐式地学习了用户和物品之间的非线性特征表示[19]。利用神经网络能够捕捉用户和物品之间复杂的非线性关系,相较于传统的推荐算法能够实现更加个性化和精准的推荐[20]。MCFSAE [21]采用One-Hot编码对用户和物品的ID进行特征表示,并将其与用户–物品评分矩阵相结合,构建输入向量,进而通过神经网络模型实现评分预测。然而,该方法在处理大规模用户和物品数据时,由于用户和物品数量的增加会导致输入向量的维度急剧膨胀,从而面临维度灾难问题。DualDeepMF [22]利用双正则化矩阵分解获得用户和物品的潜在表示,之后利用神经网络的非线性建模能力来缓解矩阵分解中的线性点积操作而导致的模型预测能力受限问题。DELCR [11]通过嵌入技术提取用户与物品的潜在特征表示,并采用双塔结构对用户和物品分别进行特征学习,最后利用点积进行评分预测。
大多数基于深度学习的推荐算法仅依赖于用户–物品评分数据,且普遍存在可解释性不足的问题,本文提出的DPFLE使用矩阵分解初始化用户和物品的嵌入向量,利用物品标签信息构建细粒度的画像向量,并通过线性注意力机制增强模型对画像特征的敏感度,丰富算法输入的同时还改善了算法的可解释性。
3. 算法设计
本文提出的DPFLE是由用户以及物品的潜在特征、用户以及物品的画像约束、基于深度学习的评分预测这三个部分组成,整体算法如图1所示。首先对用户–物品评分矩阵,使用矩阵分解技术,得到用户和物品的潜在特征,利用预先计算的潜在特征来初始化用户嵌入层以及物品嵌入层。随后,利用物品的标签信息并结合评分信息计算出用户和物品的画像向量,经过portrait_encoder层编码得到用户画像约束以及物品画像约束,对这个四个特征进行融合,之后利用深度神经网络进行评分预测。
Figure 1. Schematic diagram of DPFLE algorithm design
图1. DPFLE算法设计示意图
3.1. 用户以及物品的潜在特征
LIBMF的目标函数如公式(1)所示,其中
为真实评分,
和
为用户与物品的潜在向量,并使用L2正则化系数防止过拟合。
(1)
本文利用LIBMF对用户物品评分矩阵进行分解,先最小化LIBMF的目标函数,以提取用户以及物品的潜在向量。随后,将用户和物品按照ID嵌入到向量空间中,利用预先计算的用户与物品的潜在向量初始化用户与物品的嵌入层。在后续中,本文均以
和
来表示用户以及物品的潜在特征。
3.2. 用户以及物品的画像约束
在电影推荐领域,电影标签作为电影的抽象表示,蕴含了丰富的用户隐式信息,合理利用电影标签数据,可以有效提升推荐算法的性能,具有重要的应用价值[23]。
假设用户评分区间为
,评分的间隔为0.5,假设物品的标签集合为
,并且一共有10个标签,即
。在本文的实验中,物品的标签即为电影的类型,例如动作片、爱情片、恐怖片、科幻片等等。通过统计用户对不同标签的物品在不同评分下的评分次数,并除以相同评分下的评分总次数最后进行拼接操作得到用户的画像向量。具体过程如图2所示。通过相同的方式,统计物品的各标签属性在不同评分下被不同用户评分的次数,并除以该物品在该评分下被用户打分的总次数,可以得到物品的画像向量。
本文使用线性级别的注意力机制AFT-Simple作为注意力层来对输入数据进行加权计算。对于输入
,通过线性变换得到
,
,
,之后如公式所示,
Figure 2. Calculate user’s portrait diagram
图2. 计算用户画像示意图
(2)
其中
为经过线性注意力计算的输出结果,
表示激活函数,通常是Sigmoid函数。通过这个线性注意力层的计算,模型能够自动分配权重,捕捉对预测结果影响较大的特征组合,提升模型对重要特征的敏感度。
Figure 3. Schematic diagram of user’s portrait constraint encoding process
图3. 用户画像约束编码过程示意图
假设用户
的所有评分物品为
,计算各物品的画像向量,记为
并输入到AFT-Simple注意力模块中,得到加权后的中间特征表示,最后通过全局平均池化操作(Pooling)将加权后的特征表示压缩为全局特征,得到用户的画像约束表示
,如图3所示。同样地,对于物品
可取其所有的用户评分,并计算各用户的画像向量,通过portrait_encoder得到物品的画像约束表示
。
3.3. 基于深度学习的评分预测
本文利用深度神经网络,将上述已得到画像约束与潜在特征作为神经网络的输入数据,从而预测用户对物品的评分。将用户与物品的潜在特征进行逐元素点乘,再与用户和物品的画像约束进行拼接,最后得到深度神经网络的输入
,具体如公式(3)所示,
(3)
其中,
表示逐元素点乘,
和
分别表示每个隐藏层的权重矩阵和偏置向量。
表示每个隐藏层的输出,在本文的实验中使用ReLU作为每个隐藏层之间的激活函数。
最后,本文使用一个简单的线性回归模型将
直接映射到预测评分上,如公式(4)所示,
(4)
其中
表示用户
对物品
的预测评分,
和
分别表示预测层的权重向量和偏置。
为了优化模型参数以预测显示评分,本文选择了均方误差损失函数如公式(5)所示,因为它能够有效衡量预测评分与真实评分之间的差异,并适用于这种点对点的回归任务[24]。
(5)
其中,
和
分别表示隐藏层中权重
和偏置
的L2正则化系数。
4. 实验设计与分析
4.1. 数据集
本文使用经典数据集MovieLens以及Netflix来验证提出的方法。MovieLens25M记录了16万位用户对6万部电影的2500万余条评分数据,评分的范围为0.5到5,间隔为5,电影的类型有动作片、恐怖片、喜剧片等等,一共有19种类型。Netflix记录了48万位用户对1万余部电影的10000万余条评分数据,评分的范围为1到5,间隔为1。本文分别从两个数据集中随机选取1500位用户的所有数据进行实验,以节省计算资源和时间。需要注意的是,由于Netflix数据集中不包含电影类型的信息,因此本文通过电影标题在MovieLens数据集中查找其相应的类型。本文将数据集按照90%,10%的比例将数据集划分为训练集和测试集,每个算法仅基于训练集预测每个测试集中的所有评分,并进行折十验证,最终结果取所有实验的平均值。
4.2. 评价指标
本文使用平均绝对误差(Mean Absolute Error, MAE) [25]、均方根误差(Root Mean Square Error, RMSE) [26]来评估评分预测的误差。MAE反映了算法预测评分与用户实际评分之间的偏差,RMSE表示预测用户评分与实际评分之间偏差的均方根值。它们的定义如公式(6)和(7)所示,
(6)
(7)
在进行Top-K推荐时,仅预测未知的评分是不够的,推荐系统还需要根据预测的结果过滤出用户喜欢的项目并进行排序,从而生成推荐列表。在本文的工作中使用归一化折损累计增益(Normalized Discounted Cumulative Gain, NDCG) [27]来评估推荐列表的排序性能,其公式如(8)和(9)所示。
(8)
(9)
其中,
为影响力因子,在本实验中设置为2。
表示推荐列表中项目个数。
为1表示用户喜欢某个项目,为0则表示用户不喜欢某个项目,该指标越大说明排序性能越好。
推荐列表中项目度值的标准差与项目度值的均值的比率可以用来衡量推荐列表的多样性,即推荐列表中包含了哪些受欢迎的项目和小众的项目。多样性指标(Diversity) [28]如公式(10)所示。
(10)
精确率(Precision)、准确率(Accuracy)和召回率(Recall)通常用来衡量推荐算法的分类性能,其公式如(11)、(12)和(13)所示。
(11)
(12)
(13)
4.3. 基线算法
为了评估本文提出的DPFLE的性能,本文将其与其他基线算法进行了上述评价指标的比较。所有算法均取其论文中的最优指标。
1) LIBM通过矩阵分解技术,将用户–物品评分矩阵分解为两个低维矩阵,从而预测未知评分。
2) ScoR [29]把物品和用户当成节点,将合成坐标分配给节点以便用户和物品间的距离可以准确预测用户对某个物品偏好。
3) DSS [30]通过计算两个项目之间的评分差异来表示用户间的距离,并通过皮尔逊系数计算用户间的相似度,通过相似度大于设定的阈值来选取用户的邻居从而预测评分。
4) MCFSAE [21]对用户以及物品的id进行独热编码,结合用户–物品评分矩阵,利用堆叠自编码器(Stacked Autoencoder, SAE)获取输入数据的低维特征表示,最后使用Softmax对未知评分进行分类预测。
5) DPFLE为本文提出的方法,本文将潜在特征的大小k设置为300,模型的优化器为Adam,正则化系数设置为0.01,学习率设置为0.0001,批次大小设置为128。在深度神经网络中,文本设置了两个隐藏层,隐藏层中的因子分别为300、100。
4.4. 实验结果与分析
4.4.1. 各指标对比结果
在MovieLens数据集和Netflix数据集中的MAE和RMSE结果对比如表1所示,其中表现最佳的值以黑体加粗标出,后续也用此形式表示最优值。DPFLE的MAE值和RMSE值在两个数据集上相较于其他对比算法均达到了最优。在MovieLens数据集上,DPFLE的MAE值和RMSE值分别为0.6387和0.8418,相较于其他对比算法分别平均降低了6.26%和7.97%。在Netflix数据集上,DPFLE的MAE值和RMSE值分别为0.6845和0.8827,相较于其他对比算法分别平均降低了5.91%和7.90%。实验结果显示,DPFLE相比于其他基线算法拥有更好的预测精度,预测出的评分与真实评分之间的误差更小。
Table 1. Comparison results of MAE and RMSE for each algorithm
表1. 各算法在两个数据集中的MAE和RMSE的对比结果
Methods |
MovieLens |
Netflix |
MAE |
RMSE |
MAE |
RMSE |
LIBMF |
0.6678 |
0.8614 |
0.7109 |
0.9062 |
SCoR |
0.7391 |
0.9606 |
0.8014 |
0.9911 |
DSS |
0.6639 |
0.8685 |
0.7149 |
0.9155 |
MCFSAE |
0.6604 |
0.9807 |
0.6920 |
1.0320 |
DPFLE |
0.6387 |
0.8418 |
0.6845 |
0.8827 |
表2显示了NDCG和Diversity在两个数据集上的结果对比。NDCG和Diversity分别用来评估推荐列表的排序质量和推荐列表的多样性。其中,NDCG在两个数据集上都取得了最好的效果,分别为0.8198和0.8154,相较于其他算法分别平均提升了3.41%和1.96%。结果显示了DPFLE在推荐列表的排序性能上表现更优。但是Diversity表现相对不佳,在两个数据集中均排名第三,与排名第一的SCoR平均相差9.31%,与排名第二的MCFSAE平均相差4.33%。
Table 2. Comparison results of NDCG and Diversity for each algorithm
表2. 各算法在两个数据集中的NDCG和Diversity的对比结果
Methods |
MovieLens |
Netflix |
NDCG |
Diversity |
NDCG |
Diversity |
LIBMF |
0.7821 |
0.5594 |
0.7889 |
0.5259 |
SCoR |
0.8083 |
0.6961 |
0.8102 |
0.6191 |
DSS |
0.7926 |
0.6065 |
0.8016 |
0.5646 |
MCFSAE |
0.7887 |
0.6532 |
0.7988 |
0.5925 |
DPFLE |
0.8198 |
0.6254 |
0.8154 |
0.5667 |
表3显示了各个算法的Accuracy,Precision以及Recall在两个数据集上的表现。其中,DPFLE在两个数据集上的Accuracy值均排名第一,排名第二均为MCFSAE,相较其他算法在两个数据集中分别提升了3.54%和4.69%,这表示DPFLE能够更好地识别用户感兴趣和不感兴趣的物品。DPFLE在两个数据集中的Precision均排名第二,在两个数据集中分别低于排名第一的LIBMF 3.52%和3.10%,说明DPFLE为用户推荐其感兴趣的物品时,通常有着不错的表现。MCFSAE在两个数据集中的Recall表现最好,均排名第一,DPFLE次之,说明DPFLE能够成功识别出大部分用户感兴趣的物品。
Table 3. Comparison results of classification metrics for each algorithm
表3. 各算法在两个数据集中分类指标的对比结果
Methods |
MovieLens |
Netflix |
Accuracy |
Precision |
Recall |
Accuracy |
Precision |
Recall |
LIBMF |
0.6572 |
0.7178 |
0.6027 |
0.6499 |
0.7056 |
0.5741 |
SCoR |
0.6153 |
0.6843 |
0.6735 |
0.5906 |
0.6756 |
0.6528 |
DSS |
0.6551 |
0.6841 |
0.6727 |
0.6408 |
0.6611 |
0.6511 |
MCFSAE |
0.6660 |
0.6663 |
0.7665 |
0.6630 |
0.6492 |
0.7213 |
DPFLE |
0.6707 |
0.6925 |
0.7030 |
0.6646 |
0.6837 |
0.6748 |
在MovieLens与Netflix数据集中,各算法的总体实验结果表现如图4,其中本文提出的DPFLE在MAE、RMSE、NDCG、Accuracy这四个指标上均取得了最好的效果。由上述实验结果可知,将画像约束与潜在特征相融合并利用深度学习进行评分预测,能够有效降低推荐系统中的误差,并且在推荐列表的排序性能方面也有显著提升。然而,在推荐列表的多样性方面,本文提出的DPFLE表现并不出色。由于将用户与物品的画像约束加入算法中,推荐结果往往集中于用户已经喜欢的物品,而忽视了其他潜在的、有趣的选项。
Figure 4. Overall experimental comparison of algorithms
图4. 各算法在两个数据集中的总体实验对比图
4.4.2. 实验分析
为了探究潜在特征的大小对实验的影响,本文将k分别设置为50、100、200、300,并在两个数据集上进行实验。表4显示了在不同的潜在特征大小下,DPFLE在两个数据集中的MAE和RMSE的表现。当k大于300时,MAE和RMSE的实验结果变化非常小,但是算法的执行时间会更长。为了节省计算资源和时间,本文没有过多探究更大的k对实验的影响。
图5显示了用户侧和物品侧的注意力权重矩阵示意图,在AFTSimple中,对输入进行线性变化后得到K矩阵,再进行Softmax操作得到每个维度上的注意力分布,不同维度的注意力分数互相独立计算。全局注意力信息揭示了用户对不同物品的关注程度,反应出用户在偏好选择上的显著差异。通过动态地为不同用户及物品特征分配自适应权重,注意力机制能够有效捕捉模型对不同特征的敏感程度,从而提升个性化推荐算法的准确性。
Table 4. Comparison of MAE and RMSE with different hyperparameters
表4. 不同超参数在两个数据集中的MAE和RMSE对比
Numbers of k |
MovieLens |
Netflix |
MAE |
RMSE |
MAE |
RMSE |
50 |
0.6524 |
0.8583 |
0.6986 |
0.9010 |
100 |
0.6461 |
0.8522 |
0.6949 |
0.8941 |
200 |
0.6412 |
0.8482 |
0.6881 |
0.8854 |
300 |
0.6387 |
0.8418 |
0.6845 |
0.8827 |
Figure 5. Heatmap of attention weight matrices on the user and item
图5. 用户侧与物品侧注意力权重矩阵热力图
表5显示了去掉AFTSimple注意力模块后与原始算法的比较,其中DPFLE-AFT表示去除注意力模块后的模型,经比较可以得出DPFLE在两个数据集中的MAE平均降低了2.11%,RMSE平均降低了1.16%,说明通过线性注意力机制对画像特征进行加权计算能够更好地捕捉用户和物品之间复杂的关系并提升模型的预测精度。
Table 5. Comparison results of attention module ablation
表5. 注意力模块消融实验对比结果
Methods |
MovieLens |
Netflix |
MAE |
RMSE |
MAE |
RMSE |
DPFLE-AFT |
0.6513 |
0.8506 |
0.7004 |
0.8941 |
DPFLE |
0.6387 |
0.8418 |
0.6845 |
0.8827 |
5. 总结与展望
针对如何利用用户的兴趣或隐式偏好以及如何从复杂的交互数据中提取并利用用户和物品的特征,本文提出了一种画像约束的编码方式,并将画像约束与隐因子模型中的潜在特征相融合,设计了一种基于深度学习的个性化推荐算法,揭示了两种特征存在的差异可以有效提升推荐系统的性能。本文在两个真实世界的数据集中进行了验证,实验结果显示,在预测精度与推荐列表的排序方面,本文所提出的方法相较于一些先进的算法有明显的提升。
在未来的工作中,本文将考虑图神经网络替代传统的多层感知机,利用用户与物品之间的复杂关系构建交互图,挖掘更深层次的特征关联,以提高推荐系统的性能,为用户提供更加个性化和精准的推荐服务。
基金项目
国家自然科学基金项目(61803264)资助。