Articulo de referencia

SimHash

En informática , SimHash es una técnica para estimar rápidamente la similitud entre dos conjuntos de datos. El algoritmo es utilizado por el rastreador de Google para encontrar ...

En informática , SimHash es una técnica para estimar rápidamente la similitud entre dos conjuntos de datos. El algoritmo es utilizado por el rastreador de Google para encontrar páginas casi idénticas. Fue creado por Moses Charikar . En 2021, Google anunció su intención de utilizar también el algoritmo en su sistema FLoC (Federated Learning of Cohorts) , de reciente creación. [ 1 ]

Implementación

Una función hash asigna datos arbitrarios a salidas de tamaño fijo. Al aplicar la función hash a los mismos datos, se obtiene el mismo resultado cada vez; una salida hash diferente implica una entrada distinta. Esto, junto con su tamaño fijo, hace que las funciones hash sean útiles para comparar grandes conjuntos de datos. Sin embargo, pequeñas diferencias en los datos de entrada pueden generar hashes significativamente diferentes. La comparación de hashes es una señal binaria (diferente o no), en lugar de una medida de similitud continua .

En cambio, SimHash crea hashes que producen hashes similares para datos de entrada similares, medidos como la distancia de Hamming bit a bit entre valores. Esto significa que SimHash no solo indica si dos entradas son diferentes o no, sino también su grado de diferencia, a diferencia de otras funciones de hash.

La función opera dividiendo primero los datos de entrada en un conjunto de características . Cada característica del conjunto se somete a una función hash. El hash final se define restando, para cada bit dentro de los hashes de entrada, el número de hashes donde el bit no está activado (0) del número de hashes donde el bit está activado (1). Para los índices del hash donde la diferencia es positiva, el bit está activado. Para los índices con un mayor número de bits no activados, el bit en ese índice del hash final no está activado. [ 2 ]

En otras palabras, cada bit del SimHash de un dato se activa si, para cada hash del conjunto de características de ese dato, la suma de los bits en ese índice es mayor que la suma de la negación bit a bit de los bits en ese índice.

Casos de uso

Como resultado, dos conjuntos de datos con conjuntos de características similares tendrán hashes que difieren menos que los datos donde los conjuntos de características divergen más. Además, "si la distancia de Hamming bit a bit de SimHash de dos frases es baja, entonces su coeficiente de Jaccard es alto". [ 3 ] Esto permite eficiencias que incluyen una clasificación más eficiente (al comparar los SimHashes de los objetos, en lugar del objeto completo) y un descubrimiento más rápido de objetos similares al ordenar una lista y comparar objetos adyacentes en lugar del cálculo O(n^2) de cada comparación en la lista. [ 4 ]

Evaluación y puntos de referencia

Google realizó una evaluación a gran escala en 2006 [ 5 ] para comparar el rendimiento de los algoritmos Minhash y Simhash [ 6 ] . En 2007, Google informó del uso de Simhash para la detección de duplicados en el rastreo web [ 7 ] y del uso de Minhash y LSH para la personalización de Google News [ 8 ] .

Véase también

Referencias

  1. Cyphers, Bennett (2021-03-03). "El FLoC de Google es una idea terrible" . Electronic Frontier Foundation . Recuperado el 2021-04-13 .
  2. Kelcey, Mat (2009), "Parte 3: El algoritmo simhash", Brain of Mat Kelcey....
  3. Kelcey, Mat (2009), "Parte 3: El algoritmo simhash", Brain of Mat Kelcey....
  4. Kelcey, Mat (2009), "Parte 3: El algoritmo simhash", Brain of Mat Kelcey....
  5. Henzinger, Monika (2006), "Finding near-duplicate web pages: a large-scale evaluation of algorithms", Proceedings of the 29th Annual International ACM SIGIR Conference on Research and Development in Information Retrieval , p. 284, doi : 10.1145/1148170.1148222 , ISBN  978-1595933690, S2CID 207160068 .
  6. Charikar, Moses S. (2002), "Técnicas de estimación de similitud a partir de algoritmos de redondeo", Actas del 34.º Simposio Anual de la ACM sobre Teoría de la Computación , págs. 380–388 , doi : 10.1145/509907.509965 , ISBN  978-1581134957, S2CID 4229473 .
  7. Gurmeet Singh, Manku; Jain, Arvind; Das Sarma, Anish (2007), "Detección de duplicados cercanos para el rastreo web", Actas de la 16.ª Conferencia Internacional sobre la World Wide Web (PDF) , pág. 141, doi : 10.1145/1242572.1242592 , ISBN  9781595936547.
  8. Das, Abhinandan S.; Datar, Mayur; Garg, Ashutosh; Rajaram, Shyam; et al. (2007), "Personalización de noticias de Google: filtrado colaborativo en línea escalable", Actas de la 16.ª Conferencia Internacional sobre la World Wide Web , pág. 271, doi : 10.1145/1242572.1242610 , ISBN   9781595936547, S2CID 207163129 .
  • Documento de Simhash Princeton
  • Simhash explicó
  • Comparación de MinHash vs. Simhash