蓄水池抽样

蓄水池抽样,首先有它的应用和它的神奇之处,其次这个也是机器学习领域面试的热门试题。

问题一(引子):流式数据(Streaming Data),数据长度为n但不知道,如何从中等概率随机选择一个数据?

解法: 我们以概率1选择第一个数据,以1/2的概率选择第二个数据,以此类推,以1/m的概率选择第m个对象(如果后面某一数据一旦选中,替换掉以前选中的数据)。当所有数据流过时,每个对象具有相同的被选中的概率1/n。

证明: 第m个数据最终被选中的概率P = 选择m的概率*其后的所有对象都不被选中的概率,即
P m = 1 m × ( m m + 1 × m + 1 m + 2 × ⋯ × n − 1 n ) = 1 n P_m=\frac{1}{m}\times(\frac{m}{m+1}\times\frac{m+1}{m+2}\times\cdots\times\frac{n-1}{n})=\frac{1}{n} Pm=m1×(m+1m×m+2m+1××nn1)=n1

问题二(蓄水池抽样):流式数据(Streaming Data),数据长度为n但不知道,如何从中等概率随机选择k(k < n)个数据?

解法: 先选中前k个数据(当作一个蓄水池),然后以k/(k+1)的概率选择第k+1个数据,以k/(k+2)的概率选择第k+2个数据,以此类推以k/m的概率选择第m个数据,一旦后面有某个数据被选中,则随机替换蓄水池中的一个数据。最终每个数据被选中的概率均为k/n。

证明: 第m个数据选中的概率 = 选择第m个数据的概率其后所有数据(不被选中的概率+被选中的概率不替换第m个数据的概率)
公式推导

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值