3 ms·
By the way, https://github.com/FALCONN-LIB/FALCONN https://github.com/FALCONN-LIB/FALCONN contains a really good LSH implementation. Also see https://www.mit.ed
by gajjanag 4y ago
By the way, https://github.com/FALCONN-LIB/FALCONN https://github.com/FALCONN-LIB/FALCONN contains a really good LSH implementation. Also see https://www.mit.edu/~andoni/LSH/ https://www.mit.edu/~andoni/LSH/ if you want to know more about the research literature.
The fastest way for Euclidean space that I know that works well in practice is via Leech lattice decoding: https://www.semanticscholar.org/paper/Maximum-likelihood-decoding-of-the-Leech-lattice-Vardy-Be%E2%80%99ery/992c26e1097c9563f57a27968cb6767e7f06b14e https://www.semanticscholar.org/paper/Maximum-likelihood-dec... , or https://www.semanticscholar.org/paper/Efficient-bounded-distance-decoding-of-the-hexacode-Amrani-Be%E2%80%99ery/1dffa91f5f0e600168856c6e7d6dd2b53d4335c5 https://www.semanticscholar.org/paper/Efficient-bounded-dist... .
It is possible to create an implementation based on the above that decodes 24 dimensional points to the closest Leech lattice vector in < 1 microsecond per point on my AMD Ryzen laptop. Combine with some fast random projections/Johnson Lindenstrauss as described in the article to form the LSH.
This LSH family is unfortunately not present in FALCONN, but the alternatives in FALCONN are pretty good.
Source: thought extensively about LSH for my PhD.
- deleted 4y ago[deleted]
- sendfoods 4y agoFALCONN doesn't look maintained, unfortunately