问题标签 [hyperloglog]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
197 浏览

redis - HyperLogLog 的前导零是什么?

我正在阅读 antirez.com 和 Wikipedia 以及其他一些资源来了解 HLL 是什么以及它是如何工作的,但是每次使用“前导零”这个词时,我都会绊倒。当我们谈论 HyperLogLog 时,请解释它的含义。

0 投票
0 回答
573 浏览

sql - 在 mongodb 中创建 hyperloglog

我正在尝试在 mongodb 中编写 hyperloglog。mongodb中查询的等效版本(用oracle编写)是什么

0 投票
1 回答
136 浏览

mapreduce - 为什么 data.fu 将 HyperLogLog 实现为累加器而不是代数?

data.fu 有一个很好的 HyperLogLog 实现,用于在这里估计基数

但是,它的实现Accumulator意味着它只会在 reducer 中运行,而不是在 combiner 中运行(但它永远不会像往常一样将整个集合加载到内存中EvalFunc)。为什么 data.fu 不能将其实现为Algebraic- 并在每个组合器处填充寄存器,然后合并并减少结果?我在这里错过了什么吗?

0 投票
1 回答
461 浏览

hyperloglog - HyperLogLog 交集:为什么不使用 min?

在两个兼容的 HyperLogLog 对象之间进行并集时,您可以只取最大桶进行无损并集,不会引入任何新错误:

但是,在进行交集时,您必须使用包含-排除原则:

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

0 投票
1 回答
186 浏览

redis - Redis 中按类别、作者和日期分组的计数器

我正在实现一个在关系数据库中存储大量数据的系统。

数据可以分类并有作者。

我想获取按日期、类别和作者分组的项目数,以及按日期分组的每个类别的所有项目的总和。

系统必须接近实时。

例如(3 个类别、3 个作者、2 个日期)

结果:

大约有50个类别和大约50位作者。

如何在 redis 中建模这种行为?

0 投票
1 回答
125 浏览

mongodb - MongoDB中的原子概率计数和集合成员资格

我希望使用布隆过滤器和 hyperloglog 等结构进行概率计数和设置成员资格。我假设我可以将这样的结构存储为二进制数据,但我不想使用乐观锁定(也就是update if current),因为争用很高。

是否支持使用此类数据结构并在服务器端通过用户定义的函数或类似方法对它们执行原子操作?或者我有什么方法可以添加具有此类功能的扩展?

(我可以通过另一个系统获取数据并批量更新以减少争用,但如果所有这些都可以在数据库服务器中处理,那就简单多了。)

0 投票
1 回答
177 浏览

algorithm - 简单的基数估计算法

有 HyperLogLog 算法,但它相当复杂。

有没有更简单的节省空间的方法可以用几行代码来表达?

0 投票
2 回答
2921 浏览

hash - 在 Redis 中与巨大的 HyperLogLog 相交的最佳方法

问题很简单:我需要找到最佳策略来基于 Redis 的表示来实现准确的 HyperLogLog 联合——这包括在导出数据结构以供其他地方使用时处理它们的稀疏/密集表示。

两种策略

有两种策略,其中一种似乎非常简单。我查看了实际的 Redis 源代码,但我遇到了一些麻烦(我自己在 C 语言中并不大),从精度和效率的角度来看,使用他们的内置结构/例程或开发我自己的结构/例程是否更好. 对于它的价值,我愿意牺牲空间和一定程度的错误(stdev +-2%)来追求极大的集合效率。

一、包容原则

到目前为止,两者中最简单的——基本上我只会使用无损联合(PFMERGE)结合这个原则来计算重叠的估计值。测试似乎表明在许多情况下这种运行可靠,尽管我无法准确处理实际效率和准确性(某些情况下会产生 20-40% 的错误,这在这个用例中是不可接受的)。

基本上:

或者,在多组的情况下......

似乎在许多情况下都能以良好的准确性工作,但我不知道我是否相信它。虽然 Redis 有许多内置的低基数修饰符旨在规避已知的 HLL 问题,但我不知道在大小差异很大的集合中是否仍然存在疯狂不准确的问题(使用包含/排除)......

2. Jaccard索引交集/MinHash

这种方式似乎更有趣,但我的一部分感觉它可能在计算上与 Redis 的一些现有优化重叠(即,我没有从头开始实现我自己的 HLL 算法)。

使用这种方法,我将使用 MinHash 算法对 bin 进行随机采样(我认为 LSH 实现不值得麻烦)。这将是一个单独的结构,但通过使用 minhash 获取集合的 Jaccard 索引,您可以有效地将联合基数乘以该索引以获得更准确的计数。


问题是,我不太精通 HLL,虽然我很想深入研究 Google 论文,但我需要一个可行的实施方案。有可能我忽略了 Redis 现有优化的一些基本考虑因素,或者在算法本身允许计算成本低的交集估计和相当宽松的置信范围。

因此,我的问题:

如果我愿意牺牲空间(并在较小程度上牺牲准确性),如何使用 redis 最有效地获得 N 个巨大(十亿)集的计算成本低廉的交集估计?

0 投票
1 回答
185 浏览

algorithm - 交叉点计数的数据结构

我们有一个要求,我们必须在每个月的每一天,为各种组合(满足标准的用户)维护不同的计数。我们正在考虑为此使用 HyperLogLog,其他要求之一是为匹配条件(条件)提供联合和交集的计数。

我们必须在一天/一周/一个月内完成这些操作。据我所知,通过 hyperloglog 支持联合。对于超过 2 个 hyperloglog 的交叉点,错误率似乎很高。是否有任何其他数据结构可以用于交叉点,仅满足具有高基数的低空间要求,或者支持交叉点和联合以计算大的不同事件?

任何指针都会有所帮助。谢谢!!

0 投票
1 回答
166 浏览

apache-pig - 如何提高使用 Datafu 的 Hyperloglog 估计基数的 PIG 作业的性能?

我正在使用 Datafu 的 Hyperloglog UDF 来估计我的数据集中唯一 ID 的计数。在这种情况下,我有 3.2 亿个唯一 ID,它们可能会在我的数据集中多次出现。

这是我的代码:

使用 120 个减速器,我注意到其中大部分在几分钟内完成。然而,少数减速器因数据过载而永远运行。我在 24 小时后杀死了他们。

我认为 Hyperloglog 比计数更有效。这里出了什么问题?