Random 在聚合数据集上采样

Random 在聚合数据集上采样,random,statistics,probability,statistical-sampling,Random,Statistics,Probability,Statistical Sampling,输入是一个数据集,其中每一行都包含一个事件,例如单击。成员ID是唯一的ID。 样本数据: M1100 M2100 M3,50 M4,50 我们的目标是对1%的点击进行抽样,其中总点击量是通过对所有成员ID中的所有点击进行汇总得到的。 如果我希望在样本数据集上采样1%,我希望应用一种技术,随机采样点击次数并生成1%或3次点击,类似于: M1,1 M2,1 M4,1 或者其他一些组合,其中成员之间的点击总数为1% 一种基本方法是分解输入中的所有条目并将其作为数据,然后从中抽取1%的样本。如果有数百万

输入是一个数据集,其中每一行都包含一个事件,例如单击。成员ID是唯一的ID。 样本数据: M1100 M2100 M3,50 M4,50 我们的目标是对1%的点击进行抽样,其中总点击量是通过对所有成员ID中的所有点击进行汇总得到的。 如果我希望在样本数据集上采样1%,我希望应用一种技术,随机采样点击次数并生成1%或3次点击,类似于: M1,1 M2,1 M4,1 或者其他一些组合,其中成员之间的点击总数为1%


一种基本方法是分解输入中的所有条目并将其作为数据,然后从中抽取1%的样本。如果有数百万会员点击次数达到100次,这将非常缓慢/低效。在不需要数据爆炸的情况下寻找更好的解决方案

显然,要做的事情是从用户中取样,每个用户的概率与他们的点击次数成正比,然后为给定用户均匀随机地选择一次点击。在您给出的示例中,这意味着选择概率为100/300、100/300、50/300和50/300的用户,然后从给定用户中选择单击

通过生成介于0和1之间的随机数p,然后找到最小的k(k=1,2,3,…#权重),可以按权重比例采样(此处为100/300,100/300,50/300,50/300),从而使从1到k的权重之和小于或等于p

找到k的一种有效方法是构造一个权重部分和的列表(即0,w1,w1+w2,w1+w2+w3,…),然后在该列表上执行二进制搜索(非线性)。二进制搜索将产生每个样本的时间,该时间随权重数(您案例中的用户)对数增长,而线性搜索产生线性增长

编辑:一个例子。给定n=10个用户,分别有n=(100、160、200、20500、550、400、300、120、80)个事件。事件总数=2430,权重w=(10/243、16/243、20/243、2/243、50/243、55/243、40/243、10/81、4/81、8/243)。权重的部分和S=(0,10/243,26/243,46/243,16/81,98/243,17/27,193/243,223/243,235/243,1)。(注意:我以前搞错了;顺序应该是(0,w1,w1+w2,w1+w2+w3,…,w1+…+w[n-1],1)。)


给定一个介于0和1之间的随机数x,通过二进制搜索找到部分和的索引,这样我就找到了一种方法:在处理之前需要一些验证。你能用一个例子来说明吗?这一方法不太清楚,无法解释me@Disha我举了一个例子,希望这能有所帮助。