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.
(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))
Duas questões:
- Existe uma maneira de ainda usar o índice Jaccard sem a complexidade ?
- Existe uma maneira melhor de calcular a semelhança / exclusividade de conjuntos em um grupo de conjuntos do que a sugerida acima?
fonte
Respostas:
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
fonte
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.
fonte