axiomhq/hyperminhash

HyperMinHash: Bringing intersections to HyperLogLog

View on GitHub ↗Jump to charts ↓

Summary Information

Updated 36 minutes ago
Added to GitGenius on July 28th, 2024
Created on November 17th, 2017
Open Issues & Pull Requests: 1 (+0)
Number of forks: 18
Total Stargazers: 308 (+0)
Total Subscribers: 5 (+0)

Repository Insights (GitGenius)

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 1
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 2,098 days
Stale 30+ days: 1
Stale 90+ days: 1

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

No label distribution available yet.

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

HyperMinHash is a probabilistic data structure for cardinality estimation and set similarity that extends HyperLogLog with intersection and similarity capabilities.

The tool solves the problem of estimating both the size of set intersections and the similarity between large datasets without storing the full datasets in memory. It implements a modified HyperLogLog using 16-bit registers instead of the standard 6 bits, with the additional 10 bits allocated to b-bit signatures. This design enables the estimation of Jaccard indices between sets, which represent the proportion of shared elements. The intersection cardinality is computed by applying the Jaccard index to the union of the sets.

The tool suits projects that need memory-efficient approximate answers about set overlap and similarity at scale. It is particularly valuable when working with streaming data or distributed systems where exact computation is infeasible. The implementation demonstrates accuracy around 5% for Jaccard index estimation on set cardinalities in the billions, as shown in the provided test results across cardinalities ranging from thousands to tens of millions.

The project maintains a straightforward, focused implementation with no external dependencies beyond Go's standard library. Development activity shows consistent attention to the core algorithm with empirical validation through comprehensive test tables demonstrating performance across multiple cardinality scales. The codebase remains compact and readable, reflecting a deliberate choice to keep the implementation simple rather than add auxiliary features.