论文部分内容阅读
互联网近年来的飞速发展,造就了一批以社交为主的网站,其中国外的Facebook,Twitter,Google+,国内的QQ空间,豆瓣,人人等最为流行。这些社交网站每天都会有大量的用户使用,并且产生大量的分享数据,建立新的朋友关系等。对于这些数据来说,具有很高的利用价值,比如网络营销,舆情分析等。因此对这些数据的处理方式尤为重要,其中社区发现是研究热点。本文主要是针对目前常用的社区发现算法进行改进。最常用的标签传播算法LPA的思想是在初始情况下,网络中的每个节点都被初始化为唯一的标签,在迭代更新每个节点的标签时,节点是根据其邻居节点中标签个数最多的作为更新标签,如果标签个数最多的标签并不是唯一的,那么随机从中选择一个标签来更新当前节点,最终达到收敛或者震荡,该算法停止。由于该算法的思想和实现过程导致该算法有一些缺点,例如不稳定性,发现的社区要么是巨型社区,要么就是无意义的小型社区,分布极其不均匀并且对网络的结构比较敏感,二分网络情况下会发生循环震荡。针对上述LPA算法的一系列缺点,本文提出了LAAPA(label-attribute&attenuation progagation algorithm),基于标签属性和衰减因素的社区发现算法。该算法引人了传播衰减因子和节点属性,其中传播衰减因子顾名思义就是节点标签的传播距离是有限的,并且随着距离的增加节点标签的影响力逐渐降低,更新标签的权重也随之减少;节点属性是指在社交网络中节点之间的关系并不仅仅是关注与被关注这种简单的传统上的“边”,为了与实际情况更加吻合本文提出了节点属性,具体是指将节点的其他属性比如豆瓣网中用户加入的“小组”作为节点的属性,节点之间的相同属性将会反映到节点之间的边上,使用权值来表示。在算法迭代中,节点更新标签时,将考虑邻居节点的标签传播距离,节点之间边的权值,节点的度等因素。本文通过两组标准数据对提出的LAAPA算法和LPA算法进行比较,在社区大小,模块度等方面LAAPA算法发现的社区比LPA算法效果好。在使用Scrapy抓取的豆瓣网数据中,经过清洗格式化后验证了该数据符合社交网络的特性,“小世界”,节点中心性等。利用两种社区发现算法进行社区发现,进行对比,结果也是LAAPA算法发现的社区质量比LPA算法质量高,并且稳定,社区分布均匀,没有巨型社区的出现。