louvain算法_infoMap分群以及与 Louvain 效果对比

4512aba2682ae291a8c6fea62e92eb28.png

谈到社区发现算法,不得不提 infoMap。infoMap 思想新颖,速度快,在业界已有广泛的应用。本文简单介绍 infoMap 的原理,然后实验亲测与 Louvain 分群效果对比。

1)infoMap 原理

介绍原理之前,先说明两个直觉上的常识:1. 图中连接紧密的节点直觉上更容易认为是群; 2. 图中随机游走时,若节点间转换的概率一样,则随机游走在群内停留时间更长。基于以上两个常识,infomap 将分群巧妙地转化为最小随机游走编码长度问题。

随机游走首先形成的是节点序列,然后各个节点需要通过编码来区分。最简单的编码是二进制编码 ,比如图中四个节点,则编码分别为"00", "01", "10", "11"。由于图中各节点连接的边数量不同,随机游走序列中某些节点出现次数多,某些少。高级点的编码采用 HuffMan 编码,出现次数多的靠近 huffman 树根编码长度短,这样可以缩小整个序列的编码长度。infoMap 的想法是将每个节点的编码分为两个部分模块码节点码,模块码用于区分图中不同的群,节点码用于区分相同模块内不同节点。不同模块节点的模块码不同,但节点码可能相同。如下图所示:

a8dd39f4a267b6565078bae0a795f7b3.png

如图上所示,随机游走序列相邻节点处于同一个群内的以群号开头,退出码结尾。随机游走序列长度由两部分决定,1模块编码以及长度,2模块内节点编码以及长度。群分的过多,则群编码长度增大,群分的过少,则节点编码长度增大。infomap 目标是寻找一个平衡点,将以上两部分长度和最小。编码长度的量化公式如下:

92e317e7fa9ed586e4e2e56e9d07b6fb.png

公式详解可以参见论文原文https://www.mapequation.org/assets/publications/EurPhysJ2010Rosvall.pdf或者https://zhuanlan.zhihu.com/p/53085574,个人觉得讲得很详细了。

2)实验亲测

数据规模:节点7亿+, 边22亿+。目标节点~1000万。目标节点是我们业务感兴趣的用户节点。结果如下

fac2e7f31af804348bee9a3d95d6827d.png

可以看到 infoMap 分群后群更少,但大部分群内节点数量都较小,群内节点数量比较平均。Louvain 分群虽然群多,但群内节点数量差异较大,最大节点数量远高于 infomap。我们业务用于信用评估和反欺诈, 实际看到 Louvain 分到的大群逾期率也较高,比较贴和我们业务目标。

从业务目标看,在图规模较大后,基于模块度的分群效果更好。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值