淳朴的大数据抽样方法

来源:互联网 发布:英语听力app 知乎 编辑:程序博客网 时间:2024/05/02 02:37

方法不是我原创的,只是学习了别人的方法,用自己的语言总结一下。


问题描述:

超大数据,随机等概率抽取m个样本,如何进行?


问题分析:

问题在于一开始并不知道数据规模,如果知道数据的数量n,自然可以以m/n的概率对每一个逐条读入的数据选择是否抽取。


解决方案:

逐条读入数据,

1. 1~m条数据,均存入待定数组(数组定长m)

2. 读到于第k条数据时

- 第k条数据选中的概率为: m/k

- 对于原来待定数组中的数据,随机选择一条,替换为新数据(第k条数据)


证明:

1. 前m条数据

被第K条数据替换的概率为: 1/m * m/k = 1/k = k-1/k, k = m+1, m+2, ... , n

所以最终被选中的概率为:

(m / m + 1) * (m + 1/m+2)* .... * (n - 1 / n) = m /k

2. m + 1, m+2, ...n这些后续数据(和上面差不多,偷懒不写了)

原创粉丝点击