以概率最大化社交网络中的预期收益
Posted
技术标签:
【中文标题】以概率最大化社交网络中的预期收益【英文标题】:Maximizing expected gain in a social network with probability 【发布时间】:2013-04-09 20:03:33 【问题描述】:我需要解决一个特定的问题。 我得到了一个社交网络的表示。 每个节点是一个人,每条边是两个人之间的连接。该图是无向的(如您所料)。 每个人都有购买产品的个人“亲和力”(为简化起见,假设整个问题只涉及一种产品)。
在时间的每一个“步骤”中,每个人都独立地选择是否购买产品。 这里涉及概率。考虑了几个参数:
-
他对产品的个人亲和力,
他的朋友已经购买了该产品的百分比
购买产品的人的收益是 1 美元。
问题是指出将在第 0 步中收到产品的 X 人(比如说 5 人),并在 Y 步(比如说 10 步)后最大化收益的总期望值
网络很大。用幼稚的方式模拟所有选项是不可能的。
我应该使用什么工具/库/算法?
谢谢。
附: 在 google 和 wikipedia 上调查这件事时,不断出现几个术语:
动态网络分析 疫情模型但这并没有帮助我找到答案
【问题讨论】:
如果我已经购买了该产品会怎样?我完成了,还是我可以买第二个?拥有一个或多个产品实例会影响我的购买概率吗?如果我可以购买多个,这对我的朋友有什么影响? (我算二还是一?) 嗨!你只能买一个,一旦你买了一个 - 你就完成了。 (我认为这涵盖了所有问题)。 鉴于网络的巨大规模,您能说一下您正在寻找什么样的时间复杂度吗?如果您正在寻找线性时间,即根据每个节点的本地环境做出决定,您可能必须使用某种启发式方法。 启发式可能是要走的路,是的。对时间复杂度没有具体要求 【参考方案1】:一般来说,拥有最多邻居的人在购买东西时影响最大。
所以我的启发式方法是首先按人们拥有的邻居数量(按降序排列),然后按每个邻居拥有的邻居数量(按从高到低的顺序)对人们进行排序,依此类推。您将需要最多 Y 级的邻居计数,但实际上更少可能就足够了。然后只需选择此列表中的前 X 人。
这只是一种启发式方法,因为例如如果一个人有很多邻居,但他们中的大多数或全部可能已经通过其他联系购买了该产品,那么选择另一个邻居较少但其邻居不太可能已经拥有该产品的人可能会产生更高的期望产品。
您不需要构建整个列表然后对其进行排序;您可以构建列表,然后将每个项目插入heap,然后只提取得分最高的 X 人。如果 X 很小,这会快得多。
如果 X 和 Y 与您建议的一样低,那么此计算将非常快,因此值得重复运行,而不是从拥有产品的前 X 人开始,对于每次运行,您随机选择初始 X 所有者的概率取决于他们在列表中的位置(列表越靠下,概率越低)。
【讨论】:
社交网络图中节点的“中心性”有几种类型:度中心性(您建议的“邻居数”),接近中心性(节点越中心降低其到所有其他节点的总距离),介数中心性(之间的中心性量化了一个节点作为两个其他节点之间最短路径的桥梁的次数)等等。我不确定正确的方法是学位中心性。 所以也尝试按照其他中心性标准对人们进行排序,看看哪个标准会做得更好:)【参考方案2】:查看submodularity 的概念,这是一个非常强大的数学概念。特别是,请查看 幻灯片 19,其中子模块用于回答“给定社交图谱,谁应该获得免费手机?”这个问题。如果您有访问权限,还请阅读corresponding paper。这应该让你开始。
【讨论】:
看起来确实很有趣。你知道这是否有一些实现吗? 有 SFO,一个用于子模块函数优化的 Matlab/Octave 工具包。简要描述了in this paper。以上是关于以概率最大化社交网络中的预期收益的主要内容,如果未能解决你的问题,请参考以下文章