微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

最小计数草图是否比典型的稀疏矢量格式占用更少的空间?

如何解决最小计数草图是否比典型的稀疏矢量格式占用更少的空间?

最小计数草图是一种概率数据结构,用于有损存储多集中的计数。它接收更新(i,c),其中i是集合的元素,而c是该元素的非负数量,然后使用哈希函数执行巧妙的操作。 SO和其他地方对此进行了广泛讨论;这是原始论文(PDF)和Wikipedia article。基于我正在考虑的应用程序-单细胞基因组实验中计数数据的有损存储-假设ic都是整数。 i,c对意味着在给定的生物细胞中,i次检测到基因c

我的问题是,与这种数据类型更常用的稀疏矩阵格式相比,最小计数草图要占用多少内存。对于替代方案的简单示例,请考虑一个哈希表(例如Python词典),该表存储c的每个不同值以及i的对应值之和。如果在给定的细胞中观察到n个不同的基因,则这将占用O(n)空间。 This answer解释说,要存储n个不同基因的计数,最小计数草图还占用O(n)空间。 (这些基因的标识符以字符串数组的形式单独存储。)

我不明白为什么有人会为压缩似乎没有任何改善而引入如此多的复杂性。我还不了解此应用程序的特殊之处,当它可用于许多其他目的时,会使最小计数草图无效。所以:

  • 对于此应用程序,最小计数草图是否比典型的稀疏矩阵存储方案节省了空间?
  • 是否有任何应用程序的最小计数草图比典型的稀疏矩阵存储方案节省了空间?如果是这样,与该应用程序的主要区别是什么?

解决方法

最小计数草图主要(但并非总是)用在您要查找数据流中最频繁出现的项目的应用程序中。这个想法是,由于一个最小计数草图通常会人为地提高每个项目的视在频率​​,因此,如果一个项目具有较高的频率,那么当您从最小计数中获得估算值时,它似乎总是具有较高的频率草图,但是如果一件商品的频率较低,则其估算值会较大,但仍然偏低。

这使数分钟的草图成为了诸如在Google上查找最受欢迎的搜索或在Amazon上查看次数最多的商品之类的绝佳选择。与传统的哈希表相比,您可以配置一个最小计数草图以使用很少的空间-确切需要多少空间取决于您,因为您可以根据可用内存来调整准确性和置信度参数-并且仍然可以放心在估算中您会得到回报。

另一方面,如果您正在处理的应用程序中,存储所存储的每个项目的真实计数很重要,或者需要识别低频项目的应用程序,则需要一个最小计数草图并不能真正帮到您太多。为此,实际上您无能为力,无法改善哈希表。

请记住,通常来说,无法无损地压缩任意频率数据。最小计数草图可以很好地找到频繁的项目的原因是,它有可能损失所有低频元素的精确计数。这不适用于跟踪低频元素,因为通常情况下,低频元素要比高频元素多,而丢弃高频元素并不会减少数据量。

因此,您的问题的答案是“这取决于您在做什么”。如果您的应用程序需要精确的计数,而高估频率确实很不好,只需使用常规的哈希表即可。如果您只是在寻找最常见的基因,那么数分钟草图可能是个不错的选择。

,

作为对我自己问题的替代答案:我认为我误解了与之链接的答案。与我的问题的前提相反,它从未声明最小计数草图占用O(n)空间。空间要求取决于所需的精度。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。