«上一篇 下一篇»
  计算机工程  2021, Vol. 47 Issue (6): 60-67  DOI: 10.19678/j.issn.1000-3428.0057930
0

引用本文  

贾俊杰, 张玉超. 基于用户模糊聚类的综合信任推荐算法[J]. 计算机工程, 2021, 47(6), 60-67. DOI: 10.19678/j.issn.1000-3428.0057930.
JIA Junjie, ZHANG Yuchao. Comprehensive Trust Recommendation Algorithm Based on User Fuzzy Clustering[J]. Computer Engineering, 2021, 47(6), 60-67. DOI: 10.19678/j.issn.1000-3428.0057930.

基金项目

国家自然科学基金(61967013);甘肃省高等学校创新能力提升项目(2019A-006)

作者简介

贾俊杰(1974-), 男, 副教授、博士, 主研方向为数据挖掘、隐私保护;
张玉超, 硕士研究生

文章历史

收稿日期:2020-04-01
修回日期:2020-05-09
基于用户模糊聚类的综合信任推荐算法
贾俊杰 , 张玉超     
西北师范大学 计算机科学与工程学院, 兰州 730070
摘要:针对传统协同过滤推荐算法通常存在的数据稀疏和冷启动问题,根据用户间的信任关系,提出基于模糊C均值聚类的综合信任推荐算法。采用评分数据和信任数据计算用户间的隐式信任值和显式信任值,利用显隐式信任得到综合直接信任值,基于信任的传递特性获得Jaccard全局信任值,最终通过动态结合综合直接信任与Jaccard全局信任获取综合信任值,同时将信任机制融入模糊C均值聚类算法实现对目标用户的精准推荐。在FilmTrust真实数据集上的实验结果表明,该算法有效缓解了数据稀疏和冷启动问题,并且相比传统协同过滤推荐算法具有更高的推荐质量。
关键词推荐系统    模糊C均值聚类    信任网络    Jaccard全局信任值    综合信任值    
Comprehensive Trust Recommendation Algorithm Based on User Fuzzy Clustering
JIA Junjie , ZHANG Yuchao     
College of Computer Science and Engineering, Northwest Normal University, Lanzhou 730070, China
Abstract: The traditional collaborative filtering recommendation algorithm is limited by data scarcity and the cold start problem.Leveraging the trust relationships between users, this paper proposes a comprehensive trust recommendation algorithm based on Fuzzy C-Means(FCM) clustering.The algorithm employs the rating data and trust data to obtain the implicit trust value and explicit trust value between users.On this basis, the comprehensive direct trust value is calculated.Then based on the transmission characteristics of trust, the global trust value of Jaccard is acquired.Finally, the direct trust value and Jaccard global trust value is dynamically fused to obtain a comprehensive trust value, and the trust mechanism is integrated into the FCM clustering algorithm to implement accurate recommendation for target users.Experimental results on the real dataset FilmTrust show that the proposed algorithm effectively solves the problem of data scarcity and cold start, providing better recommendation performance than the traditional collaborative filtering recommendation algorithms.
Key words: recommendation system    Fuzzy C-Means(FCM) clustering    trust network    Jaccard global trust value    comprehensive trust value    

开放科学(资源服务)标志码(OSID):

0 概述

随着互联网技术的快速发展,全球信息数据量呈现爆炸式增长,使得互联网上的用户难以在海量信息数据中选择有用和重要的信息。推荐系统通过收集分析用户的历史偏好数据向用户提供更多的个性化信息,其中协同过滤推荐是一种应用比较广泛的个性化推荐算法[1],该算法的目标是寻找与目标用户具有相似兴趣爱好的其他用户,并通过这些用户的项目体验感受来对目标用户所未体验过的项目进行预测。针对协同过滤推荐算法存在的数据稀疏[2]和冷启动问题[3],研究人员提出了很多解决方案来提高推荐精度[4]。一方面,采用基于信息数据的聚类算法解决评分数据不足的问题,其中基于用户间信任的推荐系统旨在利用用户间的信任数据对用户缺失的评分数据进行补充,提高推荐性能[5-7]。另一方面,通过基于聚类的推荐算法缓解评分数据稀疏问题,其主要思想是将偏好差异较小的用户分为同一类别,偏好差异较大的用户分为不同类别,在推荐时选择与目标用户同属一个类别中的其他用户为推荐用户,可在不同程度上缓解数据稀疏问题,因此选择合适的聚类算法对推荐系统的推荐性能非常关键。本文主要研究用户间信任关系对推荐效果的影响,通过对信任数据、评分数据进行建模得到用户显式信任、隐式信任和全局信任,并将信任机制融入模糊C均值(Fuzzy C-Means,FCM)聚类算法中以提升推荐质量。

1 相关工作

由于信任是用户产生决策的重要影响因素,因此基于用户信任关系的推荐系统得到广泛应用,目标用户将信任用户所推荐的内容作为决策影响因素之一[8]。融合社交网络的推荐系统通常将基于用户的协同过滤算法与信任模型相结合,不仅能够有效缓解传统协同过滤推荐算法中的数据稀疏和冷启动问题,而且能提高推荐结果的准确率和覆盖率[9]。融合用户之间的信任关系有利于提升推荐系统的性能,可有效防止恶意影响推荐精度的行为。

在基于社交网络的推荐算法中主要包括显式和隐式两种类型的信任关系,它们分别通过用户之间建立的社交网站收集得到[10]以及用户-项目评分数据推断得到。文献[11]利用用户间的信任数据取代传统协同过滤中的兴趣相似度进行推荐,其为典型的显式信任推荐模型,但由于未设置相应的信任传播阈值,因此使得大量不可信的信任路径得到保留。文献[12]将用户间的评分兴趣相似度作为隐式信任关系代替兴趣相似度进行协同过滤推荐,其为典型的隐式信任推荐模型,但忽略了随着时间的推移用户间信任关系的变化。近年来,研究人员在推荐系统中提出了一些显式信任与隐式信任混合模型。文献[7]提出利用二分图和隐式信任来预测用户偏好,通过用户间的信任关系取代用户兴趣相似度进行协同过滤推荐。文献[13]提出基于信任的矩阵分解算法TrustSVD,该算法不仅考虑了用户间信任数据和评分数据的显性影响,同时考虑了用户间的隐性影响。文献[5]提出一种融合Pareto和置信度的信任推荐系统,当用户间显式数据过于稀疏时,利用用户间的项目评分数据进行补充,从而提高推荐系统的准确性。文献[14]所提出的算法考虑了信任的动态变化,将融合时间衰减函数的皮尔森评分相似度作为用户间隐式信任值,主要对信任传递进行了研究,但未充分挖掘评分数据中隐含的用户间信任关系。

协同过滤推荐算法适合运行在小型数据集中,并且运行效果较好,但现实生活中用户-项目数据量太大,很难利用其对用户进行准确推荐。为了解决这一问题,可在推荐系统中使用聚类算法将用户-项目分成若干聚类,从而缩小推荐系统搜索相似用户的范围。若用户被划分到同一类别,则表示其兴趣相似度较大,否则表示兴趣相似度较小。在众多聚类算法中,K-Means是较为经典的聚类算法,每次对用户进行聚类时,都只能分配到一个类别中。但实际上,在聚类完成时,每个类别中都有和目标用户相似的用户[15],从而使得推荐结果精度降低。为了解决此类聚类问题,将模糊C-Means聚类算法应用到推荐系统中[15],根据用户所属类别的隶属程度来确定用户属于一个或多个类别,从而获得更大的搜索空间寻找兴趣最为相似的用户。文献[16]为进一步提高文献[15]所提算法的推荐质量,利用模糊C均值聚类算法将用户分成若干类别,采用传统欧式距离加权化来获得最佳聚类进行推荐。文献[17]利用用户评分过程中的潜在信任关系,提出一种基于信任机制的概率矩阵分解协同过滤推荐算法,通过构建用户-信任评分矩阵提高推荐准确性。文献[18]应用粒子群优化算法优化模糊C均值聚类算法对用户进行聚类,有效提高了推荐准确率。文献[19]通过K-Means聚类算法对用户进行聚类,然后利用Slope One算法对评分矩阵进行填充,有效缓解了数据稀疏问题。上述推荐算法都是利用用户评分数据进行处理,而真实用户评分数据集通常极度稀疏,导致推荐质量依然较低。

通过以上研究可知,推荐系统中引入信任机制可有效提升推荐效率,但上述推荐算法均未充分挖掘用户间信任传递的关联性,且未综合考虑用户全局信任对每个用户信任关系的影响。由于用户的信任关系仅针对一小部分用户数据,因此无须浪费大量时间扫描全部用户数据。本文提出基于模糊C均值聚类的综合信任推荐算法,旨在缓解数据稀疏与冷启动问题的前提下缩减搜索目标用户的最近邻,并提高推荐质量。首先通过对用户评分数据进行聚类,根据用户隶属情况得到用户所属类别,基于信任数据、评分数据计算所属类别中用户的显式信任值、隐式信任值并得到综合直接信任值;然后通过信任的可传递特性,获取用户间Jaccard全局信任值;最后动态结合用户间综合直接信任与Jaccard全局信任得到综合信任值,将综合信任值取代传统推荐算法中的兴趣相似度实现协同过滤推荐。

2 相关技术

本文主要通过用户-评分矩阵获得用户的聚类类别,根据聚类类别计算用户间的全局信任度,以此对用户进行协同过滤推荐,其中主要包括用户-项目构建、模糊C均值聚类、近邻形成和评分预测4个部分。

2.1 用户-项目评分矩阵构建

在推荐系统中,用户-项目评分数据是由n个用户和m个项目(音乐、书籍、商品等)所组成的$ n\times m $维的矩阵,其中,用户集合$ U=\left({u}_{1}, {u}_{2}, \cdots , {u}_{n}\right) $,项目集合$ I=\left({i}_{1}, {i}_{2}, \cdots , {i}_{m}\right) $$ {u}_{n} $表示用户集合中第n个用户,$ {i}_{m} $表示项目集合中第m个项目。用户对项目的评分为$ R=\left({r}_{u1, i1}, {r}_{u2, i2}, \cdots , {r}_{un, im}\right) $,其中$ {r}_{ij}\in \left[\mathrm{1, 5}\right] $中的离散值,表示用户$ {u}_{i} $对项目$ {I}_{j} $的评分。本文中用户评分缺失采用评分0来代替。如果用户对项目的评分为1,则表示用户对该项目非常不感兴趣,如果用户对项目的评分为5,则表示用户对该项目非常感兴趣。评分项目矩阵如表 1所示。

下载CSV 表 1 用户-项目评分矩阵 Table 1 User-project rating matrix
2.2 模糊C均值聚类

基于用户属性向量对用户进行聚类,即用户-项目评分数据映射到n维向量上$ \boldsymbol{u}=\left({r}_{1}, {r}_{2}, \cdots , {r}_{n}\right) $,对用户属性向量进行模糊C均值聚类。模糊C均值聚类算法[20]原理为根据隶属度来表示样本点属于某个聚类的隶属程度。将样本集$ X=\left\{{x}_{1}, {x}_{2}, \cdots , {x}_{n}\right\} $中的每一个样本点模糊划分到K个聚类中,更新每个聚类中心$ {c}_{i}\left(i=\mathrm{1, 2}, \cdots , k\right) $,并使得划分代价损失函数达到最小值。划分代价损失函数的计算公式为:

$ J\left(U, {c}_{1}, {c}_{2}, \cdots , {c}_{k}\right)={\sum\limits_{i=1}^{k}\sum\limits_{j=1}^{n}\left[{u}_{i}\left({x}_{j}\right)\right]}^{m}‖{x}_{j}-{{c}_{i}‖}^{2}   $ (1)
$ \sum\limits_{i=1}^{k}{u}_{i}\left({x}_{j}\right)=1, \forall j=\mathrm{1, 2}, \cdots , n $ (2)

其中,$ \sum\limits_{i=1}^{k}{u}_{i}\left({x}_{j}\right) $表示样本点到任意聚类中心的隶属度总和为1,$ {u}_{i}\left({x}_{j}\right)\in \left[\mathrm{0, 1}\right] $为样本$ {x}_{j} $对第i个聚类中心的隶属度,$ m>1 $为模糊系数,$ ‖{x}_{j}-{c}_{i}‖ $表示样本点$ {x}_{i} $到聚类中心$ {c}_{i} $之间的欧式距离。

为使式(1)取得最小值,对聚类中心$ {c}_{i} $与隶属度$ {u}_{i}\left({x}_{j}\right) $求偏导,得到损失函数取得最小值的必要条件如式(3)、式(4)所示。将必要条件通过迭代求解,得到聚类中心与样本点的隶属度矩阵。

$ {c}_{i}=\frac{\sum\limits_{j=1}^{n}{\left[{u}_{i}\left({x}_{j}\right)\right]}^{m}{x}_{j}}{\sum\limits_{j=1}^{n}{\left[{u}_{i}\left({x}_{j}\right)\right]}^{m}} $ (3)
$ {u}_{i}\left({x}_{j}\right)=\frac{1}{\sum\limits_{i=1}^{k}{\left(\frac{‖{x}_{j}-{c}_{i}‖}{‖{x}_{j}-{c}_{k}‖}\right)}^{\frac{2}{\left(m-1\right)}}} $ (4)

算法1  模糊C均值聚类推荐算法

输入  用户-项目评分矩阵,聚类个数K,最近邻个数N,目标用户u

输出  缺失项目预测评分

步骤1  输入用户评分矩阵,根据用户评分数据对用户进行模糊C均值聚类。

步骤2  计算每个用户对每个类别的隶属度,根据用户隶属度对用户进行聚类。

步骤3  找到目标用户所在聚类,同一类中用户偏好相似度较高,不同类别中用户相似度较低,计算目标用户与类别中其他用户的偏好相似度。找到与目标用户相似度最高的K个用户为目标用户的最近邻。

步骤4  对所得目标用户与最近邻进行缺失项目的评分预测或top-N推荐。

2.3 近邻形成

协同过滤推荐算法的基本原理是通过分析挖掘目标的历史评分数据,找到与其兴趣偏好相似的用户,并为目标用户推荐未体验过的商品和项目。换言之,通过目标用户的历史评分数据找到相似用户,利用相似用户为目标用户进行推荐。度量用户间相似性是推荐过程中的重要流程,与推荐精确度密切相关,其主要度量指标为皮尔森相关系数、余弦相似度和Jaccard相似度等,其中皮尔森相关系数是一种较常用的相似性度量系数[21],计算公式为:

$ \mathrm{s}\mathrm{i}\mathrm{m}\left(u, v\right)=\frac{\sum\limits_{i\in {I}_{u, v}}\left({r}_{u, i}-{\stackrel{-}{r}}_{u}\right)\left({r}_{v, i}-{\stackrel{-}{r}}_{v}\right)}{\sqrt{\sum\limits_{i\in {I}_{u, v}}{\left({r}_{u, i}-{\stackrel{-}{r}}_{u}\right)}^{2}}\sqrt{\sum\limits_{}{\left({r}_{v, i}-{\stackrel{-}{r}}_{v}\right)}^{2}}} $ (5)

其中,$ {I}_{u, v} $表示用户u和用户v共同评分的项目,$ {r}_{u, i} $$ {r}_{v, i} $分别表示用户u和用户v对项目i的评分。

2.4 评分预测

通过度量用户间的兴趣相似度可得到K个与用户兴趣最为相似的近邻进行评分预测,评分预测公式为:

$ {r}_{u, i}={\stackrel{-}{r}}_{u}+\frac{\sum\limits_{v\in \mathrm{N}\mathrm{N}\mathrm{K}(u, i)}\mathrm{s}\mathrm{i}\mathrm{m}\left(u, v\right)\cdot \left({r}_{v, i}-{\stackrel{-}{r}}_{v}\right)}{\sum\limits_{v\in \mathrm{N}\mathrm{N}\mathrm{K}\left(u, i\right)}\left|\mathrm{s}\mathrm{i}\mathrm{m}\left(u, v\right)\right|} $ (6)

其中,$ {r}_{u, i} $表示目标用户对缺失项目i的预测评分,$ {\stackrel{-}{r}}_{u} $表示目标用户对所有评分项目的平均评分值,$ \mathrm{N}\mathrm{N}\mathrm{K}(u, i) $表示具有预测项目i的目标用户的最近邻集合,$ \mathrm{s}\mathrm{i}\mathrm{m}\left(u, v\right) $表示用户间的皮尔森相似度。

3 改进的模糊C均值聚类推荐算法

模糊C均值聚类推荐算法[15]运用聚类方法将兴趣相似用户划分到相同类别中,并选择与目标用户同属一个类别的其他用户作为推荐用户,以此来解决推荐系统中的数据稀疏与冷启动问题,但在推荐系统中遇到绝对数据稀疏与冷启动用户时推荐效率依旧较低。因此,本文将用户间信任机制融入该算法,进一步提高推荐效率。将协同过滤推荐算法中用户之间的联系拓展为用户间综合信任,其中:综合信任关系包含用户间显式信任、隐式信任、综合直接信任与Jaccard全局信任,显式信任关系由用户间信任数据计算所得,隐式信任关系由用户间评分数据所得,综合信任关系是由显式信任关系与隐式信任关系融合计算所得;Jaccard全局信任是指用户在整个推荐系统中的活跃强度,若用户在推荐系统中越活跃,则获得的Jaccard全局信任度就越高。本文算法主要包含3个阶段:1)通过模糊C均值聚类算法对用户进行聚类;2)利用用户信任数据和项目评分数据得到用户间显式信任值、隐式信任值及综合直接信任值;3)由用户间综合直接信任值得到Jaccard全局信任值,并加权结合Jaccard全局信任关系组成综合信任值进行协同过滤推荐。本文算法流程如图 1所示。

Download:
图 1 本文算法流程 Fig. 1 Procedure of the proposed algorithm
3.1 用户间显式信任

信任在宏观上是指相信对方是诚实可信赖的,在推荐系统上的信任是指用户对对方所体验过的项目感兴趣。若用户之间存在显式直接信任关系,则$ T\left({u}_{i}, {u}_{j}\right)=1 $,表示用户$ {u}_{i} $信任用户$ {u}_{j} $,否则$ T\left({u}_{i}, {u}_{j}\right)=0 $,表示用户i没有直接信任关系。用户-用户信任矩阵如表 2所示。

下载CSV 表 2 用户-用户信任矩阵 Table 2 User-user trust matrix

用户间信任数据矩阵可使用有向图$ G=\left(V, E\right) $来表示,其中,V为信任网络中的每个用户节点,E为信任网络中用户节点之间的有向边,表示用户之间存在信任关系。

用户信任网络如图 2所示,用户$ {u}_{1} $与用户$ {u}_{3} $之间有两条有向边,表示用户之间相互信任。用户$ {u}_{1} $与用户$ {u}_{4} $之间有一条有向边,表示用户$ {u}_{1} $信任用户$ {u}_{4} $,但用户$ {u}_{4} $不信任$ {u}_{1} $。用户信任网络上的边[22]可形象表示为$ {E}_{{u}_{i}, {u}_{j}}=\left\{\begin{array}{l}1 , {u}_{i   }\mathrm{t}\mathrm{r}\mathrm{u}\mathrm{s}\mathrm{t}   {u}_{j}   \\ 0, \mathrm{其}\mathrm{他}\end{array}\right. $。利用MASSA等人[11]提出的信任计算方法计算用户间的显式信任值:

$ {T}_{{u}_{i}, {u}_{j}}^{\mathrm{d}}=\frac{{d}_{\mathrm{m}\mathrm{a}\mathrm{x}}-{d}_{{u}_{i}, {u}_{j}}+1}{{d}_{\mathrm{m}\mathrm{a}\mathrm{x}}} $ (7)
Download:
图 2 用户信任网络 Fig. 2 User trust network

其中,$ {d}_{{u}_{i}, {u}_{j}} $表示用户$ {u}_{i} $与用户$ {u}_{j} $的最短信任传播距离。例如,用户$ {u}_{1} $与用户$ {u}_{5} $没有直接信任关系,但他们可以通过信任传递的方式获取对彼此的信任,此时$ {u}_{1} $$ {u}_{5} $的信任传播距离为$ {d}_{\mathrm{m}\mathrm{i}\mathrm{n}}\left({u}_{1} {u}_{2} {u}_{6} {u}_{5}, \right.{u}_{1} {u}_{2} {u}_{3} {u}_{6} {u}_{5}, $ $ {u}_{1} {u}_{2} {u}_{3} {u}_{5}, {u}_{1} {u}_{3} {u}_{6} {u}_{5}, \left.{u}_{1} {u}_{3} {u}_{5}, {u}_{1} {u}_{4} {u}_{5}\right) $ = 3,$ {d}_{\mathrm{m}\mathrm{a}\mathrm{x}} $表示用户间最大传播距离[23],计算公式为:

$ {d}_{\mathrm{m}\mathrm{a}\mathrm{x}}=\frac{\mathrm{l}\mathrm{n}n}{\mathrm{l}\mathrm{n}k} $ (8)

其中,n表示用户信任网络中用户节点的总数,k表示用户节点出入度的平均值。

3.2 用户间隐式信任

本文算法利用用户-项目评分数据、时间衰减函数综合推断出用户间的隐式信任关系。本文采用LATHIA等人[24]提出的信任计算模型来计算用户间的隐式信任值,若用户间有相同评分项目,则表示用户互动一次,评分差异越小,用户间越信任,而互动次数越多表示用户信任程度越高,计算公式为:

$ {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}=C\cdot \left(1-\frac{\sum\limits_{i=1}^{n}|{r}_{u, i}-{r}_{v, i}|}{\sum\limits_{i=1}^{n}{r}_{\mathrm{m}\mathrm{a}\mathrm{x}}}\right)\cdot H $ (9)

其中,$ {r}_{u, i} $$ {r}_{v, i} $表示用户u与用户v对项目i的评分,$ C=\frac{|{I}_{u}\bigcap {I}_{v}|}{\left|{I}_{u}\right|} $表示用户间的可信度,$ \left|{I}_{u}\right| $$ \left|{I}_{v}\right| $表示用户u和用户v对项目评分不为0的数量,分子部分表示用户间共同拥有评分不为0的项目。用户可信度越大,用户的隐式信任程度越高。如图 3图 4所示,用户u与用户v共同拥有评分不为0的项目5项,但用户u与用户v之间的隐式信任程度不同,且随着时间的推移,用户间的隐式信任的衰减速度会由快到慢,最后无限趋于0。时间衰减函数[14, 25]$ H $的计算公式为:

$ H={\mathrm{e}}^{-k(T-t)} $ (10)
Download:
图 3 互动程度相同的示例 Fig. 3 Example with the same degrees of interaction
Download:
图 4 互动程度不同的示例 Fig. 4 Example with the different degrees of interaction

其中,k为影响时间的衰减因子,T为当前时刻,t为用户间的最后交互时刻,即用户最后一次共同拥有不为0评分项目的时刻。

3.3 用户间综合直接信任值计算

将用户间显式信任与隐式信任进行结合,得到用户间综合直接信任值,计算公式[26]为:

$ {T}_{u, v}^{}=\\ \left\{\begin{array}{l}\frac{2\times {T}_{u, v}^{\mathrm{d}}\times {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}}{{T}_{u, v}^{\mathrm{d}}+{T}_{u, \mathrm{v}}^{\mathrm{i}\mathrm{n}\mathrm{d}}}, {T}_{u, v}^{\mathrm{d}}+{T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}\ne 0  \mathrm{且}  {T}_{u, v}^{\mathrm{d}}\times {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}\ne 0\\ {T}_{u, v}^{\mathrm{d}}, {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}=0 \mathrm{且}  {T}_{u, v}^{\mathrm{d}}\ne 0\\ {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}, {T}_{u, v}^{\mathrm{d}}=0 \mathrm{且}  {T}_{u, v}^{\mathrm{i}\mathrm{n}\mathrm{d}}\ne 0\end{array}\right.  $ (11)

综合信任值由用户间综合直接信任值与Jaccard全局信任值组成,计算公式[27]为:

$ {W}_{u, v}^{}=\alpha \cdot {T}_{u, v}^{}+\beta {J}_{u, v}^{}  $ (12)

其中,$ \alpha +\beta =1 $

在聚类完成后,相同聚类中用户间最为信任。通过结合用户间综合直接信任关系、全局信任关系得到用户综合信任值,并找到目标用户所属聚类中最为信任的K个用户进行下一步处理。用户间Jaccard全局信任值计算如式(13)所示:

$ {J}_{u, v}^{}=\frac{\left|{T}_{u}^{}\bigcap {T}_{v}^{}\right|}{\left|{T}_{u}^{}\bigcup {T}_{v}^{}\right|} $ (13)

式(13)表示用户u与用户v所拥有的共同信任用户越多(综合直接信任值大于0.5),则用户uv间的全局信任值越高。

3.4 用户-项目评分预测

通过在用户所属类别中找到与目标用户综合信任值最高的K个推荐用户,利用用户间综合信任值取代传统用户间评分兴趣相似度进行推荐。应用式(14)对目标用户缺失项目评分进行预测[28]

$ {r}_{u, i}={\stackrel{-}{r}}_{u}+\frac{\sum\limits_{v\in \mathrm{N}\mathrm{N}\mathrm{K}(u, i)}{W}_{u, v}^{}\cdot \left({r}_{v, i}-{\stackrel{-}{r}}_{v}\right)}{\sum\limits_{v\in \mathrm{N}\mathrm{N}\mathrm{K}\left(u, i\right)}{W}_{u, v}^{}} $ (14)

算法2  基于模糊C均值聚类的综合信任推荐算法

输入  用户-用户信任矩阵,用户-项目评分矩阵,目标用户

输出  缺失项目的预测评分和预测评分最高的N个项目

步骤1  根据用户属性向量,计算每个用户对每个类别的隶属度,根据用户隶属度进行聚类。

步骤2  计算用户间显式信任值:

$ \begin{array}{l}\mathrm{f}\mathrm{o}\mathrm{r}   \forall   \mathrm{u}\in \mathrm{U}  \mathrm{d}\mathrm{o}\\  \mathrm{f}\mathrm{o}\mathrm{r}   \forall \mathrm{v}\in \mathrm{U}  \mathrm{d}\mathrm{o}\end{array}$

利用式(7)计算用户间显式信任值

$ \begin{array}{l} {\mathrm{T}}_{\mathrm{u}, \mathrm{v}}^{\mathrm{d}}\\  \mathrm{e}\mathrm{n}\mathrm{d}   \mathrm{f}\mathrm{o}\mathrm{r}\\ \mathrm{e}\mathrm{n}\mathrm{d}   \mathrm{f}\mathrm{o}\mathrm{r}\end{array} $

步骤3  找到目标用户所在聚类,计算目标用户与类中其他用户的隐式信任值。利用用户间显式信任值、隐式信任值得到综合直接信任值,并采用综合直接信值计算出用户间Jaccard全局信任值:

for $ \mathrm{i}\in \mathrm{I}    $ do

for $  {\mathrm{i}}_{1}\in \mathrm{u}    $ do

for $ {\mathrm{i}}_{2}\in    \mathrm{v}   $ do

根据式(9)、式(10)计算用户间隐式信任值

$  {\mathrm{T}}_{\mathrm{u}, \mathrm{v}}^{\mathrm{i}\mathrm{n}\mathrm{d}} $

根据式(11)、式(13)计算用户间综合直接信任与全局信任值

$ {\mathrm{T}}_{\mathrm{u}, \mathrm{v}}$

$  {\mathrm{J}}_{\mathrm{u}, \mathrm{v}}$

end for

end for

end for

步骤4  将用户间综合直接信任值与Jaccard全局信任值加权结合得到综合信任。利用式(12)计算用户间的综合信任值$ {W}_{u, v} $

步骤5  将目标用户与其他用户的综合信任值降序排序,选取前K个用户为目标用户的最近邻集合$ {U}_{n} $,利用用户间综合信任值取代传统协同过滤中的相似度进行缺失项目的评分预测及top-N推荐。

for $  \forall {\mathrm{v}}_{\mathrm{i}}\in {\mathrm{U}}_{\mathrm{n}} $ do

利用式(14)对目标用户未评分项目进行预测评分及$ \mathrm{t}\mathrm{o}\mathrm{p} $-N推荐

end for

4 实验结果与分析

本节使用真实数据集并利用Python语言实现本文算法,并在配置为Windows 7、2.50 GHz CPU和8 GB内存的计算机上进行实验。

4.1 数据集

实验使用FilmTrust数据集(http://www.trust.mindswap.org/FilmTrust/),该数据集抓取自FilmTrust网站,包括1 508名用户为2 071部电影项目的评分情况,由评分数据ratings.txt和用户信任数据trust.txt两部分组成,其中:ratings.txt包含35 497条数据,评分范围为0.5~4.0,步长为0.5,密集度为1.044%;trust.txt包含1 853条数据,密集度为0.069%。

4.2 评价指标

为检验本文算法的有效性,采用平均绝对误差(MAE)、覆盖率(COV)和综合评价指标(F1)来评价推荐系统性能。平均绝对误差是指推荐系统为用户所推荐的商品评分与测试集中真实用户商品评分之差的平均值,其值越小表示预测评分越准确,计算公式如式(15)所示。覆盖率是指推荐系统能为用户预测评分商品数量占测试集总商品数量的比值,其值越高,表示算法挖掘长尾商品的能力越强,计算公式如式(16)所示。F1值是指推荐系统综合评价指标[28],其值越高表示性能越好,计算公式如式(17)所示。

$ {M}_{\mathrm{M}\mathrm{A}\mathrm{E}}=\frac{\sum\limits_{i=1}^{N}\left|{r}_{i}-{r}_{p}\right|}{N} $ (15)
$ {C}_{\mathrm{C}\mathrm{O}\mathrm{V}}=\frac{\left|{L}_{u}\right|}{n} $ (16)
$ F=\frac{2\times {P}_{\mathrm{P}\mathrm{r}\mathrm{e}\mathrm{c}\mathrm{i}\mathrm{s}\mathrm{i}\mathrm{o}\mathrm{n}}\times {C}_{\mathrm{C}\mathrm{O}\mathrm{V}}}{{P}_{\mathrm{P}\mathrm{r}\mathrm{e}\mathrm{c}\mathrm{i}\mathrm{s}\mathrm{i}\mathrm{o}\mathrm{n}}+{C}_{\mathrm{C}\mathrm{O}\mathrm{V}}} $ (17)
$ {P}_{\mathrm{P}\mathrm{r}\mathrm{e}\mathrm{c}\mathrm{i}\mathrm{s}\mathrm{i}\mathrm{o}\mathrm{n}}=1-\frac{{M}_{\mathrm{M}\mathrm{A}\mathrm{E}}}{{r}_{\mathrm{m}\mathrm{a}\mathrm{x}}-{r}_{\mathrm{m}\mathrm{i}\mathrm{n}}} $ (18)

其中,ri为测试集中项目i的真实评分,rp为推荐系统为目标用户的商品预测评分,$ \left|{L}_{u}\right| $表示推荐系统为目标用户预测评分商品的数量,n表示测试集中的总商品数量,$ {r}_{\mathrm{m}\mathrm{a}\mathrm{x}} $$ {r}_{\mathrm{m}\mathrm{i}\mathrm{n}} $分别表示推荐系统中的最高评分与最低评分。

4.3 结果分析

实验选取FilmTrust数据集的80%作为训练集,20%作为测试集,使用推荐系统为用户所推荐的商品评分与已知的测试集中的商品评分做对比,利用所给出的评价指标来度量推荐算法性能。将本文算法与传统基于用户的推荐算法BUCF、基于模糊C均值聚类的协同过滤算法FCMCF和基于隐式信任的推荐算法BTCF进行对比,在设置相同参数的情况下,通过评分和$ \mathrm{t}\mathrm{o}\mathrm{p}\mathrm{⁃}\mathrm{N} $预测来评估推荐算法的性能。

本文算法涉及参数$ \alpha 与\beta $,其中,$ \alpha $为用户间综合信任值在综合直接信任值中所占比重,$ \beta $为用户间全局信任值在综合信任值中所占比重。如图 5所示,不同$ \alpha $值对预测评分的平均绝对误差的影响较大,在$ \alpha $=0.1和$ \beta $=0.9时,平均绝对误差值最小,覆盖率与F1值最大,分别为0.45、0.593和0.715,说明当数据稀疏和冷启动用户较多时,本文算法更依赖于通过用户之间的信任传递来获得最佳信任近邻以实现评分预测。

Download:
图 5 α值对推荐质量的影响 Fig. 5 The effect of α values on recommendation quality

图 6给出了本文算法在不同近邻个数时的推荐质量比较结果。可以看出,随着近邻个数的增加,推荐质量不断降低,最终趋于平缓,其中MAE随着近邻个数的增加而增加,原因是随着近邻个数的增加用户间综合信任值不断减小,导致推荐质量不断降低,最终趋于平缓,而COV和F1值随着近邻个数的增加而降低,从而证明本文算法在近邻个数为5时推荐质量较优。

Download:
图 6 近邻个数对推荐质量的影响 Fig. 6 Influence of the number of neighbors on recommendation quality

图 7给出了本文算法与对比算法在不同近邻个数下的MAE变化情况。可以看出,在不同近邻个数时,FCMCF和BUCF算法的MAE均是先下降后上升,最终趋于平稳,且MAE值都在1.0以上,而本文算法与BTCF算法均是随着近邻个数的增加MAE值不断增加,最终趋于稳定,且MAE明显要比FCMCF和BUCF算法小很多。

Download:
图 7 4种推荐算法的MAE比较 Fig. 7 MAE comparison of four recommendation algorithms

图 8图 9给出了本文算法与对比算法在不同近邻个数时的COV和F1值变化情况。可以看出,4种推荐算法随着近邻个数的增加,为目标用户推荐的长尾商品和个性化商品减少导致COV不断减少。当近邻个数为35~40时,本文算法与对比算法在COV上没有很大差别,但当近邻个数为5~20时,本文算法相比对比算法对于长尾商品的挖掘效果更好,并且具有更优的推荐效果。

Download:
图 8 4种推荐算法的COV比较 Fig. 8 COV comparison of four recommendation algorithms
Download:
图 9 4种推荐算法的F1值比较 Fig. 9 F1 values comparison of four recommendation algorithms

综合以上实验结果表明,本文算法相比传统基于用户的推荐算法、基于模糊C均值聚类的协同过滤算法和基于隐式信任的推荐算法在平均绝对误差、对长尾商品的挖掘能力以及综合评价指标上具有更好的性能表现,特别是在近邻个数较少的情况下,本文算法在数据稀疏、冷启动问题下仍能为目标用户进行精准推荐。

5 结束语

本文提出一种基于用户模糊聚类的综合信任推荐算法,使用用户信任数据构建信任网络计算用户间显式信任值,利用评分数据计算用户间动态隐式信任值,并将用户间显式信任与隐式信任相融合得到综合直接信任值,通过动态结合用户综合直接信任值与Jaccard全局信任值得到用户综合信任值,同时利用综合信任值取代传统基于用户的协同过滤中的相似度对目标用户实现精准推荐。实验结果表明,本文算法相比传统推荐算法在平均绝对误差、覆盖率以及F1值指标上具有更好的性能表现。后续将研究用户间的信任传播对推荐系统的性能影响,进一步提升推荐质量与用户体验。

参考文献
[1]
GOHARI F S, ALIEE F S, HAGHIGHI H. A dynamic local-global trust-aware recommendation approach[J]. Electronic Commerce Research and Applications, 2019, 34: 838-845.
[2]
LEE S, YANG J, PARK S Y. Discovery of hidden similarity on collaborative filtering to overcome sparsity problem[C]//Proceedings of the 7th International Conference on Discovery Science. Washington D.C., USA: IEEE Press, 2004: 396-402.
[3]
ACIAR S, ACIAR G, ZHANG D. Comparing product specifications to solve the cold start problem in a recommender system[C]//Proceedings of 2016 XLII Latin American Computing Conference. Washington D.C., USA: IEEE Press, 2017: 1-8.
[4]
MORADI P, AHMADIAN S. A reliability-based recommen-dation method to improve trust-aware recommender systems[J]. Expert Systems with Applications, 2015, 42(21): 7386-7398. DOI:10.1016/j.eswa.2015.05.027
[5]
AZADJALAL M M, MORADI P, ABDOLLAHPOURI A, et al. A trust-aware recommendation method based on Pareto dominance and confidence concepts[J]. Knowledge-Based Systems, 2016, 116: 130-143.
[6]
GOHARI F S, ALIEE F S, HAGHIGHI H. A new confidence-based recommendation approach: combining trust and certainty[J]. Information Sciences, 2018, 422: 21-50. DOI:10.1016/j.ins.2017.09.001
[7]
GAO Quanli, GAO Ling, FAN Jianping, et al. A preference elicitation method based on bipartite graphical correlation and implicit trust[J]. Neurocomputing, 2017, 237: 92-100. DOI:10.1016/j.neucom.2016.09.026
[8]
GOLBECK J, HENDLER J. FilmTrust: movie recommen-dations using trust in Web-based social networks[C]//Proceedings of Consumer Communications and Networking Conference. Washington D.C., USA: IEEE Press, 2006: 282-293.
[9]
GHAVIPOUR M, MEYBODI M R. An adaptive fuzzy recommender system based on learning automata[J]. Electronic Commerce Research and Applications, 2016, 20: 105-115. DOI:10.1016/j.elerap.2016.10.002
[10]
BEDI P, VASHISTH P. Empowering recommender systems using trust and argumentation[J]. Information Sciences, 2014, 279: 569-586. DOI:10.1016/j.ins.2014.04.012
[11]
MASSA P, AVESANI P. Trust-aware recommender systems[C]//Proceedings of 2007 ACM Conference on Recommender Systems. New York, USA: ACM Press, 2007: 17-24.
[12]
YUAN W, SHU L, CHAO H C, et al. iTARS: trust-aware recommender system using implicit trust networks[J]. IET Communications, 2010, 14(4): 1709-1721.
[13]
GUO G B, ZHANG J, YORKESMITH N. TrustSVD: collaborative filtering with both the explicit and implicit influence of user trust and of item ratings[EB/OL]. [2020-02-14]. http://homepage.tudelft.nl/0p6y8/papers/n113.pdf.
[14]
ZHOU Ya, CHAI Wang, HAN Junyang, et al. Recommendation algorithm based on user comprehensive trust degree and community trust propagation[J]. Computer Engineering, 2018, 44(12): 300-306. (in Chinese)
周娅, 柴旺, 韩君阳, 等. 基于用户综合信任度与社区信任传播的推荐算法[J]. 计算机工程, 2018, 44(12): 300-306.
[15]
KOOHI H, KIANI K. User based collaborative filtering using fuzzy C-means[J]. Measurement, 2016, 91: 134-139. DOI:10.1016/j.measurement.2016.05.058
[16]
HU Chaoju, SUN Keni. The research of personalized recommendation based on user fuzzy clustering[J]. Software Guide, 2018, 17(2): 31-34. (in Chinese)
胡朝举, 孙克逆. 基于用户模糊聚类的个性化推荐研究[J]. 软件导刊, 2018, 17(2): 31-34.
[17]
WANG Jianfang, MIAO Yanling, HAN Pengfei, et al. Probabilistic matrix factorization algorithm of collaborative filtering based on trust mechanism[J]. Journal of Chinese Computer Systems, 2019, 40(1): 31-35. (in Chinese)
王建芳, 苗艳玲, 韩鹏飞, 等. 一种基于信任机制的概率矩阵分解协同过滤推荐算法[J]. 小型微型计算机系统, 2019, 40(1): 31-35.
[18]
KATARYA R, VERMA O P. A collaborative recommender system enhanced with particle swarm optimization technique[J]. Multimedia Tools and Applications, 2016, 75(15): 9225-9239. DOI:10.1007/s11042-016-3481-4
[19]
GONG Min, DENG Zhenrong, HUANG Wenming. Collaborative recommendation algorithm based on user clustering and Slope One filling[J]. Computer Engineering and Applications, 2018, 54(22): 139-143. (in Chinese)
龚敏, 邓珍荣, 黄文明. 基于用户聚类与Slope One填充的协同推荐算法[J]. 计算机工程与应用, 2018, 54(22): 139-143.
[20]
LI Xiang, LU Xin, TIAN Jing, et al. Application of fuzzy C-means clustering in data analysis of metabolomics[J]. Analytical Chemistry, 2009, 81(11): 4468-4475. DOI:10.1021/ac900353t
[21]
CHEN Gongping, WANG Hong. A personalized recom-mendation algorithm on improving Pearson correlation coefficient[J]. Journal of Shandong Agricultural University(Natural Science Edition), 2016, 47(6): 940-944. (in Chinese)
陈功平, 王红. 改进Pearson相关系数的个性化推荐算法[J]. 山东农业大学学报(自然科学版), 2016, 47(6): 940-944. DOI:10.3969/j.issn.1000-2324.2016.06.026
[22]
CHEN Ting, ZHU Qing, ZHOU Mengxi, et al. Trust-based recommendation algorithm in social network[J]. Journal of Software, 2017, 28(3): 721-731. (in Chinese)
陈婷, 朱青, 周梦溪, 等. 社交网络环境下基于信任的推荐算法[J]. 软件学报, 2017, 28(3): 721-731.
[23]
YUAN W W, GUAN D H, LEE Y K, et al. Improved trust-aware recommender system using small-worldness of trust networks[J]. Knowledge-Based Systems, 2010, 23(3): 232-238. DOI:10.1016/j.knosys.2009.12.004
[24]
LATHIA N, HAILES S, CAPRA L. Trust-based collaborative filtering[C]//Proceedings of the 8th International Conference on Fuzzy Systems and Knowledge Discovery. Washington D.C., USA: IEEE Press, 2008: 119-134.
[25]
ZHU Peipei. Research on recommendation algorithm based on user's indirect trust and behavior ranking[D]. Changsha: Changsha University of Science and Technology, 2019. (in Chinese)
朱佩佩. 基于用户间接信任及行为排序的推荐算法研究[D]. 长沙: 长沙理工大学, 2019.
[26]
AHMADIAN S, JOORABLOO N, JALILI M, et al. A temporal clustering approach for social recommender systems[C]//Proceedings of 2018 IEEE/ACM International Conference on Advances in Social Networks Analysis and Mining. New York, USA: ACM Press, 2018: 1139-1144.
[27]
SHEUGH L, ALIZADEH S H. A novel 2D-graph clustering method based on trust and similarity measures to enhance accuracy and coverage in recommender systems[J]. Information Sciences, 2018, 432: 210-230. DOI:10.1016/j.ins.2017.12.007
[28]
ZHANG Hongbo, WANG Jialei, ZHANG Lijuan, et al. Trust network based collaborative filtering recommendation algorithm[J]. Computer Science, 2018, 45(8): 146-150. (in Chinese)
张洪波, 王佳蕾, 张丽娟, 等. 基于信任网络的协同过滤推荐方法[J]. 计算机科学, 2018, 45(8): 146-150.