首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HyperLogLog交叉口:为什么不使用min?

问HyperLogLog交叉口:为什么不使用min?
EN

Stack Overflow用户
提问于 2015-03-08 04:38:02
回答 1查看 529关注 0票数 2

在两个兼容的HyperLogLog对象之间进行联合时,只需使用最大桶即可完成不引入任何新错误的无损联合:

代码语言:javascript
复制
Union.Bucket[i] = Max(A.Bucket[i], B.Bucket[i])

但是,在执行交叉时,您必须使用包含排除原则:

代码语言:javascript
复制
IntersectionCountEstimate = A.CountEstimate() + B.CountEstimate() - Union.CountEstimate()

为什么使用最小桶值不能作为有效的交叉口工作?

代码语言:javascript
复制
Intersection.Bucket[i] = Min(A.Bucket[i], B.Bucket[i])
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-08-16 12:56:22

原因是HyperLogLog统计数据的两个实例之间的关系不是很直观:

考虑来自不同的HyperLogLog结构A和B的两个对应的桶Ai和Bi (它们具有相同的桶数并使用相同的散列函数),为了简单起见,假设A和B中的数据是从相同的分布中独立提取的。让我们假设我们首先绘制A的所有元素,然后再为B绘制元素。

对于我们观察到的到达Bi的每一个元素,A和B的交集中的概率是多少,即它已经在Ai中的概率是多少?那要看情况了--艾有多“饱”?如果Ai是完全“满”的(即,Ai包含“从分布中可以到达Ai的所有元素),则概率为1。在这种情况下,Ai和Bi的交集的基数确实是Bi的基数。然而,艾是“满”的,所以交集比Bi的基数小得多。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28923144

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档