崔莹莹,陈 卓,王红霞
(青岛科技大学信息科学技术学院,山东 青岛 266061)
随着信息技术以及互联网的快速发展,推荐系统已成为一个领域中不可或缺的关键要素之一,其主要目的是在“信息过载”的大环境下,为用户精准推荐其感兴趣的事物,减少“选择困难”,提高选择效率,因此被广泛应用于各领域,例如淘宝、音乐软件、论坛等.推荐算法是推荐系统的核心关键,其根据用户行为和特征以及物品特征等信息来进行推荐.推荐算法又分为协同过滤推荐算法、基于内容的推荐算法、基于物品的推荐算法等,其中协同过滤推荐算法近年来被广泛应用在各大领域,该算法不依赖于物品内容,仅依靠评分来表示用户对项目的喜好程度,但用户与项目之间的交互矩阵常常较为稀疏,数据大多由有标签数据和无标签数据组成,且存在数据不均衡问题,严重影响推荐效率,也造成了不必要的资源浪费.随着各领域规模的扩大以及用户量的不断增长,解决用户与项目之间的稀疏性成为推荐系统中亟待解决的核心问题.
为了解决上述问题,本文提出基于半监督学习模型的协同过滤推荐算法,并通过对比实验验证了所提出算法的有效性.
推荐系统被用来将信息元素(电影、书籍等)推荐给可能对其感兴趣的社会元素(人、组织等).
推荐算法可以通过挖掘用户偏好来帮助用户筛选信息,较为传统的推荐算法是结合协同过滤的思想,该思想根据用户的历史行为找到与目标用户兴趣爱好相似的一组用户集合,进而对目标用户推荐这组用户集合所喜好的项目[1].
Sedhain等[2]提出结合自编码器的协同过滤算法,预测出丢失的评分,提高了物品之间相似度计算的准确性;在此基础之上,霍欢等[3]提出栈式降噪自编码器的标签协同过滤推荐算法,进一步解决了数据的稀疏性问题,但该模型的算法复杂度较高,性能不佳;王根生等[4]通过计算不同元路径下的用户相似度,得出用户相似度矩阵,然后将其融合到矩阵分解推荐算法的目标函数中;JAMALI等[5]提出的SocialMF模型将信任传播机制引入到矩阵分解中;HE等[6]提出的NeuMF模型将多层感知机与传统矩阵分解相结合,可以同时抽取低维和高维的特征;罗达雄等[7]提出了一种基于隐性行为的问题解决者推荐算法,通过计算基于标签的隐性行为变量,解决问题的倾向性变量,并结合能力变量使用贝叶斯多变量回归得到开发者得分,排序后进行推荐.
上述算法通常较依赖用户与项目之间的交互信息以产生推荐结果,当数据稀疏性问题加剧时,算法准确率会受到较大影响.
对于推荐系统来说,不仅要依靠现有的用户/项目交互评分,学习到用户点击行为背后的隐性特征向量也十分关键.而深度学习具备充分挖掘数据隐含信息的能力,近年来被广泛应用于自然语言处理、计算机视觉等领域,并通过实践证明,深度学习方法能够显著提高模型性能.鉴于深度学习此前取得的成功,研究人员也逐渐尝试将深度学习融入推荐系统中,这些方法从特征出发,从不同层次和角度使用相应的深度学习方法完成推荐任务.
冯兴杰等[8]提出在利用图神经网络提取关联关系的同时,利用深度学习提取评论的优势提取用户和商品的一般偏好,并进行特征融合来提升推荐效果;Cheng等[9]提出Wide&Deep模型,该模型融合深层Deep模型和浅层Wide模型进行联合训练,综合利用深层模型的泛化能力和浅层模型的记忆能力,兼顾了单模型对推荐系统的准确性和扩展性.针对Wide&Deep的浅层特征和深层特征不能交互共享的问题,Huifeng等[10]提出DeepFM模型,该模型在处理稀疏特征时,将稀疏的特征先进行向量化,得到高维稀疏特征,再将其转化为低维稠密向量,然后将数据共同输入深度神经网络与FM[11]相结合的模型中,其中使用FM做特征间低阶组合,使用深度神经网络Deep部分做特征间高阶组合,通过并行的方式组合两个部分.
由于在用户与项目交互过程中,用户几乎不能对每个项目都进行评分,这造成数据中既包含有标签数据,又存在无标签数据[12].半监督学习能够在此种仅存在部分有标签数据的情况下,使学习模型具有较高的正确率.
在半监督学习的自训练算法中,为了解决伪标记数据选择问题,Tanha等[13]使用基于距离的局部度量来确定实例之间的置信度等级,其性能有所提升;Dong等[14]提出的弱标签的半监督学习算法SSWL,通过考虑实例和标签相似度来弥补缺失标签;为了提升分类机器学习模型性能和泛化性,毛铭泽等[15]提出了一种基于权值多样性的半监督分类学习算法,从基于学习器的不同角度扩展模型的多样性,提升了模型分类性能.在大多数半监督学习研究中,主要通过集成学习方法来拓展模型或者数据的多样性,从而提高伪标签的准确性以提升模型性能.
在推荐系统的研究中,虽然有不少算法在尝试解决数据稀疏性问题,但由于大多数数据本身较为稀疏的特点,难以训练出泛化能力强的模型,因而,稀疏性问题依旧是目前推荐系统的研究难点.
针对目前推荐算法中现存的有评分的用户/项目交互数据较为稀疏,且尚有部分无评分的用户/项目交互数据的问题.本文借鉴半监督学习的思想,将有评分的用户/项目交互数据视为有标签数据,无评分的用户/项目交互数据视为无标签数据,提出一种CFSS模型.算法模型如图1所示.
图1 CFSS模型
CFSS模型算法首先利用有标签的用户/项目交互数据和DeepFM模型算法,训练得到一个评分预测模型,再用该模型预测无标签数据的评分,得到伪标签.之后采用原始有标签数据和伪标签数据共同构造用户/项目交互矩阵,并利用交替最小二乘法(alternating least squares,ALS)分解该交互矩阵,从而得到用户向量表示和项目向量表示,以此来预测空白项的评分.
评分预测部分使用带评分的用户/项目交互数据训练DeepFM模型,并将训练用的稀疏的交互矩阵中的用户特征向量和项目特征向量进行拼接后,放入DeepFM模型网络中作为输入进行训练.
为了对用户特征进行向量表示,将用户的离散特征经过One-hot编码转换后,原来的低维用户特征转换为高维的稀疏向量.但为了降低向量维度、增加稠密度提升训练效果,本文对用户特征进行自编码,将高维稀疏向量转化为低维稠密向量后,再输入网络进行训练.
连续特征内各个数值可能存在差异较大或者其单位(尺度)不同的情况,例如某用户的在线时间和好友数,因此使用公式对其归一化处理,避免出现模型训练速度降低等问题.具体公式为
(1)
其中:x表示实际特征值,μ表示同一特征下的平均特征值,xmax表示最大特征值,xmin表示最小特征值.经过处理,原本差异悬殊的连续特征,都介于0到1之间.
将用户特征向量和项目特征向量作为DeepFM模型的输入.DeepFM算法模型如图2所示.
图2 DeepFM算法模型
模型左侧为FM模块,其具有线性时间复杂度的优越性,能适用基于上下文或基于相关性的推荐.不仅可对一阶特征进行建模,还能通过隐性向量点积来获取二阶特征表示,有效解决高维数据的稀疏问题,降低稀疏性对预测结果的影响,将输入的特征连接为向量x进行输入,FM模块计算公式为
(2)
其中:b0表示偏置,wi表示第i个特征的权重,〈vi,vj〉表示第i个特征与第j个特征的相互作用.
模型右侧部分是Deep模块,是一个用于学习高阶特征交互的前向神经网络,可以将稀疏的表示特征映射为稠密的特征向量.其中输入层和FM模块共享,中间隐藏层第一层公式为
A(1)=W(0)x+b(0).
(3)
其中:W(0)为初始权重项,b(0)为初始偏置项.
Deep模块最终的输出计算公式为
yDNN=WH+1aH+bH+1.
(4)
其中:H表示隐藏层的层数.得到FM模块和Deep模块的输出后,便可以得到最终的预测结果为
(5)
本文用有标签数据训练DeepFM算法,得到评分预测模型.然后用该模型为所有无标签数据预测出伪标签.
传统的矩阵分解算法,利用评分信息作为推荐依据,当评分数据稀疏时,不能准确获取隐式反馈,影响推荐准确性[16].本文使用上一节中有标签和预测得出的伪标签两种用户/项目交互数据,构建新的用户/项目交互矩阵之后使用ALS进行矩阵分解.
在推荐系统中矩阵分解(Matrix Factoriza-tion,MF)[17]算法是一种常用的协同过滤推荐方法,它将评分矩阵分解为两个矩阵,目的是从所有已知评分数据中学习用户的隐性偏好和项目隐性特征,然后利用用户和项目的隐性向量的乘积来预测用户/项目评分矩阵中的未知项,以便更好地为用户推荐[18].常见的矩阵分解算法有奇异值分解(Singular Value Decomposition,SVD)、ALS[19]等.相比于SVD及其他矩阵分解算法,ALS更加适合于分解交互数据较为稀疏的矩阵,因此本文使用ALS对用户/项目交互数据进行矩阵分解,以产生用户和项目的隐性向量表示.形式如图3所示.
图3 用户/项目交互矩阵
在CFSS模型中,使用ALS将用户/项目评分矩阵RM×N分解为M×K的用户隐性向量矩阵和K×N的项目隐性向量矩阵,其中超参数K为潜在因子空间,K越大越精准,计算时间也越长.
在ALS中,用户/项目交互矩阵可以表示为用户矩阵与项目矩阵的乘积,以此来近似用户/项目评分矩阵,公式为
RM×N=PM×KDK×N.
(6)
其中:PM×K表示用户隐性向量矩阵,DK×N表示项目隐性向量矩阵.
(7)
其中:pi表示用户隐性向量,dj表示项目隐性向量.在计算PM×K与DK×N的乘积与原始矩阵的误差时,损失函数的计算公式为
(8)
其中λ表示正则化系数.为了优化损失函数,使用交替固定P和Q对损失函数求偏导,降低损失函数.
本节通过对比实验以及K折交叉验证检验了本文提出的CFSS模型的有效性.
为了验证本文提出的基于半监督学习的协同过滤推荐算法的泛化性能,选取了公共数据集Movielens 100K和公共数据集Book-Crossings来进行实验.分别随机抽取两个公共数据集中的25%的数据设置为待填充数据,再从剩下75%的数据中随机抽取20%的数据设置为测试集,80%设置为训练集.
3.1.1 Movielens 100K数据集
该数据集中包含10万个用户对电影的评分数据,也包含电影特征信息以及用户特征信息,用户使用1~5之间的评分来表示用户对电影的喜好程度,分值越高则表示该用户对该电影越感兴趣.数据随机划分结果见表1.
表1 Movielens 100K数据集
在输入DeepFM进行训练时,将Movielens 100K数据集中用户的性别、年龄和职业作为用户特征进行输入;将Movielens 100K数据集中电影的发行日期以及电影类型作为项目特征进行输入.
3.1.2 Book-Crossings数据集
该数据集中包含110万个用户对图书的评分,表达了9万个用户对27万本书的喜好程度,用评分1~10来表示.数据来自于一个拥有数百万人的规模庞大的图书馆网站,特点是用户/图书评分矩阵较为稀疏.数据随机划分结果见表2.
表2 Book Crossings 数据集
在输入DeepFM进行训练时,将Book-Crossings数据集中用户的年龄、所在地作为用户特征进行输入;将Book-Crossings数据集中书籍的名称、作者作为项目特征进行输入.
本文采用均方根误差(Root mean squared error,RMSE)和平均绝对误差(mean absolute error,MAE)两个指标来评价算法的评分预测误差.
(9)
(10)
其中:X表示测试集中用户与项目交互的次数;yij表示模型用户i对项目j的预测评分值;Rij表示用户i对项目j的实际评分值.
首先对评分预测时所使用的DeepFM模型中的迭代次数进行优化选择,对迭代次数进行分组实验,结果见表3.
表3 DeepFM迭代次数分组实验结果
由表3可知,当DeepFM模型的迭代次数为300时,对测试集预测的结果与实际的误差不再继续增大,因此本文选择300为DeepFM模型的迭代次数.
对ALS的隐性向量长度进行分组实验,结果见表4.
表4 ALS不同隐性向量长度分组实验结果
从表4可知,隐性向量长度为70时,RMSE和MAE最小.因此在使用ALS分析用户历史回答数据,对用户和项目隐性向量进行表示时,将其设置为70.
算法模型在仅训练一次的情况下无法代表模型的平均性能,因此本文采用K折交叉验证,可以大致反映本文算法模型的平均水平.K折交叉验证图如图4所示.
图4 K折交叉验证图
K折交叉验证使用了无重复抽样技术,具体实现步骤:首先将训练集数据随机划分为K份,将其中的K-1份数据作为训练集,剩余的1份作为测试集;之后将迭代K次的训练结果取平均值作为模型的性能指标.
K取值越大,模型训练结果越可靠,但所消耗时间也随之线性增长.考虑到数据集大小与模型性能,本文选取K=5,对模型进行5折交叉验证,训练结果如图5所示.
图5 5折交叉验证训练结果
将交叉验证结果取平均值作为模型的评估结果,得RMSE=0.174 8,MAE=0.134 2.
为了验证评分预测效果以及填充用户矩阵的有效性与必要性,本文对有无DeepFM算法评分预测进行了消融实验,并加入了不同矩阵分解的算法以及其他推荐模型进行对比,对比实验结果如表5所示.
从表5可知,在使用ALS算法表示用户隐性向量之前,由于使用DeepFM方法进行矩阵填充降低了矩阵的稀疏度,使ALS算法的误差更低,因此能够更加准确地表示出用户隐性向量,从而证明了本文提出算法的评分预测的有效性与必要性.
同时为了验证本文提出的CFSS算法在稀疏性数据集上的推荐效果以及其泛化性能,本文进行了稀疏性对比实验.对公共数据集Movielens 100K和Book-Crossings分别进行稀疏化处理.通过不断增加数据集稀疏性,使用不同算法进行多组对比实验来验证本文算法的推荐效果,如表6所示.
表6 数据稀疏化后不同算法之间的RMSE和MAE对比
由上述稀疏性对比实验可以看出,在数据稀疏性逐渐增大的情况下,本文提出的基于半监督学习模型的协同过滤推荐算法的RMSE和MAE均低于其他对比算法,表明本文方法的推荐效果较好.
随着用户规模的不断扩大,解决推荐系统中的稀疏性问题变得尤为关键.传统推荐学习从较为稀疏的矩阵中难以训练出有效的推荐模型.本文提出基于半监督学习模型的协同过滤推荐算法,基于半监督思想,用有标签数据训练DeepFM算法,得到评分预测模型,然后用该模型为所有无标签数据预测出伪标签,以此填充用户/项目交互矩阵,使得数据由稀疏变得更加稠密.将原始有标签数据与预测出的伪标签数据作为ALS矩阵分解的输入,对用户/项目交互矩阵数据进行矩阵分解,以此产生用户和项目的隐性向量表示,来预测空白项的评分.通过在两个公共数据集的实验对比,验证了本文提出的CFSS模型的有效性,并且通过训练不断稀疏化数据集,CFSS模型的推荐误差明显小于传统推荐模型.
在今后的工作中,我们希望能有效利用用户特征中的职业、年龄等多个维度的特征表示以及项目特征中的文本内容信息来更准确地表示用户的偏好.