“优先级抽样在固定容量下按w/U挑选记录,以第k+1优先级为随机阈值,入选贡献取原权重与阈值的较大者。无偏性先条件于其它记录的随机键,不能把实现读出的随机阈值直接当成已知无条件纳入概率;容量一…”
形式陈述
一份样本,事后查询固定的属性子集
有 n 条不同身份的记录,每条记录 i 有固定正实权重
容量 k 为正整数。对每条记录产生相互独立的
为每个原记录定义估计贡献
对子集 I 输出
Horvitz–Thompson估计用逆纳入概率补偿缺席。这里也有这一思想,但计算出的
零权记录对所有目标总量贡献均为零,本接口直接忽略它们,n因此计正权记录数。负权不进入本页定义;若另以绝对值抽样并估计带符号量,需要单独指定贡献公式。
不相关贡献和可计算的方差估计
当
这里不相关的是加权后的随机贡献,入选指示变量并不独立。
直觉
暂时拿走一条记录,门槛就不再依赖它
固定所有
若
这个证明解释了阈值修正的作用。较小记录经常缺席,偶尔入选时被提高到门槛;较重记录若本来就高于门槛,无须放大。把入选后的原权重直接相加,会漏掉缺席记录应有的平均贡献。
为什么需要多保留一名
用一个容量 k+1 的最小二叉堆维护最大优先级,堆顶是这 k+1 项中最低者。读新记录时,堆没满就加入;满后只在新优先级更大时替换堆顶。处理任意前缀后,堆包含该前缀的前 k+1 名,这是普通截断极值不变量。
最终最高 k 项参与查询,额外一项只提供
记录若在两片重复,不能直接拼堆。即使同ID共用 U,不同片给出的权重也未必是同一最终权重;合并部分计数会改变优先级。本文附件的 merge_disjoint 明确要求互斥ID,既不猜测重放含义,也不暗中保存全体已见ID。
方差与两项乘积也可在条件下算清
仍固定除i外的随机数。写
入选时报告
对不同 i、j 且
零门槛按必入选处理。这里使用
例子与边界
四条记录的完整阈值账
取k=2,依次读入:
| ID | 原权重w | 固定随机数U | 优先级q |
|---|---|---|---|
| 0 | 2 | 1/2 | 4 |
| 1 | 5 | 1/2 | 10 |
| 2 | 1 | 1/5 | 5 |
| 3 | 3 | 3/4 | 4 |
前三条后,堆保存优先级4、10、5。第四条与ID0并列,按较小ID优先的规则不替换;最高两条为ID1、2,
ID1的估计贡献为5,ID2为4,总量估计9,而真实总量11。若查询事先确定的子集
固定子集不等于看完抽样再挑获利者
协议为某个固定值、记录日期落在某段区间,或由独立外部资料确定的类别,都可以在摘要生成后才提出查询。证明不要求早就知道查询名称,而要求集合成员身份不依赖这次抽样的 U。
若看完样本后把 I 定义为“恰好入选的那些ID”,I已经是随机输出的一部分。逐项证明对固定系数求和,不能自动推广成任意依赖样本的选择规则;尤其不能只挑估计贡献最大的属性组合,然后仍把它当作预先固定查询的无偏比较。
有限随机网格会让轻项永远没有机会
设两条权重为1、4,k=1,却让每个 U 只能等概率取1/3、2/3。轻项优先级至多3,重项至少6,所以轻项永不入选,估计期望为0而非1。确定破并列也无法修补这个例子,因为根本没有并列。
因此附件用有理数做堆轨迹和门槛积分,并没有声称有限网格就是理想连续模型。工程浮点或有限位随机源若要获得量化误差界,需要把可取最小 U、舍入和权重动态范围另行纳入分析。
容量一的无穷方差不是实现异常
k=1时,
k≥2时,
推论与应用
堆成本与数值模型
在实数算术和比较按单位成本的模型下,每条记录至多一次
附件为清楚输出名次,会先把堆排序,因此 estimates() 实际花
权重聚合是抽样之前的决定
若目标是每个不同键的总字节数,必须先得到该键固定总权重,再给它一个 U;若目标单位是每条事件,则每条事件必须有不同ID。两种对象均可采用本构造,但不能在同一ID上不断重抽U,或把局部权重的优先级摘要直接当成聚合权重的摘要。
删除或减轻一个保留项后,可能需要补回此前丢弃的第 k+2 名,本状态无法恢复它。共享随机键可以支持正确分片协调,却不会凭空补出没有保存的数据。
共享随机键终结任务要求报告第 k+1 名、固定子集估计、无偏性条件积分及有限网格反例;另将两份互斥ID流的合并堆与集中排序逐项比较。
参考资料
[1] Nick Duffield、Carsten Lund、Mikkel Thorup,Priority Sampling for Estimation of Arbitrary Subset Sums,作者预印本cs/0509026;正式刊载JACM 54(6),2007。§2给出条件阈值无偏性,§§2.3–2.5讨论方差与协方差。本文采用基础k+1堆实现,不援引论文后部更精细的流式时间改进;有限网格反例、堆不变量和两项条件乘积在本页独立展开。