Definir semelhança - Calcular o índice Jaccard sem complexidade quadrática

14

Eu tenho um grupo de n conjuntos para os quais preciso calcular um tipo de valor de "exclusividade" ou "similaridade". Eu estabeleci o índice Jaccard como uma métrica adequada. Infelizmente, o índice Jaccard opera apenas em dois conjuntos por vez. Para calcular a semelhança entre todos os conjuntos, será necessário na ordem dos n 2 cálculos de Jaccard.nn2

(Se ajudar, é geralmente entre 10 e 10000, e cada conjunto contém, em média, 500 elementos. Além disso, no final, não me importo com a semelhança de dois conjuntos específicos - em vez disso, apenas me importo com a semelhança interna. de todo o grupo de conjuntos é (em outras palavras, a média (ou pelo menos uma aproximação suficientemente precisa da média) de todos os índices de Jaccard no grupo))n

Duas questões:

  1. Existe uma maneira de ainda usar o índice Jaccard sem a complexidade ?n2
  2. Existe uma maneira melhor de calcular a semelhança / exclusividade de conjuntos em um grupo de conjuntos do que a sugerida acima?
rinogo
fonte
Você poderia primeiro esclarecer o que você quer dizer com "semelhança interna"?
Suresh
Em outras palavras, a média (ou pelo menos uma aproximação suficientemente precisa da média) de todos os índices de Jaccard no grupo.
5
Se você estiver disposto a aproximar a resposta, poderá usar o hash minúsculo para estimar a distância Jaccard aproximadamente e usar a representação resultante para calcular a média desejada.
Suresh
6
Não sei o que você quer dizer com “suficientemente preciso”, mas uma maneira de estimar a média de muitas coisas é apenas computar várias delas (os índices Jaccard de vários pares de conjuntos nesse caso) aleatoriamente e calcular sua média. Em seguida, você pode usar o limite de Chernoff para obter um limite superior na probabilidade de que essa estimativa esteja longe da média real.
Tsuyoshi Ito

Respostas:

4

Uma opção seria usar o Esquema de assinatura de [1], filtragem baseada em tamanho : um esquema que usa informações de tamanho para reduzir o número de pares de conjuntos que precisam ser considerados.

Eles também experimentam uma forma ponderada; onde os pesos são baseados em IDF.

[1] Arasu, Arvind, Venkatesh Ganti e Raghav Kaushik. “Junta-se a similaridade exata eficiente de conjuntos.” Nos Anais da 32ª Conferência Internacional sobre Bases de Dados Muito Grandes, 918–929. VLDB '06. Dotação do VLDB, 2006

AT
fonte
Esse link parece ter morrido. Considere atualizá-lo para vldb.org/conf/2006/p918-arasu.pdf .
Jrandom_hacker
0

Outra opção seria empregar o link wiki de hash de sensibilidade local . Eu já vi isso sendo usado na detecção de similaridade da comunidade por Wu e Zou ( um método incremental de detecção da comunidade para sistemas de marcação social usando hash sensível à localidade , Neural Networks 58: 14–28; ACM DL ), que basicamente detecta similaridade entre números inteiros ou conjuntos de strings.

dinos66
fonte
1
Resuma o conteúdo dos links e cite o artigo. Se os links ficarem obsoletos, a resposta atual será inútil.
vonbrand