【发布时间】:2013-08-10 20:39:24
【问题描述】:
此链接“http://had00b.blogspot.com/2013/07/random-subset-in-mapreduce.html”讨论了如何使用 map reduce 框架实现水库采样。我觉得他们的解决方案很复杂,以下更简单的方法会起作用。
问题: 给定非常多的样本,生成一个大小为 k 的集合,使得每个样本在集合中出现的概率相等。
建议的解决方案:
- 映射操作:对于每个输入数 n,输出 (i, n),其中 i 在 0 到 k-1 范围内随机选择。
- 减少操作:在所有具有相同键的数字中,随机选择一个。
声明: 任何数字在 k 大小的集合中的概率是 k/n(其中 n 是样本总数)
证明直觉:
由于 map 操作将每个输入样本随机分配给编号 i (0
如果我的解决方案看起来正确与否,我将不胜感激。
【问题讨论】: