标签传播算法
注:本文只是对自己设计的算法的一个简单记录。
算法步骤
- 初始时,给每个节点一个唯一的标签;
- 每个节点使用其邻居节点的标签中最多的标签来更新自身的标签。
- 反复执行步骤2,直到每个节点的标签都不再发生变化为止。
一次迭代过程中一个节点标签的更新可以分为同步和异步两种。所谓同步更新,即节点z在第t次迭代的label依据于它的邻居节点在第t-1次迭代时所得的label;异步更新,即节点z在第t次迭代的label依据于第t次迭代已经更新过label的节点和第t次迭代未更新过label的节点在第t-1次迭代时的label。
改进方案
标签传播算法的时间复杂度很低,非常适合大型网络的社区划分,但是也存在很多缺点:
- 划分结果不稳定,随机性强;
- 准确度不高。
具体体现在:
- 更新顺序:节点标签更新顺序随机,但是很明显,越重要的节点越早更新会加速收敛过程;
- 随机选择:如果一个节点的出现次数最大的邻居标签不止一个时,随机选择一个标签作为自己标签。这种随机性可能会带来一个雪崩效应,即刚开始一个小小的聚类错误会不断被放大。
改进思路:
确定节点的更新顺序 : LeaderRank,PageRank,HITS,参与系数,k-核/k-壳,等等及其改进算法;
降低随机选择