前言
在此节介绍我所做的内容所涉及的一些基本概念。只是粗浅了解社区挖掘,没有系统学习过,写它的原因是网上这种内容有点少,如有错误,还请指正。
基础知识
- 网络数据:有一些数据天然的以网络的形式存在,比如微信、QQ等任意社交平台的数据,将每个用户作为点,将用户间的好友关系作为边,那么数据可以构成一个网络,显然映射到数据结构中应该是图结构。网络数据的一个特征是边的数据信息是隐式的,当大量信息一条条的展示在我们面前时,我们很难找出其中的联系。
- 空间网络:我把它当做普通图看待,但根据一些大佬的定义,它是具有空间属性的点组成的图。
- 社区:网络图中满足一些条件的子图。社区在每个实验中都是不同的,它有实验目标。比如我们想从图中找出度大于k的点构成的子图,那么这类子图就是社区。
- 社区结构特性:同一社区内结点连接紧密、不同社区间节点连接稀疏。
- k-core:一种社区模型。如果一个图中所有点的度都大于等于k,k是一个整数,那么这个图可以被称为k-core。下图即是一个3-core。
- 结构性约束:判断一个社区内的节点之间连接是否紧密的约束。最直接的表达形式就是社区中点的度。
- 结构性约束阈值k:结构性约束阈值k用于判断一个点是否满足参与度约束。当一个图中最小度大于等于k时,表明它满足结构性约束,即一个k-core,它肯定满足结构性约束阈值为k的结构性约束。当一个图中最小度小于k时,表明它不满足结构性约束。
- 相似度:相似度sim(u,v)表示顶点u和v之间的相似程度。
- 相似度阈值r:相似度阈值r用于判定两点是否相似。
- 相似度计算方式: 相似度的判定方式一般有两种,一种是使用Jaccard相似性来判定两点基于多重属性上的相似性。设点u的属性集合为,点v的属性集合为,Jaccard相似性计算公式为如式(2-1)所示。此时当sim(u,v) ≥ r时表示u和v两点相似,当sim(u,v) < r时表示u和v两点不相似。
另一种是使用欧式距离来判定两点基于空间位置上的相似性,设u、v两点具有空间位置属性,则可以计算u、v两点间的欧式距离,欧几里德计算公式如式(2-2)所示。此时当sim(u,v) > r时表示u和v两点不相似,当sim(u,v) ≤ r时表示u和v两点相似。
相似度的定义以及判定方式需要依据数据的具体属性特征进行对应设计,比如一个数据集中的数据具有经度和纬度两个信息,即网络中的点具有经度和维度两个属性,此时我们可以将相似度定义为两点间的距离,而相似度的计算可以使用欧几里德计算公式来计算,但并不推荐使用计算方法,因为地球是圆形的,欧式距离可以用于比较,但没有实际意义,此时最好可以根据经纬度计算出两点间的实际距离。 - 相似性约束:一个图中如果任意两点都相似,则此图满足相似性约束。
- (k,r)-core:一种社区模型。如果一个图同时满足结构性约束和相似性约束,那么此图为(k,r)-core。其中k为结构性约束阈值,r为参与度约束阈值。
- 极大(k,r)-core:在图G中,子图S是极大(k,r)-core时,不存在S’是一个(k,r)-core且满足S’包含S。
实验总体概括
实验目的
依据实际数据构建空间网络。
在空间网络中找出所有极大(k,r)-core。
设计效率比较高的算法来找出空间网络中所有极大(k,r)-core。
实验数据
SNAP平台提供的Brigthkite数据集
实验难点
在空间网络中找出所有(k,r)-core是np-hard问题。在空间网络中找出所有极大(k,r)-core或在空间网络中找出最大(k,r)-core都是np-hard问题。
现有的查找(k,r)-core的思想是,先简化空间网络图,然后再穷举出所有(k,r)-core,最后在(k,r)-core集合中找出所有极大(k,r)-core。
实验环境
win10、eclipse、jdk1.8