FORk=0toα
toRemove;score=0;
//findtheedgewhosebetweennessismaximum
FOReing.getEdges()
IFbc.getEdgeScore(e)>score
toRemove=e;
score=bc.getEdgeScore(e);
//removetheedge
g.removeEdge(to_remove);
第一步betweenness的计算复杂度为O(mn);每次删除betweenness最高的边的时间复杂度为O(m),总的复杂度为O(αm);第三步CNM算法的计算复杂度为O(m*d*logn)。
真实的网络中,有m~n、d~logn,因此,改进算法的复杂度为O(n2)。
3.3引入节点内容信息改进CNM算法
除了网络本身的结构信息,节点的一些属性反映了它的某些特征。
一般而言,具有相同或相似特征的节点应该属于同一社团。
具体到人人网的北大用户上,可以通过引入节点的属性信息发现共同院系的两个没有连接的用户。
最近,已有学者融合结构和内容信息发掘社团[17-19],本文使用人人网用户的日志信息,在改进CNM算法方面做了初步尝试。
引入节点内容的基本方法是:
通过用户日志内容,计算任意两个用户之间的相似度,若相似值高于某个阈值β,则将两个用户连在一起,无论原有网络中用户节点是否相连。
为了计算节点间的相似度,首先利用用户节点的属性构造用户模型。
这里仅采用日志信息,把每个用户的所有日志合并,再抽取特征,用一个向量来表示用户模型。
具体方法是:
先分词并标词性,去掉停用词,再抽取其中的名词作为特征,使得每个用户对应一个特征向量di=(wi1,wi2,…,win);之后,用cosine法计算两个特征向量的相似度。
这里,特征词的权重wij采用标准的tf.idf的计算方法,如式(3)所示。
wij=tfij*idfj=fij*(log2(n/nj)+1)
(3)
其中nj>0
cosine相似度的计算公式如式(4)所示。
预处理中,计算所有节点对之间的相似度为O(n2),CNM算法的复杂度为O(m*d*logn),因此,引入节点内容信息的算法复杂度为O(n2)。
4实验
4.1数据采集
本文选择人人网数据进行实验。
由于人人网的数据庞大,本文主要采集了北京大学的在校学生用户数据作为实验数据。
利用人人网的开放API,可以采集到用户的部分属性信息和所有关系信息,包括:
用户id、用户名、学校、朋友id的集合、用户日志。
采用广度优先策略爬取用户数据。
首先,选取北京大学的某个用户作为种子节点,抓取用户信息和好友信息;然后,把好友关系中属于北京大学的用户保留下来,放到待爬取列表中;再通过这些好友,不断地向外抓取,直至所有待爬取列表为空。
最终,从人人网获取到的数据量为77677个,其中有76%的用户来自北京大学。
所有用户的好友人数为12630015,平均好友为162.6个。
其中,好友数量随用户人数的分布关系如图1所示。
由于人人网限制了最大好友数量为1000,所以,除了在1000的点上有一个暴增之外,基本上是随着好友数量的增加,用户的人数不断减少。
同样,再计算所有用户中任意两个用户之间的最短路径(图2)。
人人网中的用户距离在6以内,绝大多数是3和2(42.42%用户的距离为3,35.08%用户的距离为2)。
当然,在真实的网络中,也可能出现一个北京大学同学认识的某个同学在人人网上并没有加为好友的情况,但从实验结果来看,基本上符合六度分离的原则。
4.2标准答案的构建和评价方法
在社团挖掘领域,主流的评测方法是采用真实的数据作为评价的标准答案[3-6]。
在以大学生为主的人人网上,院系内部的学生之间的关系相对于其他院系,通常会更加紧密。
因此,本文采用用户所在的院系这一属性作为划分不同团体的答案。
由于人人网的API限制,用户所在的院系属性无法被获取到。
为了解决这一问题,我们从网上找到了北京大学官方发布的09届毕业生名单,名单包含了所有09届本科毕业生的姓名以及所在院系。
本文通过如下方法来构建一个09届北京大学本科毕业生的用户网络:
1.把人人网的用户名预处理成规整的形式。
例如,用户“刘少龙Aspen”处理成“刘少龙”(人人网允许在真实姓名后添加一个后缀);
2.把用户中没有歧义的用户名与毕业生名单进行对比,若名单中含有该名字,则挑选出来并附上其所在的学院放到队列Q中。
例如,“鲍重铮”在人人网数据中只有一个,对应到名单中的“数学科学学院”,加入Q;而数据中有多个“王硕”,则推迟处理;
3.统计重名用户的好友所在的学院,若好友中属于某一学院的人数大于一定个数(初始阶段这个值设定的较高),我们认定该用户属于相应的学院,并把这些用户加入Q中;
4.重复步骤3,通过迭代,发现更多的用户及所在学院;
5.通过人工的方法标记剩余的一些用户。
通过上述过程,从人人网数据中找到了所有3645名09届本科生中的2375名,作为本文评测的数据和答案。
在这些数据中,只有重名情况存在不确定性,但最后通过人工验证得到的答案也是基本可靠的。
值得一提的是,使用社会网络中的好友关系为解决重名问题提供了一种思路。
本文采用聚类度量指标P-IPscore[20]来进行评价。
P-IPscore包括纯度(Purity)、逆纯度(InversePurity)和F值(Fscore)这三个指标。
其中,F值为前两个的调和平均数。
5实验结果和分析
本文进行了多组对比实验,原始的CNM算法作为评价的baseline。
同时,我们对社团发现的结果进行一个分析,简单地对北京大学不同院系和学科的特点做了分析解释。
5.1实验结果
实验结果分三部分:
第一部分在baseline的基础上,引入了网络结构的信息betweenness进行改进;第二部分在baseline的基础上,仅增加了节点的一些内容信息进行改进;第三部分,融合前两部分的结果。
5.1.1使用网络结构信息改进的结果
表1是在相同数据集上,CNM算法和利用betweenness预处理的改进算法的一个实验结果,括号中是预处理删除betweenness最高的边数的阈值α。
Baseline的F值达到了83.96%,取得了一个较好的效果。
这一结果也验证了使用院系属性来划分社团是基本有效的,人人网中存在着这么一种社团结构。
从结果中还能看到,当删除的边数为21时,F值达到最大88.28%,取得最高的社团发现精度。
当不断增加预处理删除的边数时,F值有一个波动。
删除过多的边,F值低于CNM算法的水平,这是因为删除过多的边破坏了网络的社团结构,导致了纯度和逆纯度两者都下降。
5.1.2使用节点内容信息改进的结果
表2是在原CNM算法基础上,仅增加内容信息的结果。
括号中的数字表示相似度阈值β,当两个节点之间的内容相似度高于这个值时,会保证在这两个节点间有一条边。
结果显示,仅引入内容信息,能有2个多的百分点提升。
但如果阈值设置过低,会导致过多的边被引入,甚至增加不同社团之间的连边,反而会降低性能。
5.1.3使用结构和内容信息改进的结果
原始的CNM算法本质上仅采用了网络的结构信息,因为网络中任意两点之间是否连边来自真实的网络,是确定的。
通过融合betweenness的结构信息改进和节点内容的改进,得到如表3的结果,这里取效果最好的一组数据β=0.7。
结果表明,融合两种信息的结果会比仅使用结构信息的结果略微好一些。
其中,最高F值88.51%仅比表1中的最高值88.28%提高0.23个百分点。
这一结果符合Hsu对一般社会网络进行分析的结论:
基于图的关系特征已经足够有效,利用属性特征的效果一般[21]。
最后,三组改进算法与CNM算法的运行时间如表4所示。
根据之前的分析,三组改进算法的计算复杂度均为O(n2),但融合两种信息的算法显然在时间上要大于前两者,而真实社交网络下CNM算法的复杂度大致为O(n*log2n),实验也论证了其速度明显要快很多。
5.2结果分析
CNM算法能够发现北京大学的大部分院系的社团结构,但人数少且内部联系弱的院系社团结构要弱一些(例如,考古文博学院)。
使用3.2中的改进算法,通过删除betweenness最高的若干条边,能够发现这些院系。
当预处理中删除25条边时,一个18人的社团被算法找到,其中的17人都来自考古文博学院(参见表5和表6)。
不管如何删除边,一些院系仍然无法通过这一方法发现,如表7所示。
其中,人数小于50的10个院系中,社会学系、哲学系、心理学系和艺术学院四个没有被发现,这四个院系属于人文社科院系。
一般而言,人文社科学生相对活跃,社交圈更为大,容易和不同背景的学生成为好友;而理工科背景的学生相对单一,大多数好友是同院系的同学。
另一方面,人数大于50的17个院系中,仅有国际关系学院的学生(人数为93)难以被聚成一个团体。
说明国际关系学院的内聚程度不够高,国关的学生视野广阔,同其他学院的学生有大量的往来,喜好联系。
6总结与展望
本文主要研究社交网络的社团结构发掘。
一方面,使用了CNM算法发掘社团结构,引入边的betweenness概念,通过删除最高值的边进行预处理来改进CNM算法。
另一方面,除了社交网络的结构信息之外,用户的日志内容也被用来辅助改进算法的精度。
值得一提的是,本文以人人网上的北京大学学生数据进行实验,挖掘出的社团结构在很大程度上解释了北京大学院系学科的特点。
在其他高校是否具有同样的特点,还需要更多的实验来验证。
当然,本文的社交对象仅仅关注了在校学生的社区交往情况,没有展示其他层面的社交关系,比如,高校学生毕业后的工作关系。
这些问题都将在后续的工作中加以考虑。
未来的工作包括:
如何确定该删除多少条betweenness高的边;引入更多的人人网用户属性(状态、爱好等等)数据进行分析;引入其他的交互数据(比如评论和@等用户交互信息)来进一步精化社团发现的精度;分析除高校外其他层面的社交网络关系。
参考文献
[1]WattsDJ,StrogatzSH.Collectivedynamicsof‘small-world’networks[J].Nature,1998,393(6684):
440-442.
[2]BarabasiAL,AlbertR.EmergenceofScalinginRandomNetworks[J].Science,1999,286(5439):
509-512.
[3]GirvanM,NewmanMEJ.CommunityStructureinSocialandBiologicalNetworks[J].PNAS,2001,99(12):
7821-7826.
[4]NewmanMEJ,GirvanM.FindingandEvaluatingCommunityStructureinNetworks[J].PhysicalReviewE,2004,69
(2):
026113.
[5]ClausetA,NewmanMEJ,MooreC.FindingCommunityStructureinVeryLargeNetworks[J].PhysicalReviewE,2004,70(6):
066111.
[6]ChenJ,CommunityMining:
DiscoveringCommunitiesinSocialNetworks[D].Edmonton,Alberta:
UniversityofAlberta,2010.
[7]KarypisG,KumarV.Multilevelk-waypartitioningschemeforirregulargraphs[J].JournalofParallelandDistriutedComputing,1998,1(48):
96-129.
[8]SatuluriV,ParthasarathyS.Scalablegraphclusteringusingstochasticflows:
applicationstocommunitydiscovery[C]//Proceedingsofthe15thACMSIGKDDInternationalConferenceonKnowledgeDiscoveryandDataMining(KDD).Paris,France:
2009:
737-746.
[9]KernighanBW,LinS.Anefficientheuristicprocedureforpartitioninggraphs[J].BellSystemTechnicalJournal,1970,1970(49):
291-307.
[10]NgA,JordanM,WeissY.Onspectralclustering:
analysisandanalgorithm[C]//Proceedingsofthe15thAnnualConferenceonNeuralInformationProcessingSystems(NIPS2001).Vancouver,BritishColumbia,Canada:
2001:
849-856.
[11]NowickiK,SnijdersTAB.Estimationandpredictionforstochasticblockstructures[J].JournaloftheAmericanStatisticalAssociation,2001,96(455):
1077-1087.
[12]WangX,MohantyN,McCallumA.GroupandTopicDiscoveryfromRelationsandTheirAttributes[C]//Proceedingsofthe19thAnnualConferenceonNeuralInformationProcessingSystems(NIPS2006).Whistler,B.C.,Canada:
2006:
1449-1456.
[13]ZhangH,etal.AnLDA-basedCommunityStructureDiscoveryApproachforLarge-ScaleSocialNetworks[C]//ProceedingsoftheIEEEConferenceonIntelligenceandSecurityInformatics.NewBrunswick,NewJersey:
20