发明名称 基于聚类算法对异构社会网络进行社区检测的方法
摘要 一种基于聚类算法对异构社会网络进行社区检测的方法,实现步骤为:构建邻接矩阵;社区结构初始化;计算局部模块度;获得参与融合社区标号集合;获得候选融合集合;计算模块度差;判断第一、第二模块度差是否符合融合标准,如果符合标准,则统一参与融合社区和候选社区的社区标号,否则返回计算局部模块度;记录新的社区结构;如果当前循环没有社区合并,输出最佳社区结构。本发明采用了聚类方法、相似度向量方法和局部模块度方法,能够有效应用于异构社会网络社区的检测,提高了异构网络社区结构检测结果的准确度。
申请公布号 CN103810288B 申请公布日期 2017.01.25
申请号 CN201410064395.1 申请日期 2014.02.25
申请人 西安电子科技大学 发明人 刘静;焦李成;曾玉洁;马文萍;马晶晶;侯彪;公茂果
分类号 G06F17/30(2006.01)I 主分类号 G06F17/30(2006.01)I
代理机构 陕西电子工业专利中心 61205 代理人 田文英;王品华
主权项 一种基于聚类算法对异构社会网络进行社区检测的方法,包括如下步骤:(1)构建邻接矩阵:(1a)输入所要检测的异构社会网络数据;(1b)分别统计异构社会网络数据中的节点种类数和每类节点的个数;(1c)用每类节点的个数和异构社会网络数据中节点之间的联系信息,构建异构社会网络的邻接矩阵;(2)社区结构初始化:给异构社会网络中的每一个节点赋予一个唯一的社区标号,使异构社会网络中的每个节点对应一个社区;(3)计算局部模块度:采用局部模块度方法,计算每个社区的局部模块度;(4)获得参与融合社区标号集合:(4a)按照下式,计算第t类节点的概率转移矩阵中的每个元素,得到概率转移矩阵;<img file="FDA0001083379250000011.GIF" wi="1566" he="558" />其中,P<sup>t</sup>(i<sub>1</sub>,i<sub>2</sub>,…i<sub>k</sub>)表示第t类节点的概率转移矩阵中的元素,t表示类别,1≤t≤k,k表示节点种类数,n<sub>t</sub>表示第t类节点的个数,A(i<sub>1</sub>,i<sub>2</sub>,…,i<sub>k</sub>)表示邻接矩阵中的元素,i<sub>1</sub>的取值范围为1≤i<sub>1</sub>≤n<sub>1</sub>,i<sub>2</sub>的取值范围为1≤i<sub>2</sub>≤n<sub>2</sub>,…,i<sub>k</sub>的取值 范围为1≤i<sub>k</sub>≤n<sub>k</sub>,n<sub>1</sub>,n<sub>2</sub>,…,n<sub>k</sub>表示每类节点的个数;(4b)由概率转移矩阵按照相似度方法,计算相似度矩阵;(4b1)按照先验概率分布向量构建方法,构建每类先验概率分布向量;(4b2)按照相似度向量方法,计算每个社区的相似度向量;(4b3)按照下式,计算相似度矩阵中的每个元素,得到相似度矩阵:<img file="FDA0001083379250000021.GIF" wi="1029" he="327" />其中,sim(i,j)表示相似度矩阵中的元素,<img file="FDA0001083379250000022.GIF" wi="53" he="63" />表示第i个社区中v类节点的个数,<img file="FDA0001083379250000023.GIF" wi="46" he="79" />表示第i个社区中的第q个v类节点,<img file="FDA0001083379250000024.GIF" wi="138" he="78" />表示第j个社区的第v类相似度中对应的第<img file="FDA0001083379250000025.GIF" wi="42" he="71" />个元素,<img file="FDA0001083379250000026.GIF" wi="54" he="70" />表示第j个社区中v类节点的个数,<img file="FDA0001083379250000027.GIF" wi="47" he="78" />表示第j个社区中的第q个v类节点,<img file="FDA0001083379250000028.GIF" wi="147" he="75" />表示第i个社区的第v类相似度中对应的第<img file="FDA0001083379250000029.GIF" wi="47" he="79" />个元素,n<sub>i</sub>和n<sub>j</sub>分别表示第i个社区和第j个社区中的总节点个数;(4c)将相似度矩阵中的相似度值按降序排列;(4d)依次选取相似度值排序为1到40对应的社区标号,由这些社区标号组成参与融合社区标号集合;(5)获得候选融合矩阵:将参与融合社区标号集合中的每一个社区标号对应的相似度值,按降序排列,记录排列在1到40的社区标号,将所记录的社区标号组成候选融合社区集合;(6)计算模块度差:(6a)采用局部模块度方法,计算每个参与融合社区与其对应的每个候选社区合并之后的局部模块度;(6b)由合并后的局部模块度减去参与融合社区的局部模块度,得到第一模块 度差;(6c)由合并后的局部模块度减去候选社区的局部模块度,得到第二模块度差;(7)判断第一、第二模块度差是否符合融合标准:比较第一模块度差、第二模块度差与局部模块度增量阈值的大小,如果第一模块度差和第二模块度差都大于局部模块度增量阈值,则执行步骤(8);否则,执行步骤(6);(8)统一参与融合社区和候选社区的社区标号;(9)记录新的社区结构:记录异构社会网络中的每个节点所在的社区标号,得到当前循环的社区结构;(10)判断是否有社区合并:判断当前循环中是否有社区统一标号,如果当前循环中有社区统一标号,则执行步骤(3);否则,执行步骤(11);(11)输出最佳社区结构:在循环得到的所有社区结构中,找出社区局部模块度之和最大的社区结构,作为最终得到的社区结构输出。
地址 710071 陕西省西安市太白南路2号