社区发现
社区发现是一种广义上的聚类,区别于传统聚类的核心是类别与类别之间可以有重叠部分。
在传统的聚类算法,如K-Means,一个元素在结果中只能属于一个类别,但在社区发现算法里,一个元素可以隶属于不同的类别。这种聚类结果更贴近于生活中的场景,一个人可以有多重属性,不同的属性特征会驱使他归到不同的类别里。
本文介绍一种实现社区发现的算法,标签传播算法。
标签传播算法LPA
SLPA算法是对标签传播算法的改进。
基本原理
先了解一下输入的数据:带权无向图。
Q:什么是带权无向图?
A:图是由节点和联结构成,图中的每个节点表示要聚类的目标,节点与节点之间的联结都有一个权重,权重值越大表示这两个节点之间的联系越紧密,或节点之间的相似性更高。
在标签传播算法里每一个节点既是 listener 又是 speaker,按照一定的规则进行“听”和“说”的操作。
这些规则都要遵守一个基本原则,就是传播次数越多的消息越有可能被再次传播。就好比在人群中传播一个信息,被说的最火热和知道的人越多的消息越容易扩散,越容易让更多的人知道,人们也更愿意去传播它。
消息传播的过程就是算法实现的过程,现在用一个例子简单说明一下。
假设有一群人,目标是想要把相似的人分到同一个社区,这些相似的人或许有共同爱好,或许有共同特征,不管怎么定义,都可以用数值量化一个权重,代表人与人之间的亲密关系,权重越大说明两个人越亲密