-
随着在线信息数量、复杂性和动态性的增长,互联网信息的爆炸性增长常常使用户感到困惑. 推荐系统是解决此类问题的重要手段,该系统通过有效的信息过滤工具分析用户喜好,以个性化的方式推荐用户可能感兴趣的产品或服务[1-2]. 在推荐系统领域,常用的技术可分为基于协同过滤(collaborative filtering,CF)、基于内容(content-based,CB)、基于关联规则(association rule-based,ARB)和混合推荐系统4类. 但是,这些模型或在处理冷启动和数据稀疏性问题时存在局限性,或在推荐精度和效率方面有所欠缺[3].
最近几年,深度学习在自然语言处理、计算机视觉以及人工智能等领域取得了迅猛进展,基于深度学习的推荐系统也引起了研究人员的广泛关注[4]. 深度学习具有多层次非线性网络结构,其强大的学习能力可以获得用户与项目之间更深层次的特征表示,而且深度学习能够将不同数据映射到同一个隐空间内,实现数据的统一表征. 因此,将深度学习和传统推荐方法进行融合,能够有效解决推荐系统中冷启动和数据稀疏性问题[5]. Zhang等[6]提出一种基于散列的深度学习框架,该方法利用离散深度学习将用户项目交互信息和项目内容信息统一起来,克服了推荐系统中冷启动和效率问题. You等[7]提出了层次时间卷积网络,通过用户与项目的顺序多会话交互来构造深度学习网络,解决推荐方法的精度和效率问题. 但是,由于深度神经网络模型的训练大多基于数据的最大似然概率,很难从不相关的信息中筛选出用户感兴趣的信息,从而导致推荐的多样性不足. 因此,研究人员通过将深度学习与传统推荐算法相结合,来解决两种方法存在的局限性. Fessahaye等[8]使用基于内容和协同过滤的混合模型作为深度网络的输入,利用深度学习分类模型生成具有实时预测的精确推荐系统. 邓存彬等[9]利用深度学习模型来学习用户和项目之间的特征信息,将用户特征和项目特征的隐向量用于动态协同过滤算法的输入.
尽管一些研究人员以深度学习和传统推荐算法相结合的方式取得了一定的成果,但在某一具体问题中并不是每种方法的混合都有效. 随着用户和项目数据量增大,用户与项目之间的评分矩阵也会越来越稀疏,推荐偏差和冷启动问题也日益突出. 为了更好地解决这些问题,本文考虑利用辅助信息来提取用户和物品的共同特征表示,提出了一种基于深度学习的正则化矩阵分解推荐系统. 该系统首先利用深度自动编码器初始化用户和项目的潜在特征;然后使用Node2vec网络嵌入技术在用户信任网络中捕获用户表示,这些提取的用户表示用于计算用户的信任度和预测用户对项目的评分. 同时,本文所提模型还考虑社交信任网络中用户间的信任信息和社区内最具地位用户的影响力作用,在矩阵分解的目标函数中加入相应正则化项,使得用户兴趣与可信用户和社区中最具影响力的人兴趣相似.
全文HTML
-
在经典的CF问题中,假设用户和项目的数量分别为m和n,m×n用户项目矩阵R中的元素rui描述了用户u给项目i的评分. rui如果是空值,则表示u没有对i评分. 通过对矩阵R使用均方根误差来测量性能,推断出缺失的元素. 在这种情况下,推荐系统是用户兴趣和项目特征之间的双向交互. 在协同过滤方法中,基于矩阵分解(matrix factorization,MF)技术是常用的算法之一,它将评分矩阵R分解为两个低维度的矩阵.
式(1)中:P为用户特征矩阵,Q为项目特征矩阵. 基于矩阵分解的协同过滤目标函数可以表示为
式(2)中:λP和λQ是为了防止模型过拟合的正则化参数. Ru, i表示真实评分,
$ {{\mathop{\boldsymbol{R}}\limits^ \wedge }_{u, i}} $ 表示预测评分. -
假定将社交信任网络视为有向图G(v,ε),其中v表示有m个用户的集合,ε表示用户之间的信任关系. 随着用户之间距离增加,用户之间信任度逐渐降低. 因此,利用用户的社会偏好相似度来计算信任度,T的值定义为
式(3)中:sim函数计算两个向量之间的余弦相似度,
$ {X_u} \in {\mathscr{R}^k} $ 和$ {X_v} \in {\mathscr{R}^k} $ 分别表示用户u和v的特征,trust(u,v)表示用户u对用户v的信任值,Su表示用户u直接链接到的用户集合. 如果存在多个信任传播路径,则选择最短路径.
1.1. 基于矩阵分解的协同过滤
1.2. 基于社交信任网络的推荐算法
-
为了更好地解决推荐系统中存在的冷启动、数据稀疏和推荐准确度低等问题,本文所提出的推荐模型结合了Louvain社区检测方法、HITS算法、深度自动编码器和Node2vec深度嵌入技术. 该模型分为5个步骤:①深度自动编码器用于初始化MF中用户和项目的潜在特征向量;②使用Node2vec深度嵌入方法,从用户信任网络中提取用户潜在特征,用于计算信任值并预测用户对项目的评价;③使用Louvain方法识别用户信任网络的社区,并通过HITS算法找到每个社区中最重要的节点. ④将基于每个社区中最重要节点的正则化项添加到MF目标函数中,以便每个活动用户的特征与公共社区中最重要节点的特征更加相似,同时添加到MF目标函数的另一个正则化项是基于用户之间的信任值,使用户的偏好更接近他们所信任的人;⑤使用梯度下降法来最小化修正后的目标函数.
-
假设一个推荐系统包含m个用户和n个项目,用户项目评分矩阵表示为R={rij}m×n,同时m个用户可以用一个集合v表示,其社交网络视为有向图G(v,ε),用户社交矩阵表示为T={tik}m×n. 基于社交信任网络和协同过滤混合的方法通过矩阵分解技术,利用评分矩阵和用户信任网络来学习用户和项目的潜在特征. 具体而言,在式(1)的基础上,将社会信任集成到矩阵分解协同过滤模型中,不仅利用社会信任信息来调整用户的潜在因子,同时还添加信任正则化和重要用户影响力正则化两项,表达式为
式中:Wu作为用户协同过滤器的权值向量,由下文中神经网络训练的社会网络表示转化得到. avg表示所有项目的平均评分,biasu表示用户u的评分平均值与avg的偏差,biasj表示项目i的评分平均值与avg的偏差. 本文优化的目标函数为
式(5)中:PSu是用户s在用户u所属社区中具有最高评分的因子向量,λT和λC是正则化项参数,分别用于控制社区中最重要用户的信任和影响力对应的项. 本文仍然使用随机梯度下降算法求解潜在特征向量P,Q和W.
-
本文提出的基于深度学习的混合推荐模型主要分为MF初始化、用户信任特征嵌入、社交网络最重要节点发现、目标函数修正和求解5个阶段.
-
由于矩阵分解可以随着P和Q的初始值变化而收敛到不同的局部最小值,因此正确设置初始值对给定的MF非凸目标函数获得最优解至关重要. 为了构建合适的P和Q矩阵初始值,一些文献通过引入自动编码器来优化初值. 自动编码器是实现编码器encode(x):Rn→Rk和解码器decode(x):Rk→Rn映射的神经网络. 自动编码器的目标是获得数据x的k维表示,从而使x和decode(encode(x))之间的误差度量最小化.
本文使用基于可缩放指数型线性单元的堆栈式深度自动编码器模型来学习用户与项目的隐层特征表示,模型中的解码器架构与编码器对称,因此降低了参数数量. 深度自动编码器(deep auto encoder,DAE) 使用UDAE和IDAE两种编码器来获得用户特征矩阵P和项目特征矩阵Q. 其中U表示用户,I表示项目. 自动编码器的深层神经网络体系结构,用于获取用户和项目的潜在因子,其中x表示输入量,z表示获得的潜在因子,y则是输入x的重构. 在DAE中,编码器和解码器部分均包含前馈神经网络,该网络具有n个完全连接层以计算f(W×x+b),其中f是非线性激活函数. W是权重,b是偏置. 权重Wel和Wdl解分别是l层编码器和解码器的对应权重. e代表编码,d代表解码. 对于每一个输入量x,深度自动编码器模型中的UDAE和IDAE部分分别获得的潜在因子分别为Pu和Qi. 本文采用掩模均方误差优化作为DAE的损失函数.
式(6)中:ri和yi分别是实际评分和预测评分,mi是掩模函数,当ri≠0时,mi=1,否则mi=0.
-
在本文提出的方法中,用户特征通过用户项目矩阵分解的潜在因子和预先训练用户社交网络的嵌入因子(信任特征)得到. 受神经网络嵌入模型在链路预测和节点分类中的成功启发,该方法在半监督任务中使用预训练网络嵌入模型node2vec[10],该模型可以学习任意给定网络中节点的高层稳定特征表示,并通过在网络中多次随机游走来获得连接模式的多样性.
将给定网络视为G=(A,E),其中A代表节点集合,E代表边集合. 对于节点m∈A,令NS(m)⊂A为节点m的网络邻域,该邻域通过S策略进行邻域采样生成. S策略是一种随机游走方法,通过广度优先或深度优先采样来检测邻居. 为了学习每个节点的高级表示,node2vec尝试根据其特征表示来最大化节点邻域NS(m)的对数概率.
式(7)中:f是从节点到低维特征表示的映射函数,Pr表示概率.
由于node2vec输出可以解释为网络节点的高级表示,因此通过训练node2vec模型可以提取用户信任网络的深层社会结构,本文将
$ {X_n} \in {\mathscr{R}^k} $ 作为从用户信任网络中提取到的用户u特征. 这些提取的特征反映了用户深层次的社会兴趣,它们的线性组合能够表示用户与他人建立社会联系的程度. 此程度信息可用于预测评分,特别是当用户对很少的项目进行评分时. 社交网络和评分偏好可能会对不同类型的信息进行编码,因此将两者有机结合能够获得更佳的预测效果. 在本文所提方法中,利用简单线性模型将协同过滤方法的潜在因素与提取的社会因素结合起来,因此,用户u对项目i的预测评级可以由式(1)更改为式(4). -
社交网络中用户倾向于形成具有较高联系的群体,这些群体称为社区,社区内部成员相对于外部成员是紧密联系的,可以相互信任,共享偏好. 社区结构发现技术作为社交网络分析的一项基本技术,对理解社交网络结构特性和信息传播具有重要作用. 当前,基于Louvain的模块度优化方法是使用较为广泛的一种社区发现方法,该方法具有计算速度快,易于理解和无需监督的优点[11].
Louvain算法采用模块度来衡量社区网络划分程度,模块度定义为
式(8)中:Aij表示节点i和节点j之间边的权重,ki和kj分别表示所有与节点i和节点j相连的边的权重之和,m表示所有边的权重之和,ci和cj分别表示节点i和节点j所属社区,δ为克罗内克函数. Q值越大,说明社区内部连接越紧密.
Louvain算法主要分为3个步骤:①对网络节点进行初始化;②将节点i从原来社区中取出后加入其他社区,并计算相应的模块度增益值;③将该点放入增益值最大的社区中. 对所有节点重复上述过程,直到所有节点、社区不再发生改变. 本文使用Louvain方法来识别用户信任网络的社区,该社区将用户i的社区索引返回为ci.
-
在信任社交网络中,不同的人在一个社区中的重要性不一样,可能有一些节点更受人们信任,更容易接受他们的经验和意见. 因此,在社会网络分析中,需要使用中心性分析方法来识别网络中有影响的节点.
本文所提方法使用HITS算法[12]来寻找用户信任网络中每个社区最有效的节点. HITS算法是一种基于链接分析的网页排名算法,该算法通过权威值和枢纽值两个属性对扩展集合中所有页面的重要性进行刻画. 为了有效地利用HITS算法对社交网络节点的影响力进行评估,首先将每个用户视为一个网页,用户之间跟随或者被跟随视为网页之间的链接关系;然后基于该方法的假设条件,建立整个社交网络的有向图,利用HITS算法对各用户的权威值和枢纽值进行计算;最后将算法收敛时用户的权威值作为社交网络中用户所具有影响力的量化值. 在信任网络的社区中通过衡量权威值找到最具影响力的用户,而在每个社区中拥有最高权威值的节点被用来影响该社区中其他用户的评分.
-
在实际应用中,用户倾向于在共享社区中与他们信任的朋友共享关于项目的类似偏好. 为了获得更加精确的推荐列表,在式(2)的基础上添加信任和重要用户影响力两项正则化项. 用户之间的相似度取决于用户之间的信任值,即用户之间的信任值越大,用户之间的相似度就越大.
2.1. 问题描述
2.2. 本文提出的推荐模型
2.2.1. 深度自动编码器
2.2.2. 基于node2vec嵌入的用户网络
2.2.3. 基于Louvain方法的社区发现
2.2.4. 基于HITS查找社区中最重要的节点
2.2.5. 添加正则化条件
-
为了评估本文所提推荐模型的性能,使用Ciao和Epinions这2个标准数据集[12]对算法进行验证. Ciao数据集来自一个数百万用户的在线评论社区,该社区用户可以给产品打分,分数从1到5. Epinions数据集作为一个物品评论数据集,具有40 163个用户在139 738个物品上给出的664 824个评分. 两个数据集都包括用户对项目的评分、时间以及用户之间的社会信任网络. 在这些实验中,数据集被分为80%和20%两个部分,分别用于训练和测试. 由于评分矩阵非常稀疏,因此这两个数据集中的推荐者问题颇具挑战性.
文章中所有的实验均在Spyder环境下,使用Python 3.7在Intel(R) Xeon(R)CPU E5 26200@2GHz,RAM64GB的机器上进行,Python中的Keras库用于实现深层的自动编码神经网络.
-
本文使用均方根误差(root mean squared error,RMSE)和平均绝对误差(mean absolute error,MAE)作为实验结果的评价指标,RMSE和MAE两种评价指标的计算方式如式(9)和式(10)所示.
式(9)、式(10)中:Rte表示测试集,|Rte|表示测试集中评分的数量. RMSE和MAE通过计算预测评分和真实评分之间的差异来衡量结果的准确性,其值越小,说明推荐准确性越高.
-
为了评估本文所提方法的性能,将其在Ciao和Epinions这2个数据集上的测试结果与MIRROR[12],SBRNE[13],InSRMF[14]和GraphRec[15]等推荐算法进行比较. 本实验比较了各种推荐算法在全体用户集和冷启动用户集上的测试结果,其中冷启动用户集是指训练集中评分数量少于5个的用户所构成的集合.
在两个数据集上,本文所提出的方法都比其他方法获得了更低的MAE和RMSE,说明性能优于其他对比方法,并具有显着的性能提升. 由于MIRROR算法只使用了基于矩阵分解的推荐系统,因此在这两个数据集中它的性能都不如其他方法;InSRMF算法将社交网络信息和矩阵分解协同过滤技术有效地结合起来,取得了比MIRROR更好的效果;SBRNE和GraphRec利用了用户的社交网络信息和深度嵌入技术,也取得了较好的效果;本文所提算法在基于矩阵分解的推荐系统中结合了Louvain社区检测方法、HITS算法、深度自动编码器和Node2vec深度嵌入技术,使结果优于所有其他最先进的方法.
随着冷启动用户的参与,每种方法的性能都会下降,在这两个数据集上,本文所提算法的降低速度始终比其他方法慢,这意味着本文提出的方法对冷启动用户问题更健壮.
3.1. 数据集和实验环境
3.2. 评估指标
3.3. 实验结果分析
-
本文提出一种基于深度学习的正则化矩阵分解推荐系统,用于解决当前推荐算法面临的冷启动、数据稀疏以及推荐准确度低等问题. ①该系统通过深度自动编码器初始化用户和项目的潜在特征;②使用Node2vec深度嵌入技术在用户信任网络中捕获用户特征表示,进而计算用户的信任度并预测用户对项目的评级. 为了使用户兴趣与可信任用户和社区中最具影响力的人兴趣相似,本文所提算法采用Louvain和HITS方法寻找社交网络中最具影响力的用户节点,然后将其和用户间的信任信息以正则化的方式添加到MF目标函数中;③使用梯度下降算法来最小化修正后的MF目标函数. 实验结果表明:相对于其他推荐算法,本文算法能够有效缓解用户的冷启动问题,其推荐质量也得到明显提升.