一种社区角色感知的用户需求主动预测方法及系统

文档序号:25053200发布日期:2021-05-14 13:32阅读:122来源:国知局
一种社区角色感知的用户需求主动预测方法及系统

1.本发明涉及一种预测方法,特别是社区角色感知的用户需求主动预测方法及系统。


背景技术:

2.随着信息技术和互联网的发展,能否准确、快速、主动的预测用户需求,已成为服务商实现商业收益最大化的关键。在对用户的需求预测这一方面,协同过滤是常用的推荐技术,它能有效地解决信息过载问题,帮助用户迅速找到有价值的信息,过滤无用信息。其基本思想是:依据用户的购买记录、评分记录、浏览记录以及标注等,推荐给用户所需要的信息或者预测用户对项目的兴趣偏好,以实现推荐结果的个性化。
3.传统的基于协同过滤推荐方法的挑战在于衡量用户与用户之间的相似性。比如,利用用户的共同历史信息来衡量用户之间的相似性,如申请号为201710217727.9的专利申请公开了一种基于用户偏好的协同过滤推荐方法,包括下述步骤:依据阈值p将用户分为偏好高评用户和偏好低评用户;利用nhsm相似性度量方法计算任意二位用户之间的相似度,获得用户间的相似矩阵;设目标用户ua,其同偏好用户群体为s,不同偏好群体为d,计算目标用户ua与其他用户ub的相似度;计算用户间新的相似矩阵newsim:预测目标用户在未评分项目上的评分。该发明相比现有技术具有以下优点:构建一种基于用户偏好的协同过滤推荐模型,减少了预测结果的偶然性。其实验结果表明,与其他推荐方法相比,该发明的推荐方法能够更加精确地度量用户间的相似度,提高推荐质量。
4.但是当用户的历史信息很少时,寻找相似用户则十分困难。即,基于协同过滤的推荐方法虽然取得了良好的推荐效果,但是对于有很少的历史评分数据或者没有历史评分数据的用户,需求预测效果并不理想。
5.为了提升推荐的效果,学者们提出了融合社交网络信息的预测方法。
6.如申请号为202010027217.7的专利申请公开了一种基于社交网络信息扩散感知的推荐方法,首先获取社交平台用户数据集,创建初始用户社交关系网络图;在此基础上创建社交关系网络概率图,通过概率函数计算每个用户转发消息的边概率值,通过蒙特卡罗抽样获取用户以高概率转发消息的依赖节点集,计算用户整体兴趣度,构建社交网络扩散模型;创建社交关系网络领域图,确保同一消息不会同时推荐给相关性高的用户;通过经典贪婪算法找到用户独立集合,构建启发式感知推荐算法,优化用户消息推荐列表;计算用户总体参与度,评价推荐质量。该发明的推荐方法能够提高用户与社交平台的参与度、参与用户的分布范围,优化推荐质量,解决网络资源利用有限的难题。该专利申请提出的推荐方法是利用社交信息来提高用户与社交平台的参与度和参与用户的分布范围,并没有提出如何解决用户历史数据缺乏的情况下用户需求的预测问题。
7.如申请号为201811174475.7的专利申请公开了一种融合社交信息的个性化推荐方法,该发明根据用户

项目评分矩阵,计算用户之间的评分相似度,筛选评分最近邻居集;然后根据评分最近邻居集,计算出目标用户对项目的预测评分;根据用户社交网络信息,计
算用户之间的社交相似度,筛选社交最近邻居集;根据社交最近邻居集,计算出目标用户对项目的预测评分;对两者进行融合,预测目标用户对项目的评分值,并降序排列,把预测评分最高的k个项目推荐给目标用户,生成推荐列表。该专利申请利用社交网络上用户的微博内容、社交关系和社交活动来计算用户之间的社交相似度,利用社交网络(如微博)的发布内容计算用户微博内容相似度,这在一定程度上能提升推荐的精准度。但是,上述方法需要收集大量的社交信息,增加了信息需求量;不仅如此,当社交网络数据只反映用户与用户之间的链接关系时,即在只知道用户社交关系的社交网络中,这种方法将不再适用。而且,该专利在计算某用户和其他用户的相似度时,为了找到最近邻居集,需要计算整个社交网络和评分数据中所有用户和该用户的相似度,当数据较为庞大时,这种方法的时间开销和空间开销是巨大的。
8.综上,现有的相关公开文献存在的问题如下:
9.1、现有一些研究仅仅根据用户历史评分数据来衡量用户之间的相似度,但是这类方法无法对历史评分数据缺乏的用户进行需求预测。大量实验证明,利用用户的社交信息能有效提升需求预测的效果。
10.2、一些现有的研究虽然将社区的概念引入到需求预测中,却仅仅分析社区内部成员的共同特征等方式对用户的需求进行预测,这忽略了社区内部成员之间的差异性,没有将社区的信息充分利用;而且这些研究通常使用全局社区发现算法寻找社区,这类算法在寻找社区时需要利用网络的全局信息,算法本身的时间和空间开销很大,计算成本高,不适用于实时的“线上”服务。


技术实现要素:

11.本发明所要解决的技术问题在于提供一种社区角色感知的用户需求主动预测方法及系统,基于社区内部角色相似的用户有着相似的需求的特点,采用社区发现和相对熵寻找与目标用户有相似角色的用户,通过这些角色相似用户的历史数据对目标用户的需求进行预测。
12.本发明通过以下技术手段实现解决上述技术问题:一种社区角色感知的用户需求主动预测方法,包括下述步骤:
13.s1:采用局部社区发现算法从社交网络中挖掘目标用户集u
s
中的每个用户i所在的局部社区c
i
,所有用户所在的社区的并集记为
14.s2:融合对应的社交网络子图和多个用户评分数据,得到一个异质信息网络;
15.s3:通过度量社区c
i
中的用户与目标用户i在局部网络结构上的差异,寻找与用户i有相似角色的用户,并计算这些用户与用户i的角色相似程度;
16.s4:利用与用户i有相似角色的用户的评分信息,对用户i从两个角度进行预测:1)用户i对项的需求程度,2)用户i对项的评分值,因为具有相似角色的用户一般有着相似的需求;
17.s5:利用s4中得到的用户i对各个项的需求程度和评分值,筛选出需求程度和评分值都高的项,并将这些项推荐给用户i,完成对用户需求的主动预测过程。
18.进一步的,所述步骤s1中,对于每个用户,先寻找与用户在同一个社区的核心节
点,然后以核心节点和该用户为起始节点进行局部社区发现。
19.进一步的,所述步骤s1具体包括如下步骤:
20.s101:选取用户集u
s
中的用户i;
21.s102:在社交网络中寻找与i紧密相连的核心节点p作为局部社区发现算法的起始节点,方法如下:
22.①
、计算i及其邻居节点的h

index值,节点i的h

index记为h

indexi;
23.若节点i:有h个邻居节点;每个邻居节点的度都大于等于h,则:h

index
i
=h;
24.②
、选择与i紧密相连的核心节点p,若节点i的邻居节点中不存在h

index值大于h

index
i
的节点,则i作为核心节点p,否则,从节点i的邻居节点中筛选h

index值大于h

index
i
的节点,再从中寻找与节点i共同邻居最多的节点作为核心节点p;
25.s103:初始化社区c
i
为只包含起始节点p和节点i两个节点的社区,若节点i就是核心节点p,则将社区c
i
初始化为只包含节点i的社区;
26.s104:将社区c
i
的邻居节点加入nb中,nb是社区c
i
的邻居节点的集合,社区c
i
的邻居节点是指不属于社区c
i
且和社区c
i
内部节点有连边的节点;
27.s105:对于nb中的每个节点u,通过公式(1)计算c
i
∪{u}的局部模块度m,然后从邻居节点中选择能使社区c
i
的模块度m增加最多的邻居节点vbest,
[0028][0029]
其中,e
c
(c
i
)是社区c
i
内部节点之间边的数量,e
out
(c
i
)是社区c
i
内部节点和社区c
i
邻居节点之间的边的数量,模块度m是衡量社区质量的指标,模块度越大,社区质量越好;
[0030]
s106:若c
i
∪{vbest}的m值大于社区c
i
的m值,则将节点vbest加入社区c
i
,并更新社区c
i
的邻居节点集合nb;
[0031]
s107:重复s105,s106过程,直至不存在节点能使得社区c
i
的局部模块度m增加,得到社区c
i

[0032]
s108:对于每个用户,重复s101

s107,找到u
s
中所有用户的局部社区,将这些社区的并集记为
[0033]
进一步的,其中步骤s2中,异质信息网络中包含代表用户和项两类实体的节点,下文将代表用户和项的节点分别称为用户节点和项节点,具体步骤包括:
[0034]
s201:将评分数据中用户对项的评分映射到区间[0,n]中,n为评分最高分;
[0035]
s202:提取中的用户对应的社交网络的子图s;
[0036]
s203:遍历一个评分数据集,构建异质信息网络,在评分数据中,用户u对项v有评分,若用户节点u在s中,则:1)为用户节点u和项节点v之间添加一条边,该边的权重代表用户u对项v评分的分值;2)若当前s中没有项节点v,则为项v创建一个项节点,并将该节点加入s;
[0037]
s204:对每个评分数据执行s203,得到包含“用户”和“项”两种类型节点、“用户

项”和“用户

用户”两种类型边的异质信息网络g,其中,“用户

用户”是源于社交网络中用户与用户的边,是无权重的;“用户

项”表示用户对项进行了评分,权重是用户对该项的评分分值。
[0038]
进一步的,其中步骤s3中,计算社区c
i
内部节点与节点i的角色相似程度,寻找节
点i的角色相似节点,在社区c
i
中,从节点的局部结构和用户共同历史评价信息的角度寻找与目标用户有着相似角色的用户,具体步骤如下:
[0039]
s301:对于社区中的每个用户节点,通过公式(2)计算用户节点的邻居度分布集p(i),以节点i为例:
[0040][0041]
其中,d(j)表示节点j在社区c
i
中的邻居数目。n(i)是由节点i和节点i的用户邻居节点组成的节点列表;
[0042]
s302:将s301中的度分布集p(i)中的元素按照值大小进行降序排序,并扩展为元素个数为m的邻居度分布列表p

(i),其中,当n(i)中节点数不足m时,后面补0,如下所示:
[0043]
p

(i)=[p
i
(1),p
i
(2),p
i
(3),...,p
i
(|n(i)|),0,...,0]
ꢀꢀꢀ
(3)
[0044]
其中,|n(i)|是n(i)中的节点个数;
[0045]
s303:通过公式(4)计算节点i和节点j的局部结构差异程度:
[0046]
r
ij
=d
kl
(p

(i)||p

(j))+d
kl
(p

(j)||p

(i))
ꢀꢀꢀꢀꢀꢀꢀ
(4)
[0047]
公式(4)中,d
kl
(p

(i)||p

(j))是通过公式(5)计算的p

(i)和p

(j)的相对熵,范围在0~1之间:
[0048][0049]
公式(5)中,m

=min(d(i),d(j))+1;
[0050]
s304:由s303的计算结果得到节点i的相关性集合l
r

[0051]
l
r
={r
ia
,r
ib
,r
ic
,...|a,b,c...∈c
i
}
ꢀꢀꢀꢀ
(6)
[0052]
s305:由公式(7)计算节点i和社区c
i
中的节点j的局部结构相似度f
ij

[0053][0054]
其中,
[0055]
s306:对于社区c
i
中的每个节点j,根据节点i和节点j共同评价过的项的数目对f
ij
进行调整得到角色相似度s
ij

[0056][0057]
其中,n
item(i)
是用户节点i的项邻居节点集合,|x|是x中的元素个数。s
ij
值越大,i和j的角色越相似;
[0058]
s307:按照用户的s
ij
值对社区c
i
中的用户节点进行降序排序,取前一半用户作为用户i的角色相似用户,记为相似用户集u。
[0059]
进一步的,步骤s4中,利用i的相似用户集u中用户节点与项节点的连边信息,对于中的项节点z
x
,从两个角度展开主动预测:1)用户i和该项有连边的可能性;2)用户i和该项连边的权重,从第一个角度分析用户i对该项的需求程度,从第二个角度分析用户i对该项的可能的评分。
[0060]
进一步的,以项z
x
为例进行计算,步骤s4具体包括:
[0061]
s401:通过公式(9)计算用户i对z
x
的需求率dr(i,z
x
):
[0062][0063]
其中,|u|为u中的元素个数,用户j对z
x
有评分时的值为1,否则,的值为0;
[0064]
s402:通过公式(10)计算用户i和项节点z
x
之间可能的连边权重,即预测评分rating(i,z
x
):
[0065][0066]
其中,um是u中与项节点z
x
有连边的用户节点组成的集合,|um|是um中元素的个数,是用户j和项节点z
x
之间的边的权重。
[0067]
进一步的,步骤s5中,对步骤s4中得到的结果进行筛选得到帕累托最优解对应的项,并将这些项推荐给用户i。
[0068]
进一步的,定义:帕累托最优解是多目标优化中的概念,本项目以s4中得到的需求率dr和预测评分rating为目标;对于项节点z
x
和z
y
,i对z
x
和z
y
的需求率的预测评分通过s4被计算出,若dr(i,z
x
)>dr(i,z
y
),rating(i,z
x
)≥rating(i,z
y
)或者dr(i,z
x
)≥dr(i,z
y
),rating(i,z
x
)>rating(i,zy
y
),那么z
x
支配z
y
,z
y
被z
x
支配;
[0069]
步骤s5具体包括:
[0070]
s501:根据项节点之间的支配关系进行筛选,将步骤s4中的所有非支配解抽取出来,得到一组帕累托最优解;
[0071]
s502:计算步骤s4中所有的解的值,值由公式(11)计算得到:
[0072][0073]
s503:假设要给用户i推荐k个项,当帕累托最优解数量大于等于k时,推荐值较大的k个帕累托最优解对应的项;当帕累托最优解数量小于k时,在支配解中按照值由大到小来选择不足的个数填补,并将这些支配解对应的项连同帕累托最优解对应的项一并推荐给用户i从而完成对用户i需求的主动预测,其中,k是给用户i推荐的项的个数,它的取值由个人需求来决定。
[0074]
本发明还提供了一种社区角色感知的用户需求主动预测系统,包括下述模块:
[0075]
社区挖掘模块:用来采用局部社区发现算法从社交网络中挖掘目标用户集u
s
中的每个用户i所在的局部社区c
i
,所有目标用户所在的社区的并集记为
[0076]
异质信息网络构建模块:用来融合对应的社交网络子图和多个用户评分数据,得到一个异质信息网络;
[0077]
角色相似程度计算模块:用来寻找社区c
i
中与目标用户i有相似角色的用户,并计算这些用户与用户i的角色相似程度;
[0078]
用户预测模块:用来利用与用户i有相似角色的用户的评分信息,对用户i从两个角度进行预测:1)用户i对项的需求程度,2)用户i对项的评分值,因为具有相似角色的用户一般有着相似的需求;
[0079]
主动推荐模块:利用用户预测模块中得到的用户i对各个项的需求程度和评分值,筛选出需求程度和评分值都高的项,并将这些项推荐给用户i,完成对用户需求的主动预测过程。
[0080]
本发明的优点在于:结合用户的社交信息和评分数据,为缺乏历史行为数据而无法捕捉到实际需求的用户提供了一种需求的主动预测方法。
[0081]
本发明与只利用用户的历史评分数据的需求预测方法相比:
[0082]
1、它可以预测与用户历史行为信息关联性不大的需求,而只根据用户的历史行为信息进行需求预测的方法的对这类需求的预测过程会很艰难,如当某个用户的历史行为数据中只有“乒乓球”关键词时,通常很难推断他是否对“龙井茶”也感兴趣,而结合社交信息的预测方法可以根据他经常活动的圈子内的其他用户的感兴趣的项目情况从而对该用户的潜在兴趣进行预测。
[0083]
2、它可以对历史评分数据少的用户需求进行预测,即使某用户的历史评分数据为空,结合用户的社交信息和历史评分数据对用户的需求进行主动预测的方法仅仅利用该用户的社交信息也能对该用户的需求有一定的预测能力。
[0084]
本发明与结合社交信息的需求方法相比:
[0085]
1、它从一种新的角度,即从用户角色的角度预测用户的需求,通常在一个社区内,角色越相似的用户需求越相似,于是本发明通过衡量社交网络中的社区内部用户节点及其邻居的局部度分布的差异性结合用户历史评分数据来计算用户之间的角色相似度,这种利用用户的角色相似性对用户需求进行预测使用一种创新性的度量用户相似度的方法能有效提升需求预测的准确度。
[0086]
2、它采用的社区发现算法是局部算法,社区通过局部社区发现算法得到,这种算法的实现由于只需要社交网络中用户的局部信息,所以能大大节省时间和空间开销节约计算成本,从而提升推荐效率使其能适用于“在线”服务的情境。
[0087]
此外,相对于申请号为201811174475.7的专利来说,本发明的方法只需要利用社交网络中用户之间的链接关系即可,更具有普适性。且本发明的方法可以在大规模社交网络上进行局部社区发现,并精准地选择出需要计算相似度的用户集,因此在某些“在线”服务的情境下也同样适用。
附图说明
[0088]
图1是本发明实施例提供的一种社区角色感知的用户需求主动预测方法的流程图。
[0089]
图2是本发明实施例中步骤2中所述的社交网络和评分数据融合示意图。
具体实施方式
[0090]
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0091]
请参阅图1所示,本发明实施例提供的一种社区角色感知的用户需求主动预测方
法用来结合用户的社交信息和历史评分数据,对用户的需求进行主动预测。
[0092]
输入:一个社交网络,多种评分数据,若干社交网络中的目标用户。
[0093]
输出:目标用户的潜在需求。
[0094]
本发明一种社区角色感知的用户需求主动预测方法包括下述步骤:
[0095]
s1:采用局部社区发现算法从社交网络中挖掘目标用户集u
s
中的每个用户i所在的局部社区c
i
,所有用户所在的社区的并集记为采用局部社区发现算法搜索社区,即从某一个节点出发,寻找该节点的局部社区,只需要局部的网络信息,因此社区发现的时间开销和空间开销小,速度快,可适用于在线社区搜索的情境;
[0096]
s2:融合对应的社交网络子图和多个用户评分数据,得到一个异质信息网络;
[0097]
s3:通过度量社区c
i
中的用户与目标用户i在局部结构上的差异,寻找与用户i有相似角色的用户,并计算这些用户与用户i的角色相似程度;
[0098]
s4:利用与用户i有相似角色的用户的评分信息,对用户i从两个角度进行预测:1)用户i对项的需求程度,2)用户i对项的评分值,因为具有相似角色的用户一般有着相似的需求;
[0099]
s5:利用s4中得到的用户i对各个项的需求程度和评分值,筛选出需求程度和评分值都高的项,并将这些项推荐给用户i,完成对用户需求的主动预测过程。
[0100]
其中,所述步骤s1中,一般情况下,相比于以边界节点为起始节点进行局部社区发现得到的社区,以核心节点为起始节点得到的社区更加准确。因此,对于每个用户,先寻找与用户在同一个社区的核心节点,然后以核心节点和该用户为起始节点进行局部社区发现。
[0101]
具体步骤如下:
[0102]
s101:选取用户集u
s
中的用户i;
[0103]
s102:在社交网络中寻找与i紧密相连的核心节点p作为局部社区发现算法的起始节点,方法如下:
[0104]

、计算i及其邻居节点的h

index值,节点i的h

index记为h

index
i

[0105]
若节点i:有h个邻居节点;每个邻居节点的度都大于等于h,则:h

index
i
=h;
[0106]

、选择与i紧密相连的核心节点p,若节点i的邻居节点中不存在h

index值大于h

index
i
的节点,则i作为核心节点p,否则,从节点i的邻居节点中筛选h

index值大于h

index
i
的节点,再从中寻找与节点i共同邻居最多的节点作为核心节点p,该步骤中,将论文影响因子h

index的概念引入到局部社区发现算法中,用来作为节点在社区内重要程度的衡量指标,从而寻找核心节点,来提升得到的局部社区的社区质量。高质量的社区能更准确的反映真实的社区组成;
[0107]
s103:初始化社区c
i
为只包含起始节点p和节点i两个节点的社区,若节点i就是核心节点p,则将社区c
i
初始化为只包含节点i的社区;
[0108]
s104:将社区c
i
的邻居节点加入nb中,nb是社区c
i
的邻居节点的集合,社区c
i
的邻居节点是指不属于社区c
i
且和社区c
i
内部节点有连边的节点;
[0109]
s105:对于nb中的每个节点u,通过公式(1)计算c
i
∪{u}的局部模块度m,即节点u加入社区c
i
后的m值,然后从邻居节点中选择能使社区c
i
的模块度m增加最多的邻居节点
vbest,
[0110][0111]
其中,e
c
(c
i
)是社区c
i
内部节点之间边的数量,e
out
(c
i
)是社区c
i
内部节点和社区c
i
邻居节点之间的边的数量,模块度m是衡量社区质量的指标,模块度越大,社区质量越好;
[0112]
s106:若c
i
∪{vbest}的m值大于社区c
i
的m值,则将节点vbest加入社区c
i
,并更新社区c
i
的邻居节点集合nb;
[0113]
s107:重复s105,s106过程,直至不存在节点能使得社区c
i
的局部模块度m增加,得到社区c
i

[0114]
s108:对于u
s
中的每个用户,重复s101

s107,找到u
s
中所有用户的局部社区,将这些社区的并集记为
[0115]
其中步骤s2中,
[0116]
异质信息网络中包含代表用户和项两类实体的节点,为了区分它们,下文将代表用户和项的节点分别称为用户节点和项节点,具体步骤包括:
[0117]
s201:将评分数据中用户对项的评分映射到区间[0,5]中;
[0118]
s202:求得中的用户对应的社交网络的子图s;
[0119]
s203:遍历一个评分数据集,构建异质信息网络,在评分数据中,用户u对项v有评分,若用户节点u在s中,则:1)为用户节点u和项节点v之间添加一条边,该边的权重代表用户u对项v评分的分值;2)若当前s中没有项节点v,则为项v创建一个项节点,并将该节点加入s;
[0120]
s204:对每个评分数据执行s203,得到包含“用户”和“项”两种类型节点、“用户

项”和“用户

用户”两种类型边的异质信息网络g,其中,“用户

用户”是源于社交网络中用户与用户的边,是无权重的;“用户

项”表示用户对项进行了评分,权重是用户对该项的评分分值。
[0121]
例:如图2是一个社交网络和评分数据融合形成异质信息网络的过程,社交网络中有a,b,c,d,e,f,g,h八个用户,评分数据中有社交网络中的部分用户对电影产品(z0,z1)和商品(z2,z3)的评分信息。构建异质信息网络:先遍历电影评分数据集,a用户对电影z0的评分为1,a用户在社交网络中,但由于此时社交网络中没有项节点“z0”,因此需要在网络中创建项节点“z0”,然后在用户节点a和项节点“z0”之间添加一条无向边,边的权值是a用户对电影z0的评分值1;f用户对电影z0的评分为1,b用户在社交网络中,此时社交网络中已有项节点“z0”,于是在用户节点f和项节点“z0”之间添加一条权值为1的无向边;再访问下一行评分数据,d用户对电影z1的评分为3,d在社交网络中,当前网络中无项节点“z1”,创建项节点“z1”并在用户节点d和项节点“z1”之间添加一条权值为3的无向边;继续访问下一行评分数据
……
当电影评分数据遍历完成时,遍历商品评分数据,此后步骤与上述“添边加点”的步骤相同,当商品评分数据也遍历完成时,则得到一个异质信息网络,至此,完成了社交网络和评分数据融合的过程。需要注意的是:当社交网络中不存在评分数据中的某用户时,我们会放弃该用户的评分数据,访问下一行评分数据,如:当评分数据中有i用户的评分数据时,由于社交网络中没有i用户节点,我们会跳过该节点,而不会在网络中创建用户节点i。
[0122]
其中步骤s3中,计算社区c
i
内部节点与节点i的角色相似程度,寻找节点i的角色
相似节点,在社区c
i
中,从节点的局部结构和用户共同历史评价信息的角度寻找与目标用户有着相似角色的用户,具体步骤如下:
[0123]
s301:对于社区中的每个用户节点,通过公式(2)计算用户节点的邻居度分布集p(i)(以节点i为例):
[0124][0125]
其中,d(j)表示节点j在社区c
i
中的邻居数目。n(i)是由节点i和节点i的用户邻居节点组成的节点列表;
[0126]
s302:将s301中的度分布集p(i)中的元素按照值大小进行降序排序,并扩展为元素个数为m的邻居度分布列表p

(i),其中,当n(i)中节点数不足m时,后面补0,如下所示:
[0127]
p

(i)=[p
i
(1),p
i
(2),p
i
(3),...,p
i
(|n(i)|),0,...,0]
ꢀꢀꢀꢀ
(3)
[0128]
其中,|n(i)|是n(i)中的节点个数;
[0129]
s303:通过公式(4)计算节点i和节点j的局部结构差异程度:
[0130]
r
ij
=d
kl
(p

(i)||p

(j))+d
kl
(p

(j)||p

(i))
ꢀꢀꢀꢀ
(4)
[0131]
公式(4)中,d
kl
(p

(i)||p

(j))是通过公式(5)计算的p

(i)和p

(j)的相对熵,范围在0~1之间:
[0132][0133]
公式(5)中,m

=min(d(i),d(j))+1;
[0134]
s304:由s303的计算结果得到节点i的相关性集合l
r

[0135]
l
r
={r
ia
,r
ib
,r
ic
,...|a,b,c...∈c
i
}
ꢀꢀꢀꢀ
(6)
[0136]
s305:由公式(7)计算节点i和社区c
i
中的节点j的局部结构相似度f
ij

[0137][0138]
其中,
[0139]
s306:对于社区c
i
中的每个节点j,根据节点i和节点j共同评价过的项的数目对f
ij
进行调整得到角色相似度s
ij

[0140][0141]
其中,n
item(i)
是用户节点i的项邻居节点集合,|x|是x中的元素个数。s
ij
值越大,i和j的角色越相似;
[0142]
s307:按照用户的s
ij
值对将社区c
i
中的用户节点进行降序排序,取前一半用户作为用户i的角色相似用户,记为相似用户集u。
[0143]
步骤s3中创新性地根据社区内部用户的角色差异来衡量用户之间的相似关系,从而对用户需求进行预测。通常角色越相似的用户需求越相似,利用用户的角色相似性结合协同过滤的思想则能进一步地提升需求预测的准确率。
[0144]
其中,步骤s4中,利用i的相似用户集u中用户节点与项节点的连边信息,对于
中的项节点z
x
,从两个角度展开主动预测:1)用户i和该项有连边的可能性;2)用户i和该项连边的权重,从第一个角度分析用户i对该项的需求程度,从第二个角度分析用户i对该项的可能的评分。
[0145]
以项z
x
为例进行计算:
[0146]
s401:通过公式(9)计算用户i对z
x
的需求率dr(i,z
x
):
[0147][0148]
其中,|u|为u中的元素个数,用户j对z
x
有评分时的值为1,否则,的值为0;
[0149]
s402:通过公式(10)计算用户i和项节点z
x
之间可能的连边权重,即预测评分rating(i,z
x
)
[0150][0151]
其中,um是u中与项节点z
x
有连边的用户节点组成的集合,|um|是um中元素的个数,是用户j和项节点z
x
之间的边的权重。
[0152]
其中步骤s5中,对步骤s4中得到的结果进行筛选得到帕累托最优解对应的项,并将这些项推荐给用户i。
[0153]
名词解释:
[0154]
帕累托最优解是多目标优化中的概念,本项目以s4中得到的需求率dr和预测评分rating为目标。
[0155]
支配关系与被支配关系:对于项节点z
x
和z
y
,i对z
x
和z
y
的需求率的预测评分通过s4被计算出,若dr(i,z
x
)>dr(i,z
y
),rating(i,z
x
)≥rating(i,z
y
)或者dr(i,z
x
)≥dr(i,z
y
),rating(i,z
x
)>rating(i,z
y
),那么z
x
支配z
y
,z
y
被z
x
支配。
[0156]
帕累托最优解(非支配解):当一个项节点z
m
不能被其它任何项节点支配时,则z
m
是帕累托最优解,帕累托最优解可能存在很多个。
[0157]
具体步骤如下:
[0158]
s501:根据项节点之间的支配关系进行筛选,将步骤s4中的所有非支配解抽取出来,得到一组帕累托最优解;
[0159]
s502:计算步骤s4中所有的解的值,值由公式(11)计算得到:
[0160][0161]
s503:假设要给用户i推荐k个项,当帕累托最优解数量大于等于k时,推荐值较大的k个帕累托最优解对应的项;当帕累托最优解数量小于k时,在支配解中按照值由大到小来选择不足的个数填补,并将这些支配解对应的项连同帕累托最优解对应的项一并推荐给用户i从而完成对用户i需求的主动预测,其中,k是给用户i推荐的项的个数,它的取值由个人需求来决定。
[0162]
步骤s4、s5中将用户对“项”的需求率和评分值两方面进行预测,并使用帕累托优化筛选出需求率和评分值都高的帕累托最优解,再推荐“帕累托最优解”供用户选择,多方
面考虑从而提高需求预测的灵活度,在一定程度上也提升了需求预测的准确率。传统的推荐会通过单一的指标实现top

n推荐,但是当用户的需求并不由某一单一指标决定时,单指标的推荐则会显得十分机械,相比之下,多指标型的推荐预测方法就会更加人性化和个性化。
[0163]
对应上述一种社区角色感知的用户需求主动预测方法,本发明还提供了一种社区角色感知的用户需求主动预测系统,包括下述模块:
[0164]
社区挖掘模块:用来采用局部社区发现算法从社交网络中挖掘目标用户集u
s
中的每个用户i所在的局部社区c
i
,所有用户所在的社区的并集记为
[0165]
异质信息网络建设模块:用来融合对应的社交网络子图和多个用户评分数据,得到一个异质信息网络;
[0166]
角色相似程度计算模块:用来通过度量社区c
i
中的用户与目标用户i在局部结构上的差异,寻找与用户i有相似角色的用户,并计算这些用户与用户i的角色相似程度;
[0167]
用户预测模块:用来利用与用户i有相似角色的用户的评分信息,对用户i从两个角度进行预测:1)用户i对项的需求程度,2)用户i对项的评分值,因为具有相似角色的用户一般有着相似的需求;
[0168]
主动推荐模块:利用用户预测模块中得到的用户i对各个项的需求程度和评分值,筛选出需求程度和评分值都高的项,并将这些项推荐给用户i,完成对用户需求的主动预测过程。
[0169]
其中每个模块执行的具体的操作的流程同上述社区角色感知的用户需求主动预测方法的具体步骤的流程。
[0170]
以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1