论文部分内容阅读
近年来,随着社交网络、生物网络等社会网络的兴起,对社会网络的研究引起了人们越来越多的关注。通常情况下,社会网络一般被抽象成图,图中的节点表示被研究的对象,图中的边代表对象之间的关系。我们可以通过研究这些图而找到隐藏的信息,便于人们理解社会网络的结构和功能。随着社会网络资源的逐渐丰富,我们对社会网络的探知已经不能局限于只使用对象的属性信息或者是对象之间的关系信息,同时利用对象的属性和对象之间的关系信息是非常必要的。目前,多数聚类算法在分析社会网络图时要么只关注节点的属性,要么只关注节点之间的关系,只有少部分算法同时利用节点的属性和节点之间的关系进行聚类,例如SNAP算法。虽然这些算法也能较好的划分社会网络,但还存在一定的局限性。目前传统的聚类算法大致可以分为四类:层次化聚类算法、划分式聚类算法、基于密度和网格的聚类算法和其它算法。因为划分式聚类算法具有思想简单、效率高等优点,并且在处理大型数据集时还具有一定的伸缩性,而且这类算法应用比较广泛,所以本论文主要在划分式聚类算法的基础上开展研究。SNAP算法提出以后,人们也对SNAP算法做了一定的改进,如K-SNAP算法。虽然这些算法能把对象的属性和对象之间的关系很好的联系在一块,但是也各有不足之处,如SNAP算法在按照属性划分的初始阶段,如果属性值的取值范围很大,那么初始划分的时候将分成很多的小分组,而这显然不是有效率的社区划分方法。本文在学习总结了一些经典的聚类算法的基础上,分别按照对象的属性初始划分、按照对象之间关系再次划分来改善K-SNAP算法存在的问题。在本文中,首先借助CANAL的思想,对数值型属性进行了预处理,以减少无用分组的数目。然后引入Q函数理论,在根据对象之间的关系进行划分时,将分组中节点之间的联系密度作为一个衡量标准,使得分组更有实际意义。最后我们使用了一个实际数据集,做了一系列实验,实验结果验证了我们所提出方法的有效性。