社区检测算法性能测试报告
测试简介
本报告旨在评估不同社区检测算法在Higgs Twitter Dataset上的性能。Higgs Twitter Dataset收集了2012年7月4日至7日期间,Twitter上关于希格斯玻色子发现的讨论数据。本测试将评估算法在处理大规模网络数据时的效率和准确性。
测试环境
- CPU: 16 i7-7820x CPU @ 3.6GHz
- 内存: 128G
- Java版本: 11.0.11
- Neo4j版本: 4.4.29-community
- GDS版本: 2.5.6
测试数据
- 数据来源: Higgs Twitter Dataset
- 点数: 456628
- 边数: 14855846
测试结果
算法 | 点数 | 边数 | 预处理时长(ms) | 运行时间(ms) | 最小内存(byte) | 最大内存(byte) | 备注 |
---|---|---|---|---|---|---|---|
Louvain | 456628 | 14855846 | 16 | 29317 | 29286561 | 688126544 | 0.642279292(modularity) |
Leiden | 456628 | 14855846 | 14 | 6403 | 121224712 | 735674496 | 0.632233968(modularity) |
K-Core | 456628 | 14855846 | 0 | 776 | 18595344 | 18595344 | 187 (degeneracy) |
K-1 Coloring | 456628 | 14855846 | 0 | 420 | 3939120 | 3939120 | 83 (colorCount) |
Label Propagation | 456628 | 14855846 | 14 | 7049 | 3655040 | 70763392 | 668 (communitycount) |
Triangle Count | 456628 | 14855846 | 0 | 44826 | 3653184 | 3653184 | 83023401 (Triangle Count) |
Approximate Maximum k-cut | 456628 | 14855846 | 0 | 603207 | 8676280 | 8676280 | 21645998 (cutCost) |
Strongly Connected Components | 456628 | 14855846 | 35 | 731 | 18342372 | 252542836 | 157 (componentCount) |
Weakly Connected Components | 456628 | 14855846 | 10 | 106 | 3653120 | 3653120 | 157 (componentCount) |
测试总结
在本次性能测试中,通过对多种社区检测算法在处理Higgs Twitter Dataset时的表现进行了评估。这些算法在效率和准确性方面的表现对于选择适合的社区检测方法至关重要。以下是对测试结果的总结和分析:
算法效率
- Louvain算法在运行时间上稍慢于Leiden,但内存使用量较少。其模块化系数为0.642279292,表明它在社区划分上取得了较高的质量。
- Leiden算法在预处理和运行时间上表现优秀,尽管它使用了最多的内存。Leiden算法的模块化系数为0.632233968,略低于Louvain。
- K-Core和K-1 Coloring算法在预处理和运行时间上都表现出了快速的性能,但它们在内存使用上有所不同。K-Core算法的退化性(degeneracy)为187,而K-1 Coloring算法的颜色计数(colorCount)为83。
- Label Propagation算法在运行时间上相对较长,但内存使用量适中。社区计数(community count)为668,这可能是由于算法的迭代性质。
- Triangle Count算法在运行时间上最长,但内存使用量相对较低。其三角形计数(Triangle Count)为83023401,这表明算法在检测社区结构时考虑了网络的三角形特性。
- Approximate Maximum k-cut算法在运行时间上非常长,可能是由于其近似性质和计算复杂度。其切割成本(cutCost)为21645998,这表明算法在寻找网络中的社区边界时可能需要较大的计算资源。
- Strongly Connected Components和Weakly Connected Components算法在运行时间和内存使用上表现相似,但它们关注的是网络中的强连通性和弱连通性,而非社区结构。
内存使用
- 内存使用是评估算法效率的另一个重要指标。在本测试中,Louvain和Leiden算法使用了最多的内存,这可能是由于它们在社区划分时需要更多的内存来存储中间结果。
- K-Core、K-1 Coloring、Label Propagation、Triangle Count、Approximate Maximum k-cut以及Strongly Connected Components和Weakly Connected Components算法在内存使用上相对较低,这使得它们在资源受限的环境中更具吸引力。
社区质量
- 模块化系数(modularity)是衡量社区划分质量的一个常用指标。在本测试中,Louvain算法的模块化系数最高,表明它在社区划分上可能提供了最优化的结果。
- 对于其他算法,如K-Core、K-1 Coloring、Label Propagation、Triangle Count、Approximate Maximum k-cut以及Strongly Connected Components和Weakly Connected Components,它们的社区质量指标可能需要根据具体的应用场景和需求来评估。
应用建议
- 对于需要快速处理大规模网络数据的场景,K-Core、K-1 Coloring、Label Propagation、Triangle Count、Approximate Maximum k-cut以及Strongly Connected Components和Weakly Connected Components算法可能是更好的选择,因为它们在运行时间上相对较快,且内存使用量较低。
- 如果内存资源充足,且对社区划分的质量有较高要求,Louvain和Leiden算法可能是更合适的选择,尽管它们的运行时间可能稍长。