如何对无标度图进行采样

时间:2010-10-29 10:42:47

标签: social-networking graph-theory

给定一个大规模的免费图表(社交网络图),采样的最佳方式是什么,以便样本保留原始属性的可接受的抽象?

我有一个大图(Munmun的twitter数据集,如果你知道的话)。但是我需要一个具有相当大直径的图表的连接样本(tl; dr ...原因为什么要求......直径10会很好)。

问题在于任何类型的广度优先搜索总是会遇到一些大规模连接的节点。所以我开始进行这样的搜索,找到我遇到的所有节点的朋友。我不可避免地遇到了一些大规模连接的节点,并且必须得到他们所有的朋友。这是一个问题,因为我最终得到了大量在图中彼此接近的节点。为了使编程分析可行,我必须限制节点(和边缘)的数量。这个练习的重点是找到节点之间的最短路径,所以我通常对节点的所有邻居感兴趣。这就是问题所在。

一个黑客围绕这个是限制最大值。连接到我感兴趣的用户的节点数量。例如,如果我在我的广度优先搜索中遇到@barackobama,我确保我只接受他的一小部分朋友而忽略其余的。但这个黑客图表是否值得一试,或者我在找到最短路径方面丢失了太多信息?

希望有道理......

3 个答案:

答案 0 :(得分:1)

存在多种抽样方法,如何选择一种抽样方法取决于您要保留的属性(除其他外)。我发现论文Sampling and Inference in Complex Networks [Maiya '11]中的文献综述(第3节)非常有用。

但是您似乎找到了一种对网络进行采样的方法,现在您想要找出样本是否代表整个图表的最短路径。您可以尝试查看本文:Complex Network Measurements: Estimating the Relevance of Observed Properties [Latapy& Magnien '08]。他们描述了一种评估样本代表性的方法,涉及各种经典拓扑性质。总结他们的方法,他们最初可以访问整个研究的网络,并模拟这些数据的一些采样过程,随着样本量的增加。它们根据样本大小监控属性的变化,并在感兴趣的属性足够稳定时确定适当的大小。他们的工具是自由available online

编辑:我在网上找到的唯一可立即使用的工具是Albatross。相关文章Albatross Sampling: Robust and Effective Hybrid Vertex Sampling for Social Graphs [Jin et al。 '11]也对现有的抽样方法进行了很好的回顾,其中一些在他们提供的源代码中实现。

编辑2:我需要在Linux系统上使用Albatross,所以我做了一个Java端口。它很原始,但似乎工作正常。它可以在GitHub上找到:https://github.com/vlabatut/Albatross

答案 1 :(得分:0)

如果我理解你的问题,我不确定。我认为你的主要问题是关于如何计算巨型有向图中两个节点的最短路径。创建图的子样本似乎是您尝试创建有效的解决方案。 (但我可能完全误解了你。)

也许这个SO-Question有一些指示:Efficiently finding the shortest path in large graphs

但问题中的图表似乎要小得多。

答案 2 :(得分:0)

您可能需要检查以下内容:Gscaler:https://github.com/jayCool/Gscaler 这是一个生成合成比例图的最新工具。

它包含jar文件和相关论文供您参考。