Skip to main content
QUICK REVIEW

[論文レビュー] HyperMinHash: Jaccard index sketching in LogLog space.

Yun William Yu, Griffin M. Weber|arXiv (Cornell University)|Oct 23, 2017
Adversarial Robustness in Machine Learning被引用数 8
ひとこと要約

HyperMinHash は、1つのバケットあたり O(log l + log log |A ∪ B|) ビットのみを用いるストリーミング確率的スケッチであり、MinHash よりも大幅にストレージを削減しながら、2つの集合間の Jaccard 指数を推定する。64KiB のメモリを用いる場合、相対誤差が O(1/l + √(k/δ)) に抑えられ、10^19 要素までの集合についても正確な Jaccard 推定が可能となり、同じメモリ制約下で MinHash の 10^10 の上限をはるかに超える。

ABSTRACT

In this extended abstract, we describe and analyse a streaming probabilistic sketch, HYPERMINHASH, to estimate the Jaccard index (or Jaccard similarity coefficient) over two sets $A$ and $B$. HyperMinHash can be thought of as a compression of standard MinHash by building off of a HyperLogLog count-distinct sketch. Given Jaccard index $\delta$, using $k$ buckets of size $O(\log(l) + \log\log(|A \cup B|))$ (in practice, typically 2 bytes) per set, HyperMinHash streams over $A$ and $B$ and generates an estimate of the Jaccard index $\delta$ with error $O(1/l + \sqrt{k/\delta})$. This improves on the best previously known sketch, MinHash, which requires the same number of storage units (buckets), but using $O(\log(|A \cup B|))$ bit per bucket. For instance, our new algorithm allows estimating Jaccard indices of 0.01 for set cardinalities on the order of $10^{19}$ with relative error of around 5% using 64KiB of memory; the previous state-of-the-art MinHash can only estimate Jaccard indices for cardinalities of $10^{10}$ with the same memory consumption. Alternately, one can think of HyperMinHash as an augmentation of b-bit MinHash that enables streaming updates, unions, and cardinality estimation (and thus intersection cardinality by way of Jaccard), while using $\log\log$ extra bits.

研究の動機と目的

  • MinHash よりも大幅にメモリ使用量を削減したストリーミングスケッチを設計すること。
  • 限られたメモリで非常に大きな集合(最大 10^19 要素)の Jaccard インデックスを正確に推定できること。
  • 基数推定とユニオン操作を、コンactなストリーミング互換スケッチに統合すること。
  • MinHash の 1 バケットあたり O(log |A ∪ B|) ビットから、HyperMinHash では O(log l + log log |A ∪ B|) ビットに削減し、LogLog のメモリ使用量に近づけること。

提案手法

  • HyperMinHash は、標準 MinHash を、基数を効率的に追跡する HyperLogLog スタイルの count-distinct スケッチを組み込むことで圧縮する。
  • k 個のバケットを使用し、それぞれが O(log l + log log |A ∪ B|) ビットを格納する——通常は 1 バケットあたり 2 バイト——これにより、コンパクトなストレージが実現される。
  • アルゴリズムは集合 A と B をストリーミングで処理し、ハッシュ値を維持しながら、確率的計数法を用いて Jaccard 同一性を推定する。
  • HyperLogLog 推定器を活用して基数とインターセクションサイズを推定し、それらをもとに Jaccard インデックスを計算する。
  • スケッチはネイティブにストリーミング更新、ユニオン、基数推定をサポートし、b ビット MinHash 機能を拡張する。
  • 誤差バウンドは O(1/l + √(k/δ)) として導出され、l はハッシュ関数の数、k はバケット数である。

実験結果

リサーチクエスチョン

  • RQ1HyperLogLog のメモリ使用量に近づけつつ、MinHash の精度を維持するスケッチを設計できるか?
  • RQ2HyperLogLog 計数原理を用いて MinHash を圧縮した場合、達成可能な誤差バウンドは何か?
  • RQ3このスケッチは、同一のコンパクト構造内でストリーミング更新、ユニオン、基数推定をサポートできるか?
  • RQ4特に 10^10 要素を超える場合に、このアプローチのメモリ効率はどのように集合基数の増加に伴いスケーリングするか?

主な発見

  • 64KiB のメモリを用いて、10^19 要素までの集合の Jaccard インデックスを推定する際、相対誤差は約 5% に抑えられる(Jaccard 値が 0.01 の場合)。
  • この手法により、MinHash の 1 バケットあたり O(log |A ∪ B|) ビットから、HyperMinHash では O(log l + log log |A ∪ B|) ビットに削減され、顕著なメモリ節約が可能になる。
  • 同じ 64KiB のメモリ予算下では、HyperMinHash は 10^19 の集合基数をサポートできるが、MinHash は約 10^10 に制限される。
  • スケッチはネイティブにストリーミング更新、ユニオン、基数推定をサポートし、コンパクトな形で b ビット MinHash 機能を拡張する。
  • 誤差バウンド O(1/l + √(k/δ)) は、バケット数 k が増えるほど、および l が高くなるほど精度が向上することを示しており、低 Jaccard 値でも安定性を保つ。

より良い研究を、今すぐ始めましょう

論文設計から論文執筆まで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。