图论-图论算法之InfoMap
图论算法简介之InfoMap算法
在上次的文章里,我们介绍了图论里的社区发现算法,那是一种通过模块度计算的算法,通过不断迭代和合并从而得到最终的社区结果。在本次文章中我们将会介绍InfoMap算法,这种算法的思路非常经典,而且InfoMap算法在数学上看是作者对图结构的聚合有着非常深刻的理解,该算法通过霍夫曼编码,将图结构的邻接矩阵进行转化,并且这种算法在实际场景的效果还不错,下面我们来介绍这种算法。
从本质上来说,InfoMap是想要构造出一种转移概率,然后使用点在图上进行随机游走,并生成序列的向量结果,通过对这些向量进行层次编码后,得到结果进行聚类,从而将更相似的向量聚合在一起,也就是对应的图里的点,这种思路不仅可以用在图论的应用里,还可以用在NLP自然语言处理的问题中。
InfoMap算法在最初想解决的是用最短编码去描述随机游走,传统的思路就是给每个点一个互不相同的编号,然后进行随机游走进行记录即可。但这种编码的方式不是最优的,于是InfoMap提出了双层编码,这种编码的优点是大大简化了编码长度,只需要先将点分为编号互不相同的N个大类,在每个类里面采用一样的编码,这样就可以节省编码的长度。特别的,InfoMap算法还把跳出该大类的行为进行编码,设定为000,那么每次随机游走进入到某个类的时候都是以类编码开头,离开类的时候都是以跳出行为000进行结尾,具有较好地可解释性。下面的图片就很好地说明了这种编码方法,肉类和国家这两个大类使用不同的编码,而类的内部可以使用一套编码,最后都是以End结尾,这样的编码形式其实是信息熵最小的。