基于噪声图流的局部社区检测方法及其系统、终端与介质

文档序号:33647555发布日期:2023-03-29 05:18阅读:53来源:国知局
基于噪声图流的局部社区检测方法及其系统、终端与介质

1.本发明涉及复杂网络社区检测技术领域中的一种局部社区检测方法及其系统、终端与介质,尤其涉及一种基于噪声图流的局部社区检测方法及其系统、终端与介质。


背景技术:

2.现实中生活复杂网络随处可见,如社交网络、万维网、电力网、生物蛋白质网络等,这些复杂网络并非由顶点(即节点)随机连接组成,相同类型的顶点往往连接在一起形成一个个紧凑的社区,社区结构通常反映了网络中存在的特定模式或功能。例如,在生物网络中,生物群落代表具有共同习性的物种模块;在www(万维网)网络中,它表示具有相同或相似主题类别的网页或属性,社交网络中社区表示具有相同兴趣、地区、背景的社会团体。社区发现在探测复杂网络的功能特性,网络内部拓扑结构,和网络行为的预测等方面都有着极为重要的理论价值和实践意义。它能有效地指导研究者对复杂系统的组织模式和运行机制进行更加深入地探讨和研究。
3.然而,一方面当前复杂网络的规模爆炸式的增长,导致传统的将全部图载入内存的社区检测算法面临巨大的内存开销问题,即使是局部社区检测,通常也要花费较长的时间得到结果。
4.另外一方面,现有的图流社区检测方法假定流数据是完整和干净的,这在现实世界中很少发生。社交网络中的社交垃圾邮件或银行和金融网络中的异常交易行为可能会引入噪声链接,导致我们获取的图形流数据包含大量的噪声边。这些噪声边缘显示了错误的链接结构信息,并且在扩展社区时很容易错误地将社区外部的节点添加到社区中,从而导致社区污染。


技术实现要素:

5.为了解决传统社区检测算法面临巨大的内存开销问题以及噪声问题,本发明提供一种基于噪声图流的局部社区检测方法及其系统、终端与介质。
6.为达到上述目的,本发明采用以下技术方案实现:
7.一种基于噪声图流的局部社区检测方法,其用于从文件系统中读取图集中每一张图中的边,这些边的集合定义为图流,通过检测所述图流中的每一条边获得待检测社区,所述检测方法包括以下步骤:
8.s1、定义边的集合s和节点集合k
9.从文件系统中以数据流的方式读取所述图流,所述图流为集合s:s={e1,e2,

,em},m表示边e的序号,每条边e具有两个节点;
10.指定固定数量的多个节点作为种子节点,由此形成检测社区扩展的多个初始节点:k1,k2,

,kn,n表示种子节点k的序号,构成节点集合k:k={k1,k2,

,kn};
11.s2、检测噪声边
12.对于读入的每一条边,计算每条边中两个节点之间的相似度以及每条边到待检测
社区的距离;
13.将所述相似度和所述距离分别同预先设置的相似度阈值范围和距离阈值范围比较,如果所述相似度不在所述相似度阈值范围内,则判定相应的边与待检测社区无关,从集合s中进行剔除,否则判定相应的边影响待检测社区的检测结果,在集合s中进行保留;如果所述距离不在所述距离阈值范围内,则判定相应的边与待检测社区无关,也从集合s中进行剔除,否则也判定相应的边影响待检测社区的检测结果,也在集合s中进行保留;
14.s3、扩展待检测社区的节点集合k
15.对集合s中通过噪声边检测而保留的每一条边,还同步进行判断:如果边的一个节点已经包含在节点集合k中,则将相应边的另外一个节点添加到节点集合k当中并且为刚添加的节点计算一个隶属度;
16.返回步骤s2直至对集合s中所有的边进行噪声边检测及相应的节点扩展,并完成相应刚添加节点的隶属度计算;
17.s4、修剪扩展后的节点集合k
18.对节点集合k中所有节点的隶属度从大到小排序,在节点集合k中只保留隶属度位于隶属度阈值范围内的相应节点,最终的节点集合k即所述待检测社区。
19.作为上述方案的进一步改进,所述相似度的计算方法为采用相似度分数计算公式sim(u,v)计算所述相似度:
[0020][0021]
式中,u和v分别表示一条边中的两个节点;
[0022]
n(u)和n(v)分别表示两个节点u和v的邻居节点;
[0023]
|n(u)∩n(v)|表示两个节点u和v的相同的邻居节点数数目;
[0024]
|n(u)∪n(v)|表示两个节点u和v所有邻居节点的数目。
[0025]
作为上述方案的进一步改进,所述距离的计算方法包括以下步骤:
[0026]
首先,定义dist(u,k)表示节点u到种子节点k的距离:
[0027][0028]
式中,dist(v,k)表示节点v到种子节点k的距离;
[0029]
n(u)表示节点u的邻居节点;
[0030]
如果节点u是种子节点,则认为其之间距离为1;如果节点u与种子节点k之间不存在路径,表示节点u不能到达种子节点k,则认为其之间距离为∞;否则,就认为节点u到种子节点k是节点u的邻居节点到达种子节点k的距离+1;
[0031]
然后,定义检测出的社区c即同步更新的节点集合k是由上一步的节点集合k扩展而来;定义边中的其中一个节点到社区的距离为:dist(u,c)=min{dist(u,k)|k∈k};min{dist(u,k)|k∈k}操作表示对于节点u,分别计算其与上一步的节点集合k中的种子节点k的距离,并将其中最小的距离值返回作为一个节点到社区的距离;
[0032]
最后,定义边到检测出的社区的距离为dist(e,c)=max{dist(u,c),dist(v,c)},
其中dist(u,c)和dist(v,c)分别表示边的节点u和节点v到检测出的社区c的距离,max{dist(u,c),dist(v,c)}操作表示返回节点u和节点v到检测的社区c的距离中的最大值作为边到社区的距离。
[0033]
作为上述方案的进一步改进,所述隶属度的计算方法包括以下步骤:
[0034]
首先计算节点u与检测社区c即同步更新的节点集合k的相似度sim(u,c),表示为节点u与社区c中每一个节点k的相似度之和在除以社区c的大小,公式定义为:
[0035][0036]
式中,∑
v∈c
sim(u,v)表示节点u与社区c中每一个节点v的相似度之和,|c|表示检测社区的大小;
[0037]
然后,定表示节点u的邻居节点与社区c的相似度,公式定义为:
[0038][0039]
式中,k表示上一步的节点集合k,sim(v,c)表示节点u的邻居节点与待检测社区c的相似度,∑
v∈n(u)
sim(v,c)表示节点u所有的邻居节点与检测社区c的相似度之和,|n(u)|表示节点u所有邻居节点的数目;
[0040]
最后,节点u对检测社区c的隶属度定义为:
[0041][0042]
式中,sim(u,c)表示节点u与社区c的相似度,表示节点u的邻居节点与社区的相似度。
[0043]
本发明还提供一种基于噪声图流的局部社区检测系统,其用于从文件系统中读取图集中每一张图中的边,这些边的集合定义为图流,通过检测所述图流中的每一条边获得待检测社区,所述检测系统包括:
[0044]
初始化模块,其用于定义边的集合s和节点集合k:从文件系统中以数据流的方式读取图流,所述图流为集合s:s={e1,e2,

,em},m表示边e的序号,每条边e具有两个节点;指定固定数量的多个节点作为种子节点,由此形成检测社区扩展的多个初始节点:k1,k2,

,kn,n表示种子节点k的序号,构成节点集合k:k={k1,k2,

,kn};
[0045]
噪声边检测模块,其用于检测噪声边:对于读入的每一条边,计算每条边中两个节点之间的相似度以及每条边到待检测社区的距离;将所述相似度和所述距离分别同预先设置的相似度阈值范围和距离阈值范围比较,如果所述相似度不在所述相似度阈值范围内,则判定相应的边与待检测社区无关,从集合s中进行剔除,否则判定相应的边影响待检测社区的检测结果,在集合s中进行保留;如果所述距离不在所述距离阈值范围内,则判定相应的边与待检测社区无关,也从集合s中进行剔除,否则也判定相应的边影响待检测社区的检测结果,也在集合s中进行保留;
[0046]
节点扩展模块,其用于扩展待检测社区的节点集合k:对集合s中通过噪声边检测而保留的每一条边,还同步进行判断:如果边的一个节点已经包含在节点集合k中,则将相应边的另外一个节点添加到节点集合k当中并且为刚添加的节点计算一个隶属度;调用所
述噪声边检测模块直至对集合s中所有的边进行噪声边检测及相应的节点扩展,并完成相应刚添加节点的隶属度计算;
[0047]
修剪模块,其用于修剪扩展后的节点集合k:对节点集合k中所有节点的隶属度从大到小排序,在节点集合k中只保留隶属度位于隶属度阈值范围内的相应节点,最终的节点集合k即所述待检测社区。
[0048]
作为上述方案的进一步改进,所述噪声边检测模块包括相似度计算子模块;所述相似度计算子模块采用相似度分数计算公式sim(u,v)计算所述相似度:
[0049][0050]
式中,u和v分别表示一条边中的两个节点;
[0051]
n(u)和n(v)分别表示两个节点u和v的邻居节点;
[0052]
|n(u)∩n(v)|表示两个节点u和v的相同的邻居节点数数目;
[0053]
|n(u)∪n(v)|表示两个节点u和v所有邻居节点的数目。
[0054]
作为上述方案的进一步改进,所述噪声边检测模块包括距离计算子模块,所述距离计算子模块在计算距离时:
[0055]
首先,定义dist(u,k)表示节点u到种子节点k的距离:
[0056][0057]
式中,dist(v,k)表示节点v到种子节点k的距离;
[0058]
n(u)表示节点u的邻居节点;
[0059]
如果节点u是种子节点,则认为其之间距离为1;如果节点u与种子节点k之间不存在路径,表示节点u不能到达种子节点k,则认为其之间距离为∞;否则,就认为节点u到种子节点k是节点u的邻居节点到达种子节点k的距离+1;
[0060]
然后,定义检测出的社区c即同步更新的节点集合k是由上一步的节点集合k扩展而来;定义边中的其中一个节点到社区的距离为:dist(u,c)=min{dist(u,k)|k∈k};min{dist(u,k)|k∈k}操作表示对于节点u,分别计算其与上一步的节点集合k中的种子节点k的距离,并将其中最小的距离值返回作为一个节点到社区的距离;
[0061]
最后,定义边到检测出的社区的距离为dist(e,c)=max{dist(u,c),dist(v,c)},其中dist(u,c)和dist(v,c)分别表示边的节点u和节点v到检测出的社区c的距离,max{dist(u,c),dist(v,c)}操作表示返回节点u和节点v到检测的社区c的距离中的最大值作为边到社区的距离。
[0062]
作为上述方案的进一步改进,所述节点扩展模块还包括隶属度计算子模块,所述隶属度计算子模块在计算隶属度时:
[0063]
首先计算节点u与检测社区c即同步更新的节点集合k的相似度sim(u,c),表示为节点u与社区c中每一个节点k的相似度之和在除以社区c的大小,公式定义为:
[0064]
[0065]
式中,∑
v∈c
sim(u,v)表示节点u与社区c中每一个节点v的相似度之和,|c|表示检测社区的大小;
[0066]
然后,定表示节点u的邻居节点与社区c的相似度,公式定义为:
[0067][0068]
式中,k表示上一步的节点集合k,sim(v,c)表示节点u的邻居节点与待检测社区c的相似度,∑
v∈n(u)
sim(v,c)表示节点u所有的邻居节点与检测社区c的相似度之和,|n(u)|表示节点u所有邻居节点的数目;
[0069]
最后,节点u对检测社区c的隶属度定义为:
[0070][0071]
式中,sim(u,c)表示节点u与社区c的相似度,表示节点u的邻居节点与社区的相似度。
[0072]
本发明还提供一种计算机终端,其包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任意基于噪声图流的局部社区检测方法的步骤。
[0073]
本发明还提供一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时,实现如上述任意基于噪声图流的局部社区检测方法的步骤。
[0074]
与现有技术相比,本发明考虑到传统的局部社区检测方法在面对大规模数据集时面临的巨大内存开销,以及检测的准确度容易受到图中噪声边的影响,发明了一种在含噪声边的图流下进行局部社区检测的方法,该方法通过噪声边的检测以及定义了一个健壮性的隶属度指标来减少噪声边对检测准确度的影响,并且通过流式读取的方式极大的减少了内存的开销,使得该方法能够应用于大规模数据图的应用场景。
附图说明
[0075]
图1为本发明实施例1提供的基于噪声图流的局部社区检测方法的流程图。
[0076]
图2为与图1中基于噪声图流的局部社区检测方法相对应的基于噪声图流的局部社区检测系统的模块结构示意图。
具体实施方式
[0077]
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步地详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
[0078]
实施例1
[0079]
请参阅图1,其为本发明实施例1提供的一种基于噪声图流的局部社区检测方法的流程图。本发明的基于噪声图流的局部社区检测方法用于从文件系统中读取图集中每一张图中的边,这些边的集合定义为图流,通过检测所述图流中的每一条边获得待检测社区。在应用时,所述局部社区检测方法可以设置成软件系统,如设置成与所述基于噪声图流的局
部社区检测方法步骤一一对应的基于噪声图流的局部社区检测系统。请结合图2,其为与图1中基于噪声图流的局部社区检测方法相对应的基于噪声图流的局部社区检测系统的模块结构示意图。局部社区检测系统包括:初始化模块1、噪声边检测模块2、节点扩展模块3、修剪模块4。
[0080]
本发明的局部社区检测方法主要包括四大步骤:s1、定义边的集合s和节点集合k;s2、检测噪声边;s3、扩展待检测社区的节点集合k;s4、修剪扩展后的节点集合k。接下去对每一步进行展开详细描述。
[0081]
s1、定义边的集合s和节点集合k
[0082]
此步骤可由局部社区检测系统的初始化模块1执行。集合s和节点集合k的定义方法包括以下步骤:
[0083]
s11、从文件系统中以数据流的方式读取所述图流,所述图流为集合s:s={e1,e2,

,em},m表示边e的序号,每条边e具有两个节点;
[0084]
s12、指定固定数量的多个节点作为种子节点,由此形成检测社区扩展的多个初始节点:k1,k2,

,kn,n表示种子节点k的序号,构成节点集合k:k={k1,k2,

,kn}。
[0085]
节点也可以称之为顶点,本发明的目的就是得到一个全新的节点集合k,因此这个节点集合k是一个变量,而非固定不变的常量,而最终的节点集合k就是本发明的目的:待检测社区。为了得到我们需要的待检测社区,步骤s1的主要目的就是把起点设置好,此时的节点集合k包含的节点是通过人工分析之后,被认定为真正属于待检测社区中的节点,故,定义成种子节点。在后期数据处理过程中不断加入到节点集合k中的节点,虽然也被赋予成种子节点,但是是存在区别的,因为有可能不是待检测社区真正需要的节点。而初始化设置的初始节点一定是待检测社区真正需要的节点。
[0086]
在本实施例中,指定固定数量的种子节点作为社区扩展的初始节点,不妨设初始的种子节点为三个,其构成的集合为k={k1,k2,k3}。其中k表示初始的种子节点集合,k1,k2,k3表示初始的三个种子节点。以数据流的方式从文件系统中读取含有噪声边的图可以抽象为s={e1,e2,e3,e4,

}。其中s表示读取的图中边的集合,ei表示读取的第i条边。
[0087]
本发明将图转换成由图中的边组成的图流,每次只读取并处理图流中的一条边,通过持续不断的处理图流中的边结构信息来扩展社区,获取最终的检测结果即待检测社区。这种图流式的处理大规模图的方式可以帮助我们极大的节省内存开销,使得局部社区检测算法能够处理大规模的网络。因此,本发明通过读取图流的方式解决了传统的局部社区检测算法在面对大规模图时面临的巨大的内存开销问题。
[0088]
s2、检测噪声边
[0089]
此步骤可由局部社区检测系统的噪声边检测模块2执行。噪声边的检测方法包括以下步骤:
[0090]
s21、对于读入的每一条边,计算每条边中两个节点之间的相似度以及每条边到待检测社区的距离;
[0091]
s22、将所述相似度和所述距离分别同预先设置的相似度阈值范围和距离阈值范围比较,如果所述相似度不在所述相似度阈值范围内,则判定相应的边与待检测社区无关,从集合s中进行剔除,否则判定相应的边影响待检测社区的检测结果,在集合s中进行保留;如果所述距离不在所述距离阈值范围内,则判定相应的边与待检测社区无关,也从集合s中
进行剔除,否则也判定相应的边影响待检测社区的检测结果,也在集合s中进行保留。
[0092]
在步骤s21中的所述相似度的计算方法为:采用相似度分数计算公式sim(u,v)计算所述相似度。
[0093][0094]
式中,u和v分别表示一条边中的两个节点;
[0095]
n(u)和n(v)分别表示两个节点u和v的邻居节点;
[0096]
|n(u)∩n(v)|表示两个节点u和v的相同的邻居节点数数目;
[0097]
|n(u)∪n(v)|表示两个节点u和v所有邻居节点的数目。
[0098]
在本实施例中,对于一条边我们可以进一步表示为e=(u,v),其中u和v分别表示一条边中的两个顶点。我们记顶点u和顶点v之间的相似度分数为其中n(u)和n(v)分别表示顶点u和顶点v的邻居节点,|n(u)∩n(v)|表示顶点u和顶点v的相同的邻居节点数数目,|n(u)∪n(v)|表示顶点u和顶点v所有邻居节点的数目。顶点u和顶点v之间的相似度分数越大,表示这两个顶点之间存在边的可能性越高即该边时噪声边的可能性越小,反之则越有可能是噪声边。
[0099]
在步骤s21中的所述距离的计算方法包括以下步骤:
[0100]
首先,定义dist(u,k)表示节点u到种子节点k的距离:
[0101][0102]
式中,dist(v,k)表示节点v到种子节点k的距离;
[0103]
n(u)表示节点u的邻居节点;
[0104]
如果节点u是种子节点,则认为其之间距离为1;如果节点u与种子节点k之间不存在路径,表示节点u不能到达种子节点k,则认为其之间距离为∞;否则,就认为节点u到种子节点k是节点u的邻居节点到达种子节点k的距离+1;
[0105]
然后,定义检测出的社区c即同步更新的节点集合k是由上一步的节点集合k扩展而来;定义边中的其中一个节点到社区的距离为:dist(u,c)=min{dist(u,k)|k∈k};min{dist(u,k)|k∈k}操作表示对于节点u,分别计算其与上一步的节点集合k中的种子节点k的距离,并将其中最小的距离值返回作为一个节点到社区的距离;
[0106]
最后,定义边到检测出的社区的距离为dist(e,c)=max{dist(u,c),dist(v,c)},其中dist(u,c)和dist(v,c)分别表示边的节点u和节点v到检测出的社区c的距离,max{dist(u,c),dist(v,c)}操作表示返回节点u和节点v到检测的社区c的距离中的最大值作为边到社区的距离。
[0107]
预设置的相似度阈值范围和距离阈值范围可以不是一个范围,而是一个单纯的值,比如在本实施例中,就是采纳相似度阈值和距离阈值。预设置的相似度阈值和距离阈值具体如下:我们预先设定合适的顶点相似度阈值γ
sim
和距离阈值λ
dist
,顶点相似度阈值γ
sim
用来判断该条边是否是噪声边,如果该条边的两个顶点相似度sim(u,v)大于相似度阈
值γ
sim
,则表示该条边不是噪声边,反之则认为它是噪声边,然后丢弃不做下一步处理。于此同时,我们还应考虑该条边同检测的社区c的距离,如果距离越远,则该条边是社区中的边的可能性越低,剔除这样远距离的边有利于提高社区检测方法的精确度和检测方法的执行效率。如果一条边e和当前检测的社区c的距离dist(e,c)大于距离阈值λ
dist
,则表示这条边和检测的社区c距离远,应当剔除不做处理,反之则认为可能社区中一条边用作社区扩展。
[0108]
通过比较的结果来剔除影响社区检测结果的噪声边和与该检测的社区无关的边具体如下:首先,对于输入的边e=(u,v),我们分别计算出顶点之间的相似度sim(u,v)代表这两个顶点之间形成边的概率,dist(e,c)代表这条边同检测社区c的距离,接着,将不满足筛选条件的边剔除,满足条件的边做进一步的处理。筛选的条件具体如下:如果sim(u,v)≥γ
sim
且dist(e,c)≤λ
dist
则表示该条边是一条与带检测社区相关的非噪声边,我们将这条边用作社区扩展,否则,则丢弃该条边。
[0109]
本发明的技术方案通过读取图流的方式解决了传统的局部社区检测算法在面对大规模图时面临的巨大的内存开销问题,而在此基础上,考虑到现实生活中获取的图数据,无论是网络爬虫爬取还是人工收集,里面通常都包含了大量的噪声边,本发明属于在含噪声边的图流下社区检测的方法和系统,使得该方法和系统能够更好的被应用到实际生活当中,解决了传统社区检测算法面临巨大的噪声问题。故,本发明能够解决传统社区检测算法面临巨大的内存开销问题以及噪声问题。
[0110]
s3、扩展待检测社区的节点集合k
[0111]
此步骤可由局部社区检测系统的节点扩展模块3执行。扩展待检测社区的节点的扩展方法包括以下步骤:
[0112]
s31、对集合s中通过噪声边检测而保留的每一条边,还同步进行判断:如果边的一个节点已经包含在节点集合k中,则将相应边的另外一个节点添加到节点集合k当中并且为刚添加的节点计算一个隶属度;
[0113]
s32、返回步骤s2直至对集合s中所有的边进行噪声边检测及相应的节点扩展,并完成相应刚添加节点的隶属度计算。
[0114]
此步骤有个特殊性,就是在噪声边检测中,在逐次检测每一条边的同时,对应的逐次完成。并非是噪声边检测结束后,一次性完成待检测社区的节点的扩展,所以隶属度计算也不是噪声边检测结束后,一次性完成隶属度计算。而是在一条边做噪声边检测时,只要判断这条边应该保留在集合s中,就可以同步进行扩展待检测社区的节点。节点扩展完,并且隶属度计算完,才进行下一条边的噪声边检测,如此循环,直至对集合s中所有的边进行噪声边检测及相应的节点扩展,并完成相应刚添加节点的隶属度计算,整个程序循环才跳出来进行下一步骤s4。
[0115]
所以步骤s2和步骤s3是同步并行的,这一点很关键,决定着传统社区检测算法面临巨大的内存开销问题以及噪声问题是否能够很好的解决。因为本发明的目的就是要追求速度,不占内存,同时噪声还低。整个过程,集合s中边即图流中的所有边只检测一次,就结束,所以处理速度快,同时这样的做法可以不设置缓存,因此占内存小。有可能有的人会存在精度上的质疑,认为会踢掉“有用”的边,但是本发明就是针对具有相同或相似主题类别的网页或属性,具有相同兴趣、地区、背景的社会团体进行研究的,节点之间关系紧密,依据
本发明的方法被剔除的边中的节点,必然不属于关系紧密的节点,因此,在这样的研究对象前提下,本发明的处理精度反而得到很大的提高。
[0116]
在本实施例中,如果边的一个顶点已经包含在社区中,则将另外一个节点加入到社区当中具体如下:对于一条边e=(u,v),如果其中一个节点u已经存在在检测的社区c中,我们则认为与u相连的节点v也应该被添加到社区c当中。
[0117]
在步骤s31中所述隶属度的计算方法包括以下步骤:
[0118]
首先计算节点u与检测社区c即同步更新的节点集合k的相似度sim(u,c),表示为节点u与社区c中每一个节点k的相似度之和在除以社区c的大小,公式定义为:
[0119][0120]
式中,∑
v∈c
sim(u,v)表示节点u与社区c中每一个节点v的相似度之和,|c|表示检测社区的大小;
[0121]
然后,定表示节点u的邻居节点与社区c的相似度,公式定义为:
[0122][0123]
式中,k表示上一步的节点集合k,sim(v,c)表示节点u的邻居节点与待检测社区c的相似度,∑
v∈n(u)
sim(v,c)表示节点u所有的邻居节点与检测社区c的相似度之和,|n(u)|表示节点u所有邻居节点的数目;
[0124]
最后,节点u对检测社区c的隶属度定义为:
[0125][0126]
式中,sim(u,c)表示节点u与社区c的相似度,表示节点u的邻居节点与社区的相似度。
[0127]
在本实施例中,为了区分添加的节点同社区之间的隶属关系强弱,我们为添加到社区中每个节点计算一个隶属度指标具体为:对于检测出的社区c来说,边e=(u,v)中节点v已经在检测社区c,则我们应该将节点u加入到检测社区当中,随后为其计算对检测社区c的隶属度。计算隶属度过程如下,首先计算节点u与检测社区c的相似度sim(u,c),表示为节点u与社区c中每一个节点k的相似度之和在除以社区c的大小。公式定义为:其中,∑
v∈c
sim(u,v)表示节点u与社区c中每一个节点k的相似度之和,|c|表示检测社区的大小。然后,一个节点对社区的隶属度还与其邻居节点与社区的相似性有关,即如果一个节点的邻居节点与社区c的相似度越高,那么该节点越有可能是社区c中的节点。我们定表示节点u的邻居节点与社区c的相似度,具体的公式定义为:其中k表示种子节点集合,sim(v,c)表示节点u的邻居节点与待检测社区c的相似度,∑
v∈n(u)
sim(v,c)表示节点u所有的邻居节点与检测社区c的相似度之和,|n(u)|表示节点u所有邻居节点的数目。具体的解释为,如果节点u是种子节点,则一定属于该社区其相似度为1,如果不是种子节点,节点u邻居节点与待检测社区c的相似度为节点u所有的邻居节点与检测
社区c的相似度之和除以节点u所有邻居节点的数目。最后,节点u对检测社区c的隶属度我们定义为其中sim(u,c)表示节点u与社区c的相似度,表示节点u的邻居节点与社区的相似度。我们取它们的乘积作为节点u对待检测社区c的隶属度的衡量。节点的隶属度指标越大表示该节点越有可能属于这个社区,反之则表示越不属于这个社区。
[0128]
s4、修剪扩展后的节点集合k
[0129]
此步骤可由局部社区检测系统的修剪模块4执行,修剪方法包括以下步骤:
[0130]
对节点集合k中所有节点的隶属度从大到小排序,在节点集合k中只保留隶属度位于隶属度阈值范围内的相应节点,最终的节点集合k即所述待检测社区。
[0131]
在本实施例中,社区的修剪具体如下:假设所有的含噪声的边都读取完后,检测的社区由种子节点集合k扩展到节点集合c,对于c中的每一个节点都有一个隶属度指标,我们将所有的节点按照隶属度大小从大到小进行排序,将隶属度较小的接近于0的节点从检测出的节点集合c中删除,在本方法中,我们将所有的隶属度大于0的节点保留下来作为结果输出。
[0132]
本发明的优点在于:本发明的技术方案考虑到传统的局部社区检测方法在面对大规模数据集时面临的巨大内存开销,以及检测的准确度容易受到图中噪声边的影响,发明了一种在含噪声边的图流下进行局部社区检测的方法,该方法通过噪声边的检测以及定义了一个健壮性的隶属度指标来减少噪声边对检测准确度的影响,并且通过流式读取的方式极大的减少了内存的开销,使得该方法能够应用于大规模数据图的应用场景。
[0133]
实施例2
[0134]
在实施例1的基础上,本实施例进一步提供一种计算机终端,该计算机终端属于一种实现实施例1中方案的实体计算设备。所述计算机终端包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时,实现如实施例1中基于噪声图流的局部社区检测方法的步骤,进而输出待检测社区。
[0135]
该计算机设备可以是可以执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器、处理器。
[0136]
本实施例中,存储器(即计算机可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,sd或dx存储器等)、随机访问存储器(ram)、静态随机访问存储器(sram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、可编程只读存储器(prom)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,smc),安全数字(secure digital,sd)卡,闪存卡(flash card)等。当然,存储器还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器通常用于存储安装于计算机设备的操作系统和各类应用软件等。此外,存储器还可以用于暂时地存储已经输出或者将要输出的各类数据。不论如何,所述计算机可读存储介质存储有计算机程序,所述程序被处理器执行时,实现如实施例1中基于噪声图流的局部社区检测方法的步骤,进而输出待检测
社区。
[0137]
处理器在一些实施例中可以是中央处理器(central processing unit,cpu)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器通常用于控制计算机设备的总体操作。
[0138]
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1