Hash sensível à localidade
Goal: Encontrar documentos com similaridade Jaccard de pelo menos t
A ideia geral do LSH é encontrar um algoritmo tal que se introduzirmos assinaturas de 2 documentos, diz-nos que esses 2 documentos formam ou não um par candidato, ou seja, a sua similaridade é maior que um limiar t. Lembre-se que estamos a tomar a semelhança de assinaturas como um proxy para a semelhança Jaccard entre os documentos originais.
Especificamente para matriz de assinatura min-hash:
- Colunas de hash da matriz de assinatura M usando várias funções de hash
- Se 2 documentos tiverem hash no mesmo balde para pelo menos uma das funções de hash podemos tomar os 2 documentos como um par de candidatos
Agora a questão é como criar diferentes funções de hash. Para isso fazemos a partição de banda.
Partição de banda
Aqui está o algoritmo:
- Dividir a matriz de assinatura em bandas b, cada banda tendo r filas
- Para cada banda, hash sua parte de cada coluna para uma tabela de hash com k baldes
- Pares de colunas candidatos são aqueles que hash para o mesmo balde para pelo menos 1 banda
- Calcadas b e r para pegar a maioria dos pares semelhantes, mas poucos pares não semelhantes
Existem poucas considerações aqui. Idealmente para cada banda queremos tomar k para ser igual a todas as combinações possíveis de valores que uma coluna pode tomar dentro de uma banda. Isto será equivalente à correspondência de identidade. Mas desta forma, k será um número enorme que é computacionalmente inviável. Por ex: Se para uma banda temos 5 linhas nela. Agora se os elementos na assinatura são inteiros de 32 bits então k neste caso será (2³²)⁵ ~ 1.4615016e+48. Você pode ver qual é o problema aqui. Normalmente k é tomado em torno de 1 milhão.
A ideia é que se 2 documentos são semelhantes então eles aparecerão como par candidato em pelo menos uma das bandas.
Opção de b & r
Mala generalizada para qualquer b e r é mostrada abaixo.
Escolha b e r para obter a melhor curva S i.e taxa mínima de falsos negativos e falsos positivos
ResumoLSH
- Tune M, b, r para obter quase todos os pares de documentos com assinaturas semelhantes, mas eliminar a maioria dos pares que não têm assinaturas semelhantes
- Checar na memória principal que os pares candidatos realmente têm assinaturas semelhantes