demo_PTA_and_PTGP.m 文件为整个项目的运行过程
- 读取基本聚类池,得到基本聚类池里基本聚类的数目poolSize和真实的类数trueK。
- 设置参数,包括基本聚类的个数M,PTA和PTGP算法运行的次数cntTimes。然后从基本聚类池中随机取出M个基本聚类的下标,总共取cntTimes次,所取出的所有基本聚类下标被放在bcIdx矩阵中,矩阵的大小为cntTimes*M。
- PTA和PTGP的运行过程如下:
- 结果存放:nmiScoresBestK_PTA矩阵存放best-k准则下pta方法的nmi分数;nmiScoresTrueK_PTA矩阵存放true-k准则下pta方法的nmi分数;nmiScoresBestK_PTGP,nmiScoresTrueK_PTGP以此类推。
- for循环,循环cntTimes次:
- 根据bcIdx矩阵取出代表真正的基本聚类的baseCls矩阵,N×M;
- 调用computeMicroclusters生成微簇;
- 调用computeMCA生成基于微簇的协同矩阵,存放在MCA中;
- 设置参数K和T。参数K指定了一个节点的多少邻居将被视为精英邻居并保存;参数T是概率轨迹的长度;
- 调用computePTS_fast_v3计算PTS(概率轨迹相似度),存放在PTS中;
- 调用runPTA_v2运行PTA算法;
- 调用runPTGP_v2运行PTGP算法;
- 调用mapMicroclustersBackToObjects将微簇映射回数据对象,总共得到四种结果,PTA-AL,PTA-CL,PTA-SL和PTGP。
- 调用computeNMI分别计算PTA-AL,PTA-CL,PTA-SL和PTGP的nmi分数。
- 分别用最佳-k和真-k准则得到对应的nmi分数。
- 将结果写进results.mat文件中。
伪代码如下
计算PTS(基于概率轨迹的相似度)
我们使用从每个节点出发的随机游走器的概率轨迹来获得新的相似性度量PTS。具体来说,随机游走过程在通过ENS 策略仅保留少量可能可靠的链接的稀疏图K-ENG 上执行。K-ENG 上的概率轨迹被用作图节点的特征向量,通过随机游走的不同步骤将多尺度的图信息合并到T 个N-tuple中。从理论上讲,K-ENG 可能由多于一个的连通分量组成,在这种情况下,我们可以分别对图的每个连通分量进行随机游走,然后将每个分量的随机游走轨迹映射回整体图来方便计算。

PTA算法
区域合并过程迭代执行,每一步后区域的个数减1。显然,在(N-1)步之后,将只剩下一个区域,其包含整个微簇集合。那么我们就得到了一个树状图,即聚类的分层表示。树状图中的每个级别表示具有一定数量的簇(或区域)的聚类。通过指定树状图的级别可以获得最终的聚类。

PTGP算法
关于MCBG 的二部结构,有效的图分割方法Tcut [26]可以用来将图划分成一定数量的不相交节点组。

网友评论