¿Cuáles son algunas buenas implementaciones de LSH?

Pitón:

  1. datasketch – MinHash LSH para búsqueda de similitud. Utiliza un módulo separado para MinHash y LSH, y no necesita vectorizar sus datos. También proporciona una implementación para Weighted MinHash. La mejor opción si está interesado en mejorar la búsqueda de documentos / texto / huellas digitales en su aplicación.
  2. NearPy: LSH básico para L2, Cosine y métrica CityBlock. Es la mejor opción para Python si sus datos son vectoriales. Incluso viene con una opción de almacenamiento externo para sus datos.
  3. scikit-learn – Bosque LSH para la métrica coseno vectorial. El código está bien mantenido. No estoy seguro de por qué otras métricas no están disponibles. Sus datos deben ser vectores. Debería tener una mejor precisión de recuperación que NearPy, ya que está utilizando LSH Forest en lugar de LSH básico.
  4. minhashcuda: MinHash ponderado en CUDA, con API de Python.

C ++:

  1. lshkit: LSH de múltiples sondas para métrica L2, de los autores originales de Multi-probe. Aunque la base del código no parece mantenerse durante mucho tiempo.
  2. flann: LSH de múltiples sondas para métrica L2, utiliza una versión aproximada del algoritmo de generación de vectores de perturbación. Se supone que esta es la implementación más rápida para C ++.
  3. opencv: contiene una versión anterior de flann. Esta es la mejor opción para C ++ ya que el código es mantenido por una comunidad y los problemas de compilación generalmente se resuelven.
  4. barra oblicua – LSH esférico
  5. E2 LSH – LSH para métrica L2 con optimización de parámetros. Este es un trabajo más académico. No estoy seguro si se mantiene el código.

Golang:

  1. lsh: LSH de múltiples sondas, bosque de LSH y LSH básico para métrica L2 (euclidiana). Es la mejor opción si le preocupa tanto la velocidad como la precisión, pero no quiere lidiar con los dolores de cabeza que conlleva C ++.
  2. lshensemble: este es un nuevo LSH que le permite realizar búsquedas de contención en conjuntos. La contención es una mejor métrica que la similitud de Jaccard cuando su objetivo es encontrar conjuntos que tengan una superposición alta con su conjunto de consultas.

El enfoque recientemente propuesto en NIPS 2015 es una variante de múltiples capas del politopo cruzado LSH. Han demostrado que es 10 veces más rápido que el enfoque basado en el hiperplano (que es el enfoque más popular)

“LSH práctico y óptimo para la distancia angular” por A. Andoni, P. Indyk, T. Laarhoven, I. Razenshteyn y L. Schmidt, NIPS 2015, versión completa disponible en arXiv: 1509.02897.

Su implementación está disponible como biblioteca FALCONN. Búsqueda de similitud en datos de alta dimensión

Pitón

  1. lshash 0.0.4dev: Índice del paquete Python
  2. NearPy – ANN en Python

C ++

  1. RSIA-LIESMARS-WHU / LSHBOX

More Interesting

¿Cuáles son algunos de los algoritmos más ingeniosos en informática? Bonificación si el algoritmo se ejecuta en tiempo constante.

¿Cuáles son los mejores documentos / recursos en algoritmos distribuidos?

¿Se ha saturado el alcance de la investigación para sistemas operativos y desarrollo de kernel?

¿Cuáles son los temas de investigación más importantes en el campo de Big Data?

Computational Science (Scientific Computing): ¿Cuál es el alcance de un estudiante de física BS interesado en CS y programación?

¿Cuáles son algunos temas de investigación recientes sobre diseño de máquinas?

¿Qué son las arquitecturas CISC y RISC? ¿Cómo se diferencian entre sí?

¿Dónde se debe comenzar en la visión por computadora?

¿Las buenas actuaciones en los cursos de Coursera / Udacity / edX ayudan al solicitar un programa de maestría en las mejores universidades de los Estados Unidos?

¿Qué pasa si Google toma el trabajo de investigación que estoy haciendo? ¿Qué tengo que hacer?

¿Se puede crear un programa de computadora que determine la validez de un argumento racional de acuerdo con la lógica?

¿Fue la sofisticación de los algoritmos o los límites del poder computacional lo que limitó la investigación de IA en los años 70 y 80?

Cómo equilibrar el estudio y la investigación para el mismo campo.

¿Qué significaría si P = NP? ¿Cómo podrías intentar probarlo? ¿Cómo cambiaría el mundo?

¿Cuánto tiempo llevará desarrollar un nuevo lenguaje desde C?