CN106708953A - 基于离散粒子群优化的局部社区检测协同过滤推荐方法 - Google Patents

基于离散粒子群优化的局部社区检测协同过滤推荐方法 Download PDF

Info

Publication number
CN106708953A
CN106708953A CN201611068593.0A CN201611068593A CN106708953A CN 106708953 A CN106708953 A CN 106708953A CN 201611068593 A CN201611068593 A CN 201611068593A CN 106708953 A CN106708953 A CN 106708953A
Authority
CN
China
Prior art keywords
user
community
node
local
value
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN201611068593.0A
Other languages
English (en)
Inventor
刘静
焦李成
王朋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xidian University
Original Assignee
Xidian University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xidian University filed Critical Xidian University
Priority to CN201611068593.0A priority Critical patent/CN106708953A/zh
Publication of CN106708953A publication Critical patent/CN106708953A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/953Querying, e.g. by the use of web search engines
    • G06F16/9535Search customisation based on user profiles and personalisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q50/00Information and communication technology [ICT] specially adapted for implementation of business processes of specific business sectors, e.g. utilities or tourism
    • G06Q50/01Social networking

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Primary Health Care (AREA)
  • Marketing (AREA)
  • Human Resources & Organizations (AREA)
  • Strategic Management (AREA)
  • Tourism & Hospitality (AREA)
  • General Health & Medical Sciences (AREA)
  • General Business, Economics & Management (AREA)
  • Economics (AREA)
  • Health & Medical Sciences (AREA)
  • Computing Systems (AREA)
  • Data Mining & Analysis (AREA)
  • General Engineering & Computer Science (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于离散粒子群优化的局部社区协同过滤推荐方法,主要解决现有技术在获得用户之间相似度数据时存在稀疏性,造成推荐准确率低的问题。其实现步骤是:获取用户对待推荐项目的评分信息,并利用用户对待推荐项目的评分数据间接生成用户之间的关系网络;计算用户之间的相似度,通过相似度对用户关系网络进行局部社团检测,得到局部最密集用户社区,并对其扩展得到局部用户社区;将用户关系网络划分成若干个用户社区,选取用户所在社区内相似度最大的k个用户组成近邻用户集合;根据近邻用户集合对目标用户未评分的项目预测评分,将评分预测值中最大的项目推荐给用户。本发明能得到更好的推荐结果,可用于向用户推荐用户感兴趣的项目。

Description

基于离散粒子群优化的局部社区检测协同过滤推荐方法
技术领域
本发明属于计算机技术领域,更进一步涉及一种局部社区检测的协同过滤推荐方法,可用于个性化服务的推荐系统中。
背景技术
近些年,随着现实生活中计算机网络技术的技术进步,个性化服务已成为一种新的信息服务模式,其中推荐技术是个性化服务中一个重要的组成部分。个性化推荐是指根据用户的兴趣爱好对用户信息进行收集、过滤、分类,找到用户感兴趣的项目或信息并将其推荐给用户的技术。个性化推荐应用日益广泛,应用领域涉及电子商务,网页,电影,图书,音乐等多个方面。个性化推荐的最大的优点在于,它能收集用户特征资料并根据用户特征,如兴趣偏好,为用户主动做出个性化的推荐。而且,系统给出的推荐是可以实时更新的,即当系统中的商品库或用户特征库发生改变时,给出的推荐序列会自动改变。
目前推荐技术主要分为基于内容的推荐技术和基于协同过滤的推荐技术两大类。传统基于内容的推荐方法通过收集项目的内容或属性信息等特征因素,依据用户信息与对应项目的匹配程度,推荐具有相似属性的项目而不考虑历史评分。基于协同过滤的推荐方法则通过分析用户兴趣,在用户群中找到指定用户的相似兴趣用户,综合这些相似用户对某一信息的评价,形成系统对该指定用户对此信息的喜好程度预测。相比于基于内容的推荐技术,协同过滤技术无需获得对象的信息,可以在缺乏对象内容描述的情况下进行推荐。
协同过滤推荐技术广泛应用于推荐系统中,然而其同样存在数据稀疏性的问题。所谓数据稀疏性问题是指在一个推荐系统中,用户的数量通常远小于项目的数量,很多用户对项目的评价数据较少,造成了协同过滤技术对于数据的缺乏,最终影响推荐系统的准确性。
随着网络技术特别是Facebook、微博等社交网站的兴起,社会网络逐渐成为复杂网络领域的研究热点。社会网络以单个人为节点构成社会结构,人与人之间通过相互作用的关系联结起来。相互作用的关系包括友谊、利益关系、宗教信仰等。根据大量的研究发现,在许多社会网络中都有一个典型的特征结构-社区结构,即一个复杂网络可以划分成若干社区。通常认为,一个明显的社区结构要求社区内的节点与节点之间连接相对紧密,社区间的节点与节点之间连接相对稀疏。同一社区内的点往往具有相似的性质,检测这些具有相似性质的社区可以提供重要信息,有助于理解和推测网络的结构和个体之间的关系。
对于社会网络来说,节点可以代表的人或社会群体,边代表两个人或者群体之间存在关系,可以建模为G=(V,E)模型,其中V表示一组节点或顶点,E表示一个链接的集合,称为边集,用于连接任意两个节点。在现有的大多数复杂网络的社区检测方法中,主要是对网络进行整体划分。而实际生活中,动态网络在许多真实网络无处不在,由于规模巨大,分散的,动态特性,传统的社区检测方法,从全局的观点很难获得真实的社团结构,而且社区的局部拓扑信息也不容易得到。局部社区是网络的密集连接的节点子集,这些子集能反映网络中社区的局部拓扑信息,因此具有重要意义。
西安电子科技大学提出的专利申请“基于进化计算对社会系统进行社区检测的方法”(专利号:201210158332,公开号:CN102722639A)采用了图分割方法解决社会系统的社区检问题。该方法的实施步骤为:首先,通过统计社会系统的个体种类,记录个体相互间关系的属性分布;其次,依据这些统计信息构建能够描述社会系统层次结构的加权无向图,把复杂符号网络的社区检测问题转化为相应的图分割问题;然后,选取修正模块度作为图分割质量评价准则,并通过进化算法优化该修正模块度来对加权无向图进行分割;最后,将图分割结果作为该网络的社区检测结果。该方法存在的不足是:对网络进行整体划分,不容易得到局部拓扑信息,没有考虑到在实际应用中社会系统中网络规模很大,且对网络进行整体划分,所消耗的时间比较长。
现有的大多数局部社区检测的方法,例如,Clauset方法首先定义一个局部模块度函数并且指定一个节点,然后对局部模块度函数进行贪婪优化,来发现包含此节点的局部社区。这种方法由于对源节点的位置很敏感,对于选取不同的源节点,会得到的不同社团结构,从而导致对节点社区划分的错误结果。
发明内容
本发明的目的在于针对上述已有技术的不足,提供一种基于离散粒子群优化的局部社区检测协同过滤推荐方法,以有效解决对源节点的位置敏感性和产生的数据稀疏性问题,提高推荐准确性。
为实现上述目的,本发明对现有粒子群优化算法PSO进行改进,其技术方案包括如下:
1.一种基于离散粒子群优化的局部社区检测的协同过滤推荐方法,包括如下步骤:
(1)获取用户对待推荐项目的评分信息R(m,n),通过用户对待推荐项目的评分信息间接生成用户与用户之间的关系网络,其中任意两个用户共同评分的项目个数表示这两个用户之间的权值关系,这些用户之间的权值关系构成用户与用户的关系网络,用户对项目的评分信息R(m,n)用如下矩阵表示:
其中m和n分别表示用户数和项目数,rij表示矩阵中第i行第j列的元素用户i对项目j的评分值;
(2)通过用户与用户的关系网络,计算任意两个用户u与v之间的相似度s(u,v);
(3)对用户与用户的关系网络进行局部的社团检测,得到局部最密集用户社区:
(3a)粒子群初始化:将每个用户比作一个节点,获得用户网络的节点数N,随机生成100个初始粒子,每一个粒子同时拥有N维位置矢量Pl和N维速度矢量Vl
Pl={pl 1,pl 2,...,pl r,...,pl N},
Vl={vl 1,vl 2,...,vl r,...,vl N},
其中,pl r表示第r个节点在位置矢量中所属的社团编号,同时vl r表示第r个节点在速度矢量中所属的社团编号,r∈[1,N],l∈[1,100];
(3b)定义T(Ct)表示第t个社区Ct的质量函数:
其中S表示的是最密集的社团,Sc表示社团S的补集,O(S)表示在社团S内两倍的连接边的数目,B(S)表示社团S中的节点与剩余网络中的节点连接边的数目,Abq表示在用户与用户的关系网络的邻接矩阵中用户b与用户q的连接关系,如果用户b与用户q之间有边相连,则Abq=1,否则,Abq=0;
(3c)定义每个粒子内局部社区质量函数最高的值为粒子的适应度函数fun(TC):
fun(Tc)=maxT(Ct);
(3d)对粒子的位置矢量和速度矢量按照如下公式进行更新:
得到更新后的粒子位置矢量和更新后的速度矢量:
Pl'={p'l 1,p'l 2,...,p'l r,...,p'l N},
Vl'={v'l 1,v'l 2,...,v'l r,...,v'l N},
其中,p′l r表示第r个节点在更新后位置矢量中所属的社团编号,p′l r∈[1,N];v′l r表示第r个节点在在更新后速度矢量中所属的社团编号,v′l r∈[1,N];ω为粒子群优化算法中的一个惯性权重,取值为ω=0.7298;c1为第一学习因子,取值为0.5;c2为第二学习因子,取值为0.5;Pbestl是上一次适应度函数最大的第l个粒子对应的位置矢量,Gbest是到目前为止所有的粒子中的适应度函数最大的粒子对应的位置矢量;为乘法操作算子,⊙为减法操作算子,为加法操作算子;
(3e)设ACu表示社区集合,根据粒子的位置矢量和速度矢量的更新公式迭代100次,取最后一次迭代后Gbest中适应度函数值对应的局部社区,作为局部最密集用户社区Cu
(4)对局部最密集用户社区Cu进行扩展,得到局部用户社区:
(4a)定义M(Cu)表示社区Cu的局部模块度函数:
其中表示局部最密集用户社区Cu的内部节点相似度之和,表示局部最密集用户社区Cu的内部节点与外部节点相似度之和;
(4b)从局部最密集用户社区Cu找到与其的相连节点构成节点集U,选择U中能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的社区Cu中,此时的局部最密集用户社区,记为Cu',并更新与其的相连节点构成节点集,记为U',下一次扩展时,再从U'中选择能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的局部最密集用户社区Cu',中,不断重复此过程,直到预定义的局部模块化函数达到最大值,此时得到一个局部用户社区Cu1
(4c)将此局部用户社区Cu1加入到社区集合ACu中,并把此部分节点从网络中移除;
(4d)循环步骤(4a)-(4c),将用户与用户的关系网络中所有节点都划分到对应社区中,得到局部用户社区Cu2,…Cuj,...,Cuf,从而得到最后的社区划分集合:
ACu={Cu1,…Cuj,...,Cuf},其中Cuj表示第j个社区,j∈[1,f],f表示社区个数;
(5)将用户关系网络划分为社区后,对用户未评分的项目进行预测评分,得到未评分项目的评分预测值;
(6)将评分预测值中最大的项目推荐给用户。
本发明与现有的技术相比具有以下优点:
1.解决了用户数据稀疏性的问题。
本发明通过在社区内寻找相似度较高的用户,获得了用户和用户之间的潜在关系,有效解决了传统协同过滤推荐中用户数据稀疏性问题,因为通常在一个社区内,用户具有相似的兴趣爱好,所以可以得到更多用户之间信任度较高关系数据。
2.提高了网络社区划分的效果。
传统的局部社团检测方法,从某一单一节点开始发现社团结构,是对源节点敏感的,源节点的选取对最终得到的网络会有影响,而本发明由于在离散粒子群优化的社区检测中提出了局部模块度函数,得到局部最密集社团检测并扩展得到局部社区,能克服这个缺点,能得到较好的网络社区划分。
3.提高了推荐效率。
本发明将网络社区检测技术与传统协同过滤推荐技术相结合,弥补了传统协同过滤推荐技术的缺点,提高了推荐效率。
仿真实验结果表明,本发明的平均绝对误差MAE和均方根误差RMSE均比传统协同过滤推荐方法的误差小,得到了更好的推荐结果。
附图说明
图1是本发明的实现总流程图;
图2是本发明中使用的用户与项目关系网络示意图;
图3是本发明中局部社团检测模型示意图;
图4是本发明中对用户与用户的关系网络进行社区检测的子流程图;
图5是本发明中用户对未评分项目进行预测评分的子流程图;
图6是用传统协同过滤方法与本发明方法对movielens数据集进行推荐的平均绝对误差值MAE比较图;
图7是用传统协同过滤方法与本发明方法对movielens数据集进行推荐的均方根误差值RMSE比较图。
具体实施方式
为了对本发明进行清楚描述,本实例以用户对电影的推荐为例,但不构成对本发明的任何限制,本发明可以适用于所有的用户-项目推荐系统,例如用户对商品、网页的推荐等。
参照图1,本发明的实施步骤如下:
步骤1.获取用户对待推荐电影的评分信息。
1a)将用户对电影的评分信息用矩阵R(m,n)表示为:
其中m和n分别表示用户数和项目数,rij表示矩阵中第i行第j列的元素用户i对项目j的评分值,这里的项目指代电影,评分指用户对电影的打分,在其他情形项目可包括商品、网页、图书这些要推荐的内容,评分包括观看次数、浏览次数和购买记录;
1b)通过用户对待推荐项目的评分数据间接生成用户与用户之间的关系网络,其中任意两个用户共同评分的项目个数表示这两个用户之间的权值关系,这些用户之间的权值关系构成用户与用户的关系网络,如图2所示。
图2给出了表示一个简单的用户对电影的评分结构,图2中较大的节点代表用户,较小的节点代表电影,边上权值表示用户对电影的评分。由图2可知,用户Ua和用户Ub共同评分了三个电影,因此他们之间的权值w(Ua,Ub)=3。
步骤2.通过用户之间的关系网络,计算任意两个用户u和v之间的相似度s(u,v)。
计算任意两个用户u和v之间的相似度s(u,v),有许多现有的计算公式,例如余弦相似度公式、Pearson相关系数公式、Jaccard指标公式,其中:
余弦相似度计算公式如下:
式中Γ(u)表示用户u及与用户u相连接的用户集合,Γ(v)表示用户v及与用户v相连接的用户集合,x∈Γ(u)∩Γ(v)表示同时与用户u和用户v相连接的用户,w(u,x)表示用户u和用户x的权值,w(v,x)表示用户v和用户x的权值;
Pearson相关系数计算公式如下:
式中Γ(u)表示用户u及与用户u相连接的用户集合,Γ(v)表示用户v及与用户v相连接的用户集合,x∈Γ(u)∩Γ(v)表示同时与用户u和用户v相连接的用户,w(u,x)表示用户u和用户x的权值,w(v,x)表示用户v和用户x的权值,表示用户u与其他用户的权值的平均值,表示用户v与其他用户的权值的平均值;
Jaccard指标计算公式如下:
式中Nu表示与用户u连接的用户集合,Nv表示与用户v连接的用户集合。
相比于其他相似度公式,余弦相似度公式获得的相似度准确率较高,计算复杂度相对较低,应用也最为广泛,因此本发明选用余弦相似度公式,计算任意两个用户u和v之间的相似度s(u,v)。
步骤3.对用户与用户的关系网络进行局部的社团检测,得到局部最密集用户社区。
传统的网络社区检测方法包括全局社团检测方法和局部社团检测方法,其中:
全局社团检测方法,包括基于图分割的方法和基于层次聚类的方法,该基于图分割的方法的基本思想是将网络以图形形式划分成若干个子集,同时要求各子集间连接边尽可能少;该基于层次聚类的方法则是通过不同方法建立预定义启发规则获得社区结构,例如其中的基于边介数的GN分裂方法,它的基本思想就是不断移除网络中边介数最大的边从而将整个网络划分成若干个社区,其中边介数定义为网络中所有最短路径中经过该边的路径的数目占最短路径总数的比例。它们都是将网络整体划分为若干个社团。
局部社团检测方法,不考虑网络的其余部分的结构而是根据局部连接条件,来确定一个子集节点作为一个社区,如图3。相对于全局社团检测,局部社团检测能发掘出局部的信息。传统的局部社团检测方法对源节点的位置是敏感的,源节点选取的不同,最终得到的社团结构也可能不同。本发明基于离散粒子群优化的局部的社团检测方法首先得到局部最密集用户社区,并进一步扩展得到局部用户社区,克服了传统的局部社团检测方法对源节点的位置敏感这一缺陷,此外本发明扩展局部最密集用户社区得到局部用户社区这个过程是以相似度为基础,传统协同过滤推荐技术也应用了相似度技术,因此本发明采用的社区检测能够很好的与传统协同过滤推荐技术相结合。
参照图4,本步骤的实现如下:
(3a)粒子群初始化:将每个用户比作一个节点,获得用户网络的节点数N,随机生成100个初始粒子,每一个粒子同时拥有N维位置矢量Pl和N维速度矢量Vl
Pl={pl 1,pl 2,...,pl r,...,pl N},
Vl={vl 1,vl 2,...,vl r,...,vl N},
其中,pl r表示第r个节点在位置矢量中所属的社团编号,同时vl r表示第r个节点在速度矢量中所属的社团编号,r∈[1,N],l∈[1,100];
(3b)定义T(Ct)表示第t个社区Ct的质量函数:
其中S表示的是最密集的社团,Sc表示社团S的补集,O(S)表示在社团S内两倍的连接边的数目,B(S)表示社团S中的节点与剩余网络中的节点连接边的数目,Abq表示在用户与用户的关系网络的邻接矩阵中用户b与用户q的连接关系,如果用户b与用户q之间有边相连,则Abq=1,否则,Abq=0;
(3c)定义每个粒子内局部社区质量函数最高的值为粒子的适应度函数fun(TC):
fun(Tc)=maxT(Ct);
(3d)对粒子的位置矢量和速度矢量按照如下公式进行更新:
得到更新后的粒子位置矢量和更新后的速度矢量:
Pl'={p'l 1,p'l 2,...,p'l r,...,p'l N},
Vl'={v'l 1,v'l 2,...,v'l r,...,v'l N},
其中,p′l r表示第r个节点在更新后位置矢量中所属的社团编号,p′l r∈[1,N];v′l r表示第r个节点在在更新后速度矢量中所属的社团编号,v′l r∈[1,N];ω为粒子群优化算法中的一个惯性权重,取值为ω=0.7298;c1为第一学习因子,取值为0.5;c2为第二学习因子,取值为0.5;Pbestl是上一次适应度函数最大的第l个粒子对应的位置矢量,Gbest是到目前为止所有的粒子中的适应度函数最大的粒子对应的位置矢量;为乘法操作算子,⊙为减法操作算子,为加法操作算子;
定义粒子的状态更新规则中的各类操作算子如下:
3d1)乘法操作算子
当位置矢量P或速度矢量V乘以一个常数Co时,在[0,1]的范围内产生一个随机数,如果随机数小于Co,则操作的结果为P或V,否则操作的结果为0,即:
3d2)减法操作算子⊙:
此算子应用于两个位置矢量相减,位置矢量P1减去位置矢量P2,若P1的适应度值不等于位置P2的适应度值,则其操作的结果是P1,否则操作的结果为0;
3d3)加法操作算子
此算子可应用于位置矢量与位置矢量之间或位置矢量与速度矢量之间的操作,例如,位置矢量P与速度矢量V之间的进行操作,如果V为零,则其操作的结果是P,否则P与V进行交叉;或者第一位置矢量P1与第二位置矢量P2的结果,如果P2为零,则其操作的结果是P1,否则P1与P2进行交叉:
交叉的过程如下表:
v κsrc κdest(before) κdest(after)
1 2
2 2
3 2 5 5
4 8
5 3
6 3 3 3
7 9 7 7
8 9 4 4
(3e)设ACu表示社区集合,根据粒子的位置矢量和速度矢量的更新公式迭代100次,取最后一次迭代后Gbest中适应度函数值对应的局部社区作为局部最密集用户社区Cu
步骤4.对局部最密集用户社区Cu进行扩展,得到局部用户社区:
参照图4,本步骤的实现如下:
(4a)定义M(Cu)表示社区Cu的局部模块度函数:
其中表示局部最密集用户社区Cu的内部节点相似度之和,表示局部最密集用户社区Cu的内部节点与外部节点相似度之和;
(4b)从局部最密集用户社区Cu找到与其的相连节点构成节点集U,选择U中能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的社区Cu中,此时的局部最密集用户社区,记为Cu′,并更新与其的相连节点构成节点集,记为U′,下一次扩展时,再从U′中选择能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的局部最密集用户社区Cu′中,不断重复此过程,直到预定义的局部模块化函数达到最大值,此时得到一个局部用户社区Cu1
(4c)将此局部用户社区Cu1加入到社区集合ACu中,并把此部分节点从网络中移除;
(4d)循环步骤(4a)-(4c),将用户与用户的关系网络中所有节点都划分到对应社区中,得到局部用户社区Cu2,...Cuj,...,Cuf,从而得到最后的社区划分集合:
ACu={Cu1,...Cuj,...,Cuf},其中Cuj表示第j个社区,j∈[1,f],f表示社区个数。
步骤5.将用户关系网络划分为社区后,对用户未评分的项目进行预测评分,得到未评分项目的评分预测值。
传统的协同过滤推荐步骤包括:获得目标用户对已评分项目的评分平均值;计算用户与其他用户的相似度;选取最近邻的k个相似度用户作为近邻用户域;通过用户的评分平均值和近邻用户域计算目标用户对未评分项目的评分预测值,并将预测值最大的项目推荐给用户。
传统协同过滤推荐用户之间的数据较为稀疏,并且仅仅与目标用户相似度较高的用户对项目的评分有时参考性也较低,而通常在一个社区内,用户具有相似的兴趣爱好,所以可以得到更多用户之间信任度较高关系数据,因此本发明通过在社区内获得目标用户的最近邻用户,能够提供推荐效率。
参照图5,本步骤的具体实现如下:
(5a)获得用户对已评分项目的评分平均值:
在用户对项目的评分矩阵R(m,n)中,计算用户u对已评分项目的评分平均值:其中n为总的项目数,s为已评分的项目数,元素rui表示用户u对项目i的评分值,rui=0表示用户u对项目i未评分;
(5b)根据步骤(2)获得的用户之间的相似度值s(u,v),选取用户u所在社区内相似度最大的k个用户组成集合Nk,集合中的用户用u'表示;
(5c)计算用户u对未评分项目ix的评分预测值
(5c1)计算用户集合Nk中用户u'对已评分项目的评分平均值
(5c2)对用户未评分的项目ix,根据用户u与u'的相似度s(u,u')和u'对已评分项目的评分平均值计算集合Nk内用户u'对ix的评分偏差
其中u'表示相似度集合Nk中的用户,s(u,u')表示用户u和u'的相似度值,表示用户u'对项目ix的评分值,表表示用户u'对已评分项目的评分平均值;
(5c3)将用户u对已评分项目的评分平均值与集合Nk内用户u'对ix的评分偏差相加,得到用户u对未评分的项目ix的评分预测值
(5d)按照步骤(5c3)的公式,计算出所有用户对未评分项目的评分预测值。
步骤6.将评分预测值中最大的项目推荐给用户,即从所有评分预测值中选出最大预测值对应的电影,推荐给用户。
本发明的效果可通过以下实验进一步说明:
1.实验运行环境和条件设置
实验运行的环境:CPU为Intel(R)Core(TM)i3@2.30GHz,内存为4GB,硬盘空间64GB,编译环境为Microsoft Visual Studio 2013,编译语言为C++。
2.实验内容和结果分析:
本发明选用Movielens电影推荐系统的一个经典数据集,数据包含943个用户对1682部电影的100000条评分信息,每个用户至少对20部电影评分,评分为从1到5的整数值。
将数据集中的数据分成训练数据和测试数据两部分,给定数据集中80%的用户对电影的评分数据作为训练数据,去预测剩余20%用户对电影的评分值,并将预测得到的评分值与真实的评分值比较。
本发明选用常用的推荐效果评价指标,即平均绝对误差MAE和均方根误差RMSE作为推荐评价指标。其中MAE反应预测评分和真实评分的误差的平均值,定义如下:
其中N表示测试集大小,pi和qi分别代表用户预测评分和实际用户评分。
RMSE反应预测评分和真实评分的均方差值,定义如下:
其中N表示测试集大小,pi和qi分别代表用户预测评分和实际用户评分,MAE和RMSE值越高表示预测期望越低,反之值越低表示预测越准确。
本实验选用基于余弦相似度的传统协同过滤方法CFC和基于Pearson相关系数的传统协同过滤方法CFP与本发明进行误差比较,由于平均绝对误差MAE和RMSE都受到相似度用户数k的影响,故测试三种方法在不同k值时所得的MAE值和RMSE值。
实验1,将三种方法在不同k值时所得的平均绝对误差MAE值绘制成折线图,结果如图6;实验2,将三种方法在不同k值时所得的均方差值RMSE值绘制成折线图,结果如图7。
从图6和图7的实验结果可以看出,本发明与传统协同过滤推荐方法相比,其MAE值和RMSE值都得到了不同程度的降低,表明本发明通过将网络社区检测与协同过滤推荐技术相结合,有效地提高了系统推荐的精度。

Claims (7)

1.一种基于离散粒子群优化的局部社区检测的协同过滤推荐方法,包括如下步骤:
(1)获取用户对待推荐项目的评分信息R(m,n),通过用户对待推荐项目的评分信息间接生成用户与用户之间的关系网络,其中任意两个用户共同评分的项目个数表示这两个用户之间的权值关系,这些用户之间的权值关系构成用户与用户的关系网络,用户对项目的评分信息R(m,n)用如下矩阵表示:
其中m和n分别表示用户数和项目数,rij表示矩阵中第i行第j列的元素用户i对项目j的评分值;
(2)通过用户与用户的关系网络,计算任意两个用户u与v之间的相似度s(u,v);
(3)对用户与用户的关系网络进行局部的社团检测,得到局部最密集用户社区:
(3a)粒子群初始化:将每个用户比作一个节点,获得用户网络的节点数N,随机生成100个初始粒子,每一个粒子同时拥有N维位置矢量Pl和N维速度矢量Vl
Pl={pl 1,pl 2,...,pl r,...,pl N},
Vl={vl 1,vl 2,...,vl r,...,vl N},
其中,表示第r个节点在位置矢量中所属的社团编号,同时表示第r个节点在速度矢量中所属的社团编号,,r∈[1,N],l∈[1,100];
(3b)定义T(Ct)表示第t个社区Ct的质量函数:
其中S表示的是最密集的社团,Sc表示社团S的补集,O(S)表示在社团S内两倍的连接边的数目,B(S)表示社团S中的节点与剩余网络中的节点连接边的数目,Abq表示在用户与用户的关系网络的邻接矩阵中用户b与用户q的连接关系,如果用户b与用户q之间有边相连,则Abq=1,否则,Abq=0;
(3c)定义每个粒子内局部社区质量函数最高的值为粒子的适应度函数fun(TC):
fun(Tc)=maxT(Ct);
(3d)对粒子的位置矢量和速度矢量按照如下公式进行更新:
得到更新后的粒子位置矢量和更新后的速度矢量:
其中,表示第r个节点在更新后位置矢量中所属的社团编号, 表示第r个节点在在更新后速度矢量中所属的社团编号,ω为粒子群优化算法中的一个惯性权重,取值为ω=0.7298;c1为第一学习因子,取值为0.5;c2为第二学习因子,取值为0.5;Pbestl是上一次适应度函数最大的第l个粒子对应的位置矢量,Gbest是到目前为止所有的粒子中的适应度函数最大的粒子对应的位置矢量;为乘法操作算子,⊙为减法操作算子,为加法操作算子;
(3e)设ACu表示社区集合,根据粒子的位置矢量和速度矢量的更新公式迭代100次,取最后一次迭代后Gbest中适应度函数值对应的局部社区,作为局部最密集用户 社区Cu
(4)对局部最密集用户社区Cu进行扩展,得到局部用户社区:
(4a)定义M(Cu)表示社区Cu的局部模块度函数:
其中表示局部最密集用户社区Cu的内部节点相似度之和,表示局部最密集用户社区Cu的内部节点与外部节点相似度之和;
(4b)从局部最密集用户社区Cu找到与其的相连节点构成节点集U,选择U中能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的社区Cu中,此时的局部最密集用户社区,记为Cu',并更新与其的相连节点构成节点集,记为U',下一次扩展时,再从U'中选择能使局部模块化函数M(Cu)的值增大到最大的节点,把此节点添加到当前的局部最密集用户社区Cu'中,不断重复此过程,直到预定义的局部模块化函数达到最大值,此时得到一个局部用户社区Cu1
(4c)将此局部用户社区Cu1加入到社区集合ACu中,并把此部分节点从网络中移除;
(4d)循环步骤(4a)-(4c),将用户与用户的关系网络中所有节点都划分到对应社区中,得到局部用户社区Cu2,…Cuj,...,Cuf,从而得到最后的社区划分集合:
ACu={Cu1,…Cuj,...,Cuf},其中Cuj表示第j个社区,j∈[1,f],f表示社区个数;
(5)将用户关系网络划分为社区后,对用户未评分的项目进行预测评分,得到未评分项目的评分预测值;
(6)将评分预测值中最大的项目推荐给用户。
2.根据权利要求1所述的方法,其中步骤(2)中计算任意两个用户u与v之间的相似度s(u,v),通过如下公式进行:
式中Γ(u)表示用户u及与用户u相连接的用户集合,Γ(v)表示用户v及与用户v相连接的用户集合,x∈Γ(u)∩Γ(v)表示同时与用户u和用户v相连接的用户,w(u,x)表示用户u与用户x之间的权值,w(v,x)表示用户v与用户x之间的权值。
3.根据权利要求1所述的方法,其中步骤(5)中对用户未评分的项目进行预测评分,按照如下步骤进行:
(5a)在用户对项目的评分矩阵R(m,n)中,计算用户u对已评分项目的评分平均值:其中n为总的项目数,s为已评分的项目数,元素rui表示用户u对项目i的评分值,rui=0表示用户u对项目i未评分;
(5b)根据步骤(2)获得的用户之间的相似度值s(u,v),选取用户u所在社区内相似度最大的k个用户组成集合Nk,集合中的用户用u'表示;
(5c)按照下面公式计算用户u对未评分的项目ix的评分预测值为:
其中表示用户u对已评分项目的评分平均值,u'表示相似度集合Nk中的用户,s(u,u')表示用户u和u'的相似度值,表示用户u'对项目ix的评分值,表示用户u'对已评分项目的评分平均值;
(5d)按照步骤(5c)的公式,计算出所有用户对未评分项目的评分预测值。
4.根据权利要求1所述的方法,其中(3d)中乘法操作算子定义如下:
当位置矢量P或速度矢量V乘以一个常数Co时,在[0,1]的范围内产生一个随机数,如果随机数小于Co,则操作的结果为P或V,否则操作的结果为0。
5.根据权利要求1所述的方法,其中(3d)中减法操作算子⊙,定义为两个位置矢量相减,即第一位置矢量P1减去第二位置矢量P2,若P1的适应度值不等于位置P2的适应度值,则其操作的结果是P1,否则操作的结果为0。
6.根据权利要求1所述的方法,其中(3d)中加法操作算子定义为第一位置矢量P1与第二位置矢量P2之间的操作,如果P2为零,则其操作的结果是P1,否则P1与P2进行交叉。
7.根据权利要求1所述的方法,其中(3d)中加法操作算子进一步定义为位置矢量P与速度矢量V之间的进行操作,如果V为零,则其操作的结果是P,否则P与V进行交叉。
CN201611068593.0A 2016-11-28 2016-11-28 基于离散粒子群优化的局部社区检测协同过滤推荐方法 Pending CN106708953A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201611068593.0A CN106708953A (zh) 2016-11-28 2016-11-28 基于离散粒子群优化的局部社区检测协同过滤推荐方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201611068593.0A CN106708953A (zh) 2016-11-28 2016-11-28 基于离散粒子群优化的局部社区检测协同过滤推荐方法

Publications (1)

Publication Number Publication Date
CN106708953A true CN106708953A (zh) 2017-05-24

Family

ID=58935253

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201611068593.0A Pending CN106708953A (zh) 2016-11-28 2016-11-28 基于离散粒子群优化的局部社区检测协同过滤推荐方法

Country Status (1)

Country Link
CN (1) CN106708953A (zh)

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107545471A (zh) * 2017-09-19 2018-01-05 北京工业大学 一种基于高斯混合的大数据智能推荐方法
CN107766331A (zh) * 2017-11-10 2018-03-06 云南大学 对单词情感值进行自动标定的方法
CN108269172A (zh) * 2018-01-18 2018-07-10 四川大学 基于综合相似度迁移的协同过滤算法
CN110060170A (zh) * 2019-03-19 2019-07-26 华中科技大学 基于顶点团随机步数抽样的社交网络用户获取方法和系统
WO2019205795A1 (zh) * 2018-04-26 2019-10-31 腾讯科技(深圳)有限公司 兴趣推荐方法、计算机设备及存储介质
CN110719224A (zh) * 2019-09-26 2020-01-21 西安理工大学 一种基于标签传播的拓扑势社区检测方法
CN111159576A (zh) * 2019-12-31 2020-05-15 亚信科技(中国)有限公司 一种用户分类方法、装置及系统
CN111291904A (zh) * 2020-02-06 2020-06-16 腾讯科技(深圳)有限公司 偏好预测方法、装置及计算机设备
CN111814059A (zh) * 2020-08-24 2020-10-23 安徽大学 基于网络表示学习和社团结构的矩阵分解推荐方法及系统
CN112800345A (zh) * 2021-02-03 2021-05-14 安徽大学 一种社区角色感知的用户需求主动预测方法及系统
CN111552883B (zh) * 2020-05-13 2023-12-12 咪咕文化科技有限公司 内容推荐方法及计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902772A (zh) * 2012-09-27 2013-01-30 福建师范大学 一种基于多目标优化的Web社区发现方法
CN103793476A (zh) * 2014-01-08 2014-05-14 西安电子科技大学 基于网络社区的协同过滤推荐方法
CN104021230A (zh) * 2014-06-27 2014-09-03 重庆邮电大学 一种基于社区发现的协同过滤方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102902772A (zh) * 2012-09-27 2013-01-30 福建师范大学 一种基于多目标优化的Web社区发现方法
CN103793476A (zh) * 2014-01-08 2014-05-14 西安电子科技大学 基于网络社区的协同过滤推荐方法
CN104021230A (zh) * 2014-06-27 2014-09-03 重庆邮电大学 一种基于社区发现的协同过滤方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
PENG WANG: "A multi-agent genetic algorithm for local community detection by extending the tightest nodes", 《IEEE》 *
杨可明等: "混沌离散粒子群优化的高光谱影像端元提取算法", 《测绘科学技术学报》 *

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107545471A (zh) * 2017-09-19 2018-01-05 北京工业大学 一种基于高斯混合的大数据智能推荐方法
CN107766331A (zh) * 2017-11-10 2018-03-06 云南大学 对单词情感值进行自动标定的方法
CN108269172B (zh) * 2018-01-18 2020-02-18 四川大学 基于综合相似度迁移的协同过滤方法
CN108269172A (zh) * 2018-01-18 2018-07-10 四川大学 基于综合相似度迁移的协同过滤算法
US11593894B2 (en) 2018-04-26 2023-02-28 Tencent Technology (Shenzhen) Company Limited Interest recommendation method, computer device, and storage medium
WO2019205795A1 (zh) * 2018-04-26 2019-10-31 腾讯科技(深圳)有限公司 兴趣推荐方法、计算机设备及存储介质
CN110060170A (zh) * 2019-03-19 2019-07-26 华中科技大学 基于顶点团随机步数抽样的社交网络用户获取方法和系统
CN110719224A (zh) * 2019-09-26 2020-01-21 西安理工大学 一种基于标签传播的拓扑势社区检测方法
CN111159576A (zh) * 2019-12-31 2020-05-15 亚信科技(中国)有限公司 一种用户分类方法、装置及系统
CN111159576B (zh) * 2019-12-31 2023-08-11 亚信科技(中国)有限公司 一种用户分类方法、装置及系统
CN111291904A (zh) * 2020-02-06 2020-06-16 腾讯科技(深圳)有限公司 偏好预测方法、装置及计算机设备
CN111291904B (zh) * 2020-02-06 2023-04-18 腾讯科技(深圳)有限公司 偏好预测方法、装置及计算机设备
CN111552883B (zh) * 2020-05-13 2023-12-12 咪咕文化科技有限公司 内容推荐方法及计算机可读存储介质
CN111814059A (zh) * 2020-08-24 2020-10-23 安徽大学 基于网络表示学习和社团结构的矩阵分解推荐方法及系统
CN112800345A (zh) * 2021-02-03 2021-05-14 安徽大学 一种社区角色感知的用户需求主动预测方法及系统
CN112800345B (zh) * 2021-02-03 2022-09-30 安徽大学 一种社区角色感知的用户需求主动预测方法及系统

Similar Documents

Publication Publication Date Title
CN106708953A (zh) 基于离散粒子群优化的局部社区检测协同过滤推荐方法
CN103793476B (zh) 基于网络社区的协同过滤推荐方法
CN103514255B (zh) 一种基于项目层次类别的协同过滤推荐方法
Abdollahi et al. Explainable restricted boltzmann machines for collaborative filtering
Yin et al. Structural link analysis and prediction in microblogs
CN104199818B (zh) 一种基于分类的社会化推荐方法
CN106802956A (zh) 一种基于加权异构信息网络的电影推荐方法
CN103399858A (zh) 基于信任的社会化协同过滤推荐方法
Bin et al. Collaborative filtering recommendation algorithm based on multi-relationship social network
Chen et al. A context-aware recommendation approach based on feature selection
Huang et al. Information fusion oriented heterogeneous social network for friend recommendation via community detection
CN111143704A (zh) 一种融合用户影响关系的在线社区好友推荐方法及系统
Mežnar et al. Prediction of the effects of epidemic spreading with graph neural networks
Chen et al. DPM-IEDA: dual probabilistic model assisted interactive estimation of distribution algorithm for personalized search
Guo et al. Network representation learning based on community-aware and adaptive random walk for overlapping community detection
CN104572623B (zh) 一种在线lda模型的高效数据总结分析方法
Choudhary et al. Community detection algorithms for recommendation systems: techniques and metrics
Nakatsuji et al. Recommendations over domain specific user graphs
Zhao et al. Exploiting homophily-based implicit social network to improve recommendation performance
Pujahari et al. A new grouping method based on social choice strategies for group recommender system
Kuang et al. Community-based link prediction in social networks
Kaiser et al. Ant-based simulation of opinion spreading in online social networks
Altinel et al. Identifying topic-based opinion leaders in social networks by content and user information
Xue et al. An incremental group-specific framework based on community detection for cold start recommendation
CN110717085A (zh) 一种基于虚拟品牌社区的意见领袖识别方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
WD01 Invention patent application deemed withdrawn after publication
WD01 Invention patent application deemed withdrawn after publication

Application publication date: 20170524