你的位置:首页 > 数据库

[数据库]放回采样最终不同样本数量


作者:无影随想 
时间:2016年1月。 
出处:http://www.zhaokv.com/2016/01/sample-with-replacement-unique-number.html
声明:版权所有,转载请联系作者并注明出处

 

机器学习很多场景中会用到放回采样,比如bagging方法。采样后的数据集会有一些数据重复,一些数据缺失,从$N$个样本中采样$K$个样本,不同样本数量的期望为$U(K)=N(1-\left(\frac{N-1}{N}\right)^K)$。怎么来的呢?这里给出简单的证明。

首先,显然有$U(1)=1$;其次,设从$N$个样本中采样$k-1$个样本,不同样本数量的期望为$U(k-1)$,则第$k$个样本是未曾抽到的样本的概率为$1-\frac{U(k-1)}{N}$,所以$U(k)=1+\frac{N-1}{N}U(k-1)$$=1+\frac{N-1}{N}+\left(\frac{N-1}{N}\right)^2+\cdots+\left(\frac{N-1}{N}\right)^{k-1}$,根据等比数列求和公式得$U(K)=N(1-\left(\frac{N-1}{N}\right)^K)$。

对于一种特殊情况,当$K=N$且$N$足够大时,则有最终不同样本数量是原始样本数量的期望为$(1-\frac{1}{e})$,大约是$\frac{2}{3}$。

可以通过一段Python程序来验证结论的正确性:

1 import random, math2 3 S = set()4 N = 100000005 [S.add(random.randint(1,N)) for i in range(N)]6 print(len(S), int(N*(1-1/math.e)))

我得到的输出结果为

1 (6321214, 6321205)

当然,你的运行结果可能和上面有所差别。