2. 北京华电优控科技有限公司, 北京 100193
2. Beijing Huadian Ucontrol Technology Co. Ltd., Beijing 100193, China
众多复杂系统都可抽象成为网络模型, 如计算机网络、信息网络、社会网络和生物网络等得到了广泛应用 [1], 社区检测问题对于研究复杂网络以及人类生活具有重要意义. 社区检测期望将链接最紧密的节点划分至同一社区, 有助于更好地了解整个社交网络, 进而有效利用资源[2]. 现实中, Facebook等以朋友关系为基础的社交网络上, 通过社区检测可进行朋友推荐[3,4]. 另外也可以用社区检测对具有链接关系并且同兴趣的用户进行兴趣推送[5]. 除此之外, 还可用于交通网络中分析交通对城市功能社区(商业区、居民区、学校等)分布之间的关系[6].
近年来, 社区检测问题常归于以下类型: 基于图分割的社区检测, 需要提前定义分割社区个数及体积, 通过最小化社区间的链接边的数量实现社区划分, 如Kemighan-Lin算法和谱划分算法; 基于聚类的社区检测则是通过节点间的关系利用聚类的思想将其进行社区检测, 以GN算法[7]、Newman贪心算法和k-means算法为代表; 基于模块度最大化的社区检测如Louvain算法, 利用模块度获取最优的网络社区划分; 基于非负矩阵的社区检测, 利用非负矩阵的思想将节点的链接矩阵进行分解得到节点社区归属矩阵, 如LANMF算法[8]; 基于标签的社区检测算法, 以LPA算法、CORP算法和LPPB算法等为代表, 对每个节点随机生成标签, 逐轮刷新所有节点的标签, 直到所有节点的标签不再发生变化为止.
节点拓扑势的概念源于认知物理学中的数据场理论[9], 2009年, 淦文燕提出了一种基于拓扑势的社区检测方法, 利用节点的链接信息构造拓扑势场, 在拓扑势场内进行社区划分[10]. 拓扑势原理近年来得到了长足的发展. 2018年, Wang在山谷结构的拓扑势场下基于节点位置进行分析, 设计DOCET算法[11]. 但拓扑势社区算法在实践中存在一种现象, 当获得的模块度值较高时, 社区的划分数量过大, 当社区网络过于复杂时, 真实数据集出现了很多孤立性节点或孤立性小社区. 基于拓扑势原理进行社区划分, 存在大量3-4节点孤立为一个社区的现象出现. 这种孤立社区的出现为现实的推送, 社区的扩大等带来影响. 近期研究显示, 社区划分不再单纯的考虑链接结构, 而是通过增加节点的属性信息进行社区划分. 节点的属性信息越来越受到关注[12].
本文面向含标签属性的社区检测问题, 针对上述基于拓扑势进行的社区划分存在的孤立性社区问题, 提出了一种结合属性标签的拓扑势社区检测算法(TPCDLP). 首先, 将结合标签传播思想将属性信息构造出节点间的链接权值. 其次, 把链接权值加入到拓扑势当中构造拓扑势场. 然后, 利用核心节点进行子群社区的划分. 最后, 利用子群社区间核心节点的距离进行社区划分.
1 相关工作李德毅等2008年提出了社区检测中的拓扑势理论, 构造了一种在网络拓扑空间中构造的虚拟势场[8]. 拓扑势借鉴了数学中的拓扑学和物理中的场论思想, 将网络G看作一个包含n个节点的及其相互作用的抽象系统. 每一个结节周围存在一个作用场, 位于场中的任何节点都会收到其周围节点的影响. 但是节点的影响力随着网络距离的增加而快速衰减.
定义1. 拓扑势场. 一个网络
定义2. 拓扑势. 给定网络
$\phi ({v_i}) = \sum\limits_{j = 1}^n {\left[m({v_j}) \times {e^{ - {{\left(\frac{{{d_{ij}}}}{\sigma }\right)}^2}}}\right]} $ | (1) |
其中,
根据高斯函数的数学性质可知, 如果
本文首先利用了信息传播的特性将节点的属性结构
拓扑势算法利用的是链接关系构造拓扑势场, 未考虑结节间的属性关系. 社区的定义是将具有链接紧密程度的节点化为一个社区, 但是结节间的属性关系同样会影响到社区划分的质量和现实场景的应用.
本文利用节点间的属性关系和链接关系构造节点间拓扑势的环境影响因子
$\varphi ({v_i}) = \sum\limits_{j = 1}^n {\left[m({v_j}) \times {r_{ij}} \times {e^{ - {{\left(\frac{{{d_{ij}}}}{\sigma }\right)}^2}}}\right]} $ | (2) |
借鉴标签传播的思想, 计算标签从节点
定义3. 节点影响力. 设网络
LeaderRank算法提到社交网络不是一个强连通图, 所以引入一个节点
$L{R_i}(t + 1) = \sum\limits_{j = 1}^{N + 1} {\frac{{{a_{ij}}}}{{K_j^{\rm {out}}}}L{R_i}(t)} $ | (3) |
$L{R_i} = L{R_i}({t_c}) + \frac{{L{R_g}({t_c})}}{N}$ | (4) |
其中,
图1是一个小社交网络拓扑结构图, 一共有18个节点, 每个节点代表一个人, 每个人都有一个兴趣爱好, 将兴趣爱好分为两类, 并用两种不同的图标表示人们的兴趣爱好. 节点间的连线代表人们之间的关系. 通过上述的公式, 计算得到这个简单的社交网络数据集每个节点的节点影响力, 如表1所示.
定义4. 传播特性
${k_{i \leftarrow j}} = \frac{{\log(1 + L{R_j})}}{{\log((1 + L{R_i}) \times (1 + L{R_j}))}}$ | (5) |
该传播特性是由节点
以节点1、2、3为例, 已知
${k_{1 \to 2}} = \frac{{\log(1 + 0.762913)}}{{\log((1 + 0.762913) \times (1 + 0.91551))}} \approx 0.465\;892$ |
${k_{2 \to 1}} = \frac{{\log(1 + 0.91551)}}{{\log((1 + 0.762913) \times (1 + 1.0680))}} \approx 0.534\;108$ |
${k_{1 \to 3}} = \frac{{\log(1 + 0.762913)}}{{\log((1 + 0.762913) \times (1 + 1.0680))}} \approx 0.438\;303$ |
${k_{3 \to 1}} = \frac{{\log(1 + 1.0680)}}{{\log((1 + 0.762913) \times (1 + 1.0680))}} \approx 0.561\;696$ |
节点1的影响力
社会网络不仅具有拓扑结构特征, 而且网络中节点的内在属性也容易获取, 如C-DBLP 中的学者记录都拥有研究方向、工作单位等信息, 因此节点的属性特征
${S_{i,j}} = S{t_{i,j}} + I{n_{i,j}}$ | (6) |
结构属性:
$S{t_{i,j}} = \frac{{|N(i) \cap N(j)|}}{{\sqrt {|N(i)| \times |N(j)|} }}$ | (7) |
节点内在属性:
$I{n_{i,j}} = \frac{1}{{\textit{z}}}\sum\limits_{k = 1}^{\textit{z}} {\zeta (i{n_{ik}},i{n_{jk}})} $ | (8) |
$\zeta (i{n_{ik}},i{n_{jk}}) = \left\{ {\begin{array}{*{20}{c}} 1&{i{n_{ik}} = i{n_{jk}}} \\ 0&{i{n_{ik}} \ne i{n_{jk}}} \end{array}} \right.$ | (9) |
图1所示的社交网络数据集中, 节点1和节点2都有一个相同的邻居节点3和节点4, 所以结构属性
定义5. 标签传播概率(节点间的关联强度, 也就是边的权值). 节点
$P(i \leftarrow j) = {S_{i,j}} \times {k_{i \leftarrow j}} \times \delta (i,j)$ | (10) |
节点
${R_{ij}} = P(j \leftarrow i)$ | (11) |
由上述公式可以计算
表3是通过改进后的拓扑势公式计算出图1的社交网络数据集的每个节点的拓扑势值. 并且将节点中拓普势局部最高的节点用五角星标记在图3中.
2.5 子群社区划分
通过节点拓扑势的计算, 将网络的链接结构转变成山脉形状的拓扑势场. 社区的划分就如同山的划分, 山峰、山谷和斜坡, 对应社区的核心节点、重叠节点以及内部节点.
定义6. 核心节点. 假设在一个社交网络
通过上述的定义, 可以看出核心节点是局部最高点, 也就是山峰节点. 如果根据当前的核心节点进行社区划分, 将会影响社区划分的质量和数量. 由此, 当前通过核心节点划分的社区被称为子群社区, 后续需要进一步处理. 图3中五角星标识的节点为拓扑势局部最高点, 也就是当前子群社区的核心节点.
定义7. 重叠节点. 假设在一个社交网络
当山谷节点就直接归属于它邻居节点所在的社区. 由此, 山谷节点
定义8. 内部节点. 假设在一个社交网络
定义9. 边缘节点. 假设在一个社交网络
边缘节点可以是社区的内部节点也可以是社区的重叠节点. 每个节点
在子群社区划分中, 拓扑势值为局部最大值的节点视为山峰节点, 一个山峰节点对应一个社区. 但子群社区划分中存在特殊两种情况. 1)当社交网络数据集节点链接稀疏、节点度数相似时, 很容易导致划分社区数量过多, 社区包含节点过少等问题, 从而影响到社区的划分质量和现实应用. 2)划分出的社区为孤立子群社区. 这种孤立的子群社区不能通过核心节点间的距离关系进行合并. 下面对两种情况给出相应解决方案.
2.6.1 子群社区划分由于社交网络数据集的节点数多, 如果利用深度遍历的方法计算核心节点间的距离, 计算的复杂度很高, 时间耗费长, 所以为了快速得到上峰节点间的距离, 在子群社区划分的同时, 计算子群社区中每个节点到达其社区的上峰节点的距离, 最后分析了3种情况计算子群社区间的距离.
由于社交网络数据集的节点数多, 在子群社区划分的同时, 计算子群社区中每个节点到达其社区的山峰节点的距离, 并分析了计算子群社区间的距离的3种情况.
(1) 两个子群社区不重叠但边缘节点相连接
两个子群社区没有重叠节点, 但是社区间的边缘节点互联. 该情况下, 由于每个边缘节点都存储了到达它自身归属的子群社区的最短距离NCD, 可以利用边缘节点进行信息交互, 得到两个子群社区的核心节点之间的距离. 但是, 边缘节点自身归属的子群社区的核心节点的距离不一定相同, 需要选取其中最短的距离为两个子群社区不重叠但边缘节点相连接的距离
(2) 子群社区不重叠并且边缘节点相也不连接
子群社区的划分是根据节点的拓扑势值由高到低进行的, 但是一旦碰到当前划分的节点其拓普势值为局部最低点的时候, 也就是划分到山谷节点时, 就结束当前子群社区的划分. 为了计算不重叠且边缘节点不相连的两个子群社区的核心节点间的距离, 采用边缘节点探测方法进行计算. 即利用当前子群社区的边缘节点, 根据设置的步长向子群社区外部进行跳转. 每当跳到下一个节点, 首先判断当前节点是否归属于其他子群社区, 是, 根据跳转的步长以及初始节点和当前节点的信息计算两个社区的距离; 否, 跳转到下一个节点. 在做边缘探测的时候, 探测步长值设置为当前边缘节点到达子群社区核心节点的欧式距离的1/2.
(3) 子群社区重叠
当子群社区之间有重叠节点, 需根据子群社区间的重叠节点到达核心节点的距离加和, 取其最短的路径长度.
对于子群社区间的距离的计算, 首先分别对上述3种情况进行处理和计算得到社区的最短距离, 然后将3种情况的结果进行比较取其最小值, 最终得到相近两两社区的最短距离.
2.6.2 子群社区合并通过上述的3种情况分析和计算, 得到了相近的两个社区之间核心节点的最短路径. 根据核心节点的距离, 可以将相近的社区进行合并, 但是实际上很多数据集其节点的链接关系很稀疏, 也就是存在很多孤立的节点以及非常小的“孤立”社区, 如图4所示.
图4是citeseer数据集的数据节点分布, 图中显示, 左上方的节点有着紧密联系, 但下方的节点非常稀疏. 节点的稀疏易导致划分的社区数被这些稀疏分布的节点所决定, 使得社区划分范围过小失去意义. 因此在子群社区划分后, 需要将子群社区针对稀疏分布情况进行合并. 所以子群社区合并分为两种.
(1) 相邻子群社区合并
相近的两个社区之间核心节点的最短路径存放在
(2) 稀疏子群社区合并
设定规则: 核心节点的信息属性相同的稀疏子群社区合并成为一个大社区.
3 算法实验与结果分析所有实验均在Intel(R) Core(TM) i7- CPU 3300和8.00 GB RAM的个人计算机(PC)上使用Visual Studio2015上实现.
3.1 标准实验数据集为验证算法有效性, 以下给出3个同时拥有链接和属性的社区网络数据集信息, 见表4.
3.2 评估标准方法
为了评价TPCDLP算法, 本实验采用改进的模块度
(1) 改进的模块度
$Q_{ov}^E = \frac{1}{{2m}}\sum\limits_{c \in C}^{} {\sum\limits_{i,j \in c}^{} {\left[\left({A_{ij}} - \frac{{{k_i}{k_j}}}{{2m}}\right)\frac{1}{{{O_i}{O_j}}}\right]} } $ | (12) |
其中,
(2) 信息熵
$Entropy = \sum\limits_{i = 1}^{\textit{z}} \sum\limits_{j = 1}^k \frac{{|{c_j}|}}{{|V|}}entropy({a_i},{c_j})$ | (13) |
其中,
(3) 社区重叠度
$Overlap = \frac{1}{m}\sum\limits_{c \in C}^{} {|c|} $ | (14) |
其中,
(4) 综合指标F. 一般情况下, 重叠度高的网络其模块度相对较低, 两者呈现负相关性.而对于实验结果而言, 模块度越大, 信息熵和重叠度越小, 社区挖掘的质量就越好. 所以综合以上情况, 为了输出更为合适的社区结果, 定义F值为综合评估指标:
$F = \frac{{Q_{ov}^E \times (Entropy + Overlap) \times 2}}{{Q_{ov}^E + Entropy + Overlap}}$ | (15) |
在有属性数据集实验中, 将子群社区的划分与合并进行详细的分析. 并且为了更好地展示本文提出的算法的优越性, 将本文提出的算法与DOCET算法、LANMF算法、LPPB算法[14]、Louvain算法[15]、SCD算法[16]和DEMON算法[17]进行实验对比. DOCET算法、Louvain算法、SCD算法和DEMON算法只考虑了社交网络数据集中节点的链接信息, 而LANMF算法和LPPB算法利用社交网络数据集中节点的链接信息和属性信息进行社区划分. 这3个数据集中, DOCET算法、LANMF算法、LPPB算法、SCD算法和DEMON算法都能进行重叠社区的划分, 而Louvain算法主要针对的是非重叠节点的划分.
(1)子群社区划分
对3个有属性数据集进行子群社区的划分. 首先, 根据节点拓扑势值的局部最高点确定核心节点. 再利用核心节点进行子群社区划分. 最后, 将子群社区划分结果进行计算汇总, 具体如表5所示.
如表5所示, 在citeseer数据集的子群社区数489个但其中有262个孤立的子群社区数, 也就是一半的社区是孤立子群社区. 而这些孤立子群社区节点的数量都小于10, 由此citeseer数据集一半的子群社区的节点数过小. cora数据集的子群社区数是233个, 其中1/4的子群社区是孤立子群社区. 而WebKB数据集子群社区数是35个, 它的子群社区划分数量相对于其它两个有属性数据集最小但综合指标最高. 通过表中的群社区数和综合指标的数据看, WebKB数据集当前的子群划分效果好, 而citeseer数据集和cora数据集子群社区数多, 孤立子群社区数占子群社区数的比例大, 需要将这些数据集进行进一步的合并, 确保社区划分的综合质量.
(2)子群社区合并
子群划分实验中, 已经将3个有属性的数据集进行的子群社区的划分, 接下来根据子群社区间的距离
如表5和表6所示, citeseer数据集由498个子群社区合并成为了132个社区, 是合并前子群社区数量的1/4; cora数据集由233个子群社区合并成为45个社区, 是合并前子群社区数量的1/5; WebKB数据集由于数据量小, 合并后一共由20个社区, 是合并前子群社区数量的4/7. 所以本文提出的算法在社区合并后, 3个有属性数据集的社区数都有所下降. 而综合指标方面, citeseer数据集由合并前0.995442降到0.909849, 而cora数据集也由合并前0.994164降到0.876 022. citeseer数据集和cora数据集合并后综合指标和合并前的综合指标差距在0.1左右. 然而, 造成这两个数据集在合并后综合指标下降的原因是合并子群社区后改进后的模块度下降导致. citeseer数据集的改进模块度由合并前0.684279降到0.612224, 而重叠度和信息熵的变化不明显. 同样的cora数据集的改进模块度也由合并前0.654599降到0.563148, 而重叠度和信息熵的变化也不明显. 相反, WebKB数据集的综合指标比合并前的综合指标高, 由合并前1.259545升高到1.309186, 差距在0.05左右. 在进行子群社区的合并过程中, 综合指标在0.1左右浮动, 但是社区数量明显减少.
表6中, 将文本提出的TPCDLP算法和其他3个社区检测的算法进行了比较. 通过比较可以看出, 在citeseer数据集中, Louvain算法的综合指标最高, 再是本文提出的算法. 出现这种情况的原因是由于Louvain算法是用模块度最优的方法进行社区的划分. 所以与其他四个算法的改进模块度比较, Louvain算法的改进模块度最高. 虽然本文用改进的模块度作为评估标准, 但是当社区为非重叠社区时, 改进的模块度计算公式其实就是模块度的公式. 所以Louvain算法的改进模块度相对其他算法会高, 由此综合指标也高. 然而在cora数据集和WebKB数据集中, 本文提出的算法与其他6个社区检测的算法比较, 改进的模块度和综合指标都是最高. 本文算法在cora数据集上, 改进的模块度为0.922984, 与其他4个算法的改进的模块度高出最小为0.1左右; 而综合指标为1.212 7985, 与其他6个算法的综合指标高出最小为0.2左右. 本文算法在WebKB数据集上, 改进的模块度为0.839338, 同样与其他6个算法的改进的模块度高出最小为0.1左右; 而综合指标为1.292 0815, 同样与其他6个算法的综合指标高出最小为0.2左右. 所以, 通过上述分析, TPCDLP相对其它6个算法具有一定的优势.
4 真实社区应用为了验证本文算法在现实应用中的有效性, 选择了3个真实社交网络数据, 如表7所示.
Karate为美国空手道俱乐部跆拳道俱乐部的真实划分.
Dolphin 数据集是 D. Lusseau 等人使用长达 7 年的时间观察新西兰 Doubtful Sound海峡 62 只海豚群体的交流情况而得到的海豚社会关系网络. 这个网络具有 62 个节点, 159 条边. 节点表示海豚, 而边表示海豚间的频繁接触, 该图为无权图.
Football网络, 根据美国大学生足球联赛而创建的一个复杂的社会网络.该网络包含 115个节点和 616 条边,其中网络中的结点代表足球队,两个结点之间的边表示两只球队之间进行过一场比赛.参赛的115支大学生代表队被分为12个联盟. 比赛的流程是联盟内部的球队先进行小组赛,然后再是联盟之间球队的比赛.
此处选择了标准化互信息(
$NMI = \frac{{ - 2\displaystyle\sum\nolimits_{i = 1}^{{C_A}}\displaystyle\sum\nolimits_{i = 1}^{{C_B}}{C_{ij}}{{\log }_2}({C_{ij}}N/{C_{i.}}{C_{.\dot j}})}}{{\displaystyle\sum\nolimits_{i = 1}^{{C_A}}{C_{i.}}{{\log }_2}({C_{ij}}/N) + \displaystyle\sum\nolimits_{i = 1}^{{C_B}}{C_{.j}}{{\log }_2}({C_{.j}}/N)}}$ | (16) |
其中, A和B代表社区网络的两个分区,
由于3个真实社区数据集不含属性信息, 此处采用Louvain算法、DEMON算法和DOCET算法与提出的TPCDLP算法进行比较. 实验结果如表8所示: 在海豚数据集(dolphins)上, 本文提出的MIFCD算法的
5 总结
本文提出了一种基于标签属性的拓扑势社区检测算法. 该算法利用标签传播方法构造节点间的链接权重, 保证分割社区中的节点具有紧密的链接, 并保持区域内部属性特征高度一致. 由于实际网络数据具有冗余关系、数据存储量大、数据分布离散等特点, 采用拓扑势最高的局部节点作为社区的核心节点进行社区划分的算法容易导致社区重叠度高、数量多, 因此, 在划分子社区之后, 利用子节点与属性特征之间的距离划分社区, 在保证社区节点之间的链接紧密性和属性相关性的同时, 能够解决细粒度独立社区问题.
[1] |
Fazil M, Abulaish M. A hybrid approach for detecting automated spammers in twitter. IEEE Transactions on Information Forensics and Security, 2018, 13(11): 2707-2719. DOI:10.1109/TIFS.2018.2825958 |
[2] |
Sánchez-Oro J, Duarte A. Iterated Greedy algorithm for performing community detection in social networks. Future Generation Computer Systems, 2018, 88: 785-791. DOI:10.1016/j.future.2018.06.010 |
[3] |
Win HN, Lynn KT. Community detection in Facebook with outlier recognition. Proceedings of the 2017 18th IEEE/ACIS International Conference on Software Engineering, Artificial Intelligence, Networking and Parallel/Distributed Computing. Kanazawa, Japan. 2017.155–159.
|
[4] |
Chen YL, Chuang CH, Chiu YT. Community detection based on social interactions in a social network. Journal of the Association for Information Science and Technology, 2014, 65(3): 539-550. DOI:10.1002/asi.22986 |
[5] |
Sun XL, Lin HF. Topical community detection from mining user tagging behavior and interest. Journal of the Association for Information Science and Technology, 2013, 64(2): 321-333. |
[6] |
Zhong C, Arisona SM, Huang XF, et al. Detecting the dynamics of urban structure through spatial network analysis. International Journal of Geographical Information Science, 2014, 28(11): 2178-2199. DOI:10.1080/13658816.2014.914521 |
[7] |
Girvan M, Newman MEJ. Community structure in social and biological networks. Proceedings of the National Academy of Sciences of the United States of America, 2002, 99(12): 7821-7826. DOI:10.1073/pnas.122653799 |
[8] |
贺超波, 汤庸, 刘海, 等. 一种集成链接和属性信息的社区挖掘方法. 计算机学报, 2017, 40(3): 601-616. |
[9] |
李德仁, 王树良, 李德毅. 空间数据挖掘理论与应用. 3版. 北京: 科学出版社, 2019.
|
[10] |
淦文燕, 赫南, 李德毅, 等. 一种基于拓扑势的网络社区发现方法. 软件学报, 2009, 20(8): 2241-2254. |
[11] |
Wang ZX, Li ZC, Yuan G, Y et al. Tracking the evolution of overlapping communities in dynamic social networks. Knowledge-Based Systems, 2018, 157: 81-97. DOI:10.1016/j.knosys.2018.05.026 |
[12] |
刘世超, 朱福喜, 甘琳. 基于标签传播概率的重叠社区发现算法. 计算机学报, 2016, 39(4): 717-729. DOI:10.11897/SP.J.1016.2016.00717 |
[13] |
Li Q, Zhou T, Lü LY, et al. Identifying influential spreaders by weighted LeaderRank. Physica A: Statistical Mechanics and its Applications, 2014, 404: 47-55. DOI:10.1016/j.physa.2014.02.041 |
[14] |
李东, 程鸣权, 徐杨, 等. 基于平均互信息的最优社区发现方法. 中国科学: 信息科学, 2019, 49(5): 613-629. |
[15] |
Blondel VD, Guillaume JL, Lambiotte R, et al. Fast unfolding of communities in large networks. Journal of Statistical Mechanics: Theory and Experiment, 2008, 2008(10): P10008. DOI:10.1088/1742-5468/2008/10/P10008 |
[16] |
Prat-Pérez A, Dominguez-Sal D, Larriba-Pey JL. High quality, scalable and parallel community detection for large real graphs. Proceedings of the 23rd International Conference on World Wide Web. Seoul, Republic of Korea. 2014. 225–236.
|
[17] |
Coscia M, Rossetti G, Giannotti F, et al. Demon: A local-first discovery method for overlapping communities. Proceedings of the 18th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. Beijing, China. 2012. 615–623.
|