- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 redis 中,我们将 hyperLogLog 设置为不同的元素。
众所周知,对于每个 key ,HLL 仅消耗 12kb 内存并产生标准误差为 0.81% 的近似值
因为我有太多要计算的元素。所以在这里我想通过将元素存储到多个 hll 键中来降低错误发生率(例如 "hll_key_%d"% (Element mod 1024) )
这实际上是降低错误的有效方法吗?或者其他什么方式实现?
最佳答案
这取决于。如果插入元素的数量明显大于 Redis 实现中的寄存器数量(2^14),则可以假设 HyperLogLogs 的错误呈正态分布。如果元素被平均分片到多个 HyperLogLog 上,并且每个 HyperLogLog 的元素数量仍然大于寄存器数量,则通过对所有 HyperLogLog 的基数估计求和得到的总基数估计将有更小的误差。
原因是平均数 M 和标准误差 S 的 N 个独立且正态分布的数字之和将服从平均数 N x M 和标准误差 S x SQRT(N) 的正态分布。因此,相对误差从 S/M 变为 S x SQRT(N)/(N x M) = S/(M x SQRT(N)),这对应于 SQRT(N) 的改进。
但是,这种分片方法不适用于任意数量的 HyperLogLog。一旦部分基数下降到寄存器数量以下,就会违反正态分布误差的假设,并且估计误差的改进将更小甚至可以忽略不计。
关于database - 有什么有效的方法可以减少 HyperLogLog ( redis ) 中的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51129066/
什么是基数估算 HyperLogLog 是一种基数估算算法。所谓基数估算,就是估算在一批数据中,不重复元素的个数有多少。 从数学上来说,基数估计这个问题的详细描述是:对于一个数据流 {x1,x2,…,
我最近在业余时间学习了不同的算法,我遇到了一个看起来非常有趣的算法,它被称为 HyperLogLog 算法 - 它估计列表中有多少个独特的项目。 这对我来说特别有趣,因为它让我回到了 MySQL 时代
我自己实现了 HyperLogLog algorithm .它运行良好,但有时我必须获取大量(大约 10k-100k)HLL 结构并合并它们。 我将它们中的每一个都存储为一个位串,所以首先我必须将每个
有那么多 Hyperloglog 实现,但是您如何验证/测试 Hyperloglog 实现?要检查它的“准确性”,它是“错误”绑定(bind)行为吗?只是扔一些静态测试用例看起来很无效。 更具体地说,
HyperLogLog 估计多重集的基数。是否可以扩展它来处理多个多重集?比如,它不仅支持查询 estimateCardinality(),还支持 estimateCardinality(multis
HyperLogLogFlajolet 等人的算法描述了一种估计基数的巧妙方法一组只使用少量内存。然而,它确实考虑到了在计算中考虑原始集合的所有 N 个元素。如果什么我们只能访问原始 N 的一小部分随
我有以下代码片段来测试我是否可以在 Redis 中添加 HLL 值,这个测试通过了,但是当我从 redis 命令行验证它时,我没有看到“HLLTEST”键,而是我发现了奇怪的键您可以从以下输出中看到。
我正在阅读 antirez.com 和维基百科以及其他一些资源以了解 HLL 是什么以及它是如何工作的,但每次使用术语“Leading Zeroes”时我都会犯错。当我们谈论 HyperLogLog
我正在研究 Redis 支持的数据结构,但找不到可以让我理解什么是 HyperLogLog 的解释。 我如何使用它,为什么它有好处? 最佳答案 基本上是一种 Redis Set,它使用优化的算法通过避
我们在 Algebird 中使用 Twitter 的 HyperLogLog 实现。给定一个数字 N 和我们系统中的一个检查,它使用 HyperLogLog 来估计一个逐渐增长的集合的当前大小并测试它
我们目前面临一个有趣的问题。我们想要估计一个集合的基数而不需要存储每一个项目(通常位图/位集是一个很好的方法)。一个非常好的算法是所谓的 HyperLogLog 随机算法(更多信息请参见此处 http
如果我想获取可添加和删除的元素列表中的唯一计数,有没有办法做到这一点? 例如 add key1 delete key1 add key1 应该给出一个唯一的计数 1 但是如果我有一个 2 hll 的简
关于 HyperLogLog 算法一直困扰我的一点是它对 key 散列的依赖。我遇到的问题是,这篇论文似乎假设我们在每个分区上都有一个完全随机的数据分布,但是在它经常使用的上下文中(MapReduce
redis HLL 是否有 SMEMBERS 的等价物我需要计算一个数组中的所有唯一元素,还需要获取唯一成员的列表PFADD & PFCOUNT 会给我计数。我将如何获得成员。 我想使用 PFADD
我试图在这里运行一个简单的代码,它只是使用 PFADD 操作将一个值插入到一个键中,但是我得到了这个错误: ResponseError: unknown command 'PFADD' 我的代码如下:
在 redis 中,我们将 hyperLogLog 设置为不同的元素。 众所周知,对于每个 key ,HLL 仅消耗 12kb 内存并产生标准误差为 0.81% 的近似值 因为我有太多要计算的元素。所
我对 Redis HyperLogLog 的工作原理以及何时使用它有一些基本的想法。 在使用它之前,我做了一个测试:我pfadd将一些连续的数字输入到一个 HLL 条目(以模拟用户 ID),Redis
我正在使用 HyperLogLog 的 Redis 实现来计算给定键的不同值。 键基于小时窗口。日历小时更改后,我想重置传入值的计数。我没有看到任何用于通过 Jedis ‘清除’值的直接 API。 S
我正在使用 redis-cli 学习 HyperLogLogs 示例 The redis-cli examples show how you can use HyperLogLog commands
HyperLogLog s占用12KB空间。我在文档中没有看到有关何时释放该存储空间的任何信息。 我目前的计划是调用EXPIRE每次我打电话PFADD ,但我找不到太多关于过期 HLL 的讨论,所以我
我是一名优秀的程序员,十分优秀!