Algoritmos de agrupamento de gráficos que consideram pesos negativos


8

Eu tenho uma instância de gráfico com arestas direcionadas ponderadas cujos valores podem estar no intervalo [-1,1]. Eu preciso fazer cluster neste gráfico, a fim de descobrir grupos nos quais os vértices estão mais correlacionados.

Procurei vários algoritmos baseados em gráficos de cluster ou de detecção de comunidade, mas a maioria deles não funciona devido aos pesos negativos. Até agora, apliquei o algoritmo spinglass (é chamado na biblioteca igraph , é um algoritmo baseado no modelo de Potts) que parece funcionar com pesos positivos e negativos.

Existem outros algoritmos para fazer cluster ou detecção da comunidade em gráficos com pesos de borda negativos e positivos?

Atualização: os pesos das arestas representam correlações, 1 significa que dois vértices estão fortemente correlacionados, -1 que são inversamente correlacionados e 0 significa que são independentes.


O que os pesos representam?
— Eliasah 18/10/2015

@eliasah eu fiz uma atualização, a fim de explicar que
— Ewybe

Você tentou usar outra balança? Essa pode ser uma boa solução usando um método regular de clustering baseado no algoritmo de centralidade de intermediação, por exemplo.
— Eliasah 18/10/2015

@eliasah Escala estes dados imay não ser tão fácil, porque eu estou interessado em preservar o significado da correlação
— Ewybe

1
Para o agrupamento, o sinal da correlação é realmente necessário? A correlação inversa também é um relacionamento bastante forte . Veja minha resposta abaixo.
— QuIT - Anony-Mousse

Respostas:


2

Você já tentou mapear os valores para [0; 2]?

Então, muitos algoritmos podem funcionar.

Considere, por exemplo, Dijkstra: ele requer pesos de borda não negativos, mas se você souber o mínimo adas bordas, poderá executá-lo x-ae obter o caminho mais curto sem ciclo.

Atualização: para valores de correlação, você pode estar interessado nos valores absolutos abs(x)(que é a força da correlação!) Ou pode dividir o gráfico em dois temporariamente: primeiro cluster apenas nas correlações positivas, depois nas correlações negativas somente se o sinal for importante para o cluster e as abordagens anteriores não funcionarem.


Foi de alguma forma o que sugeri, ele disse que "perderá o significado da correlação". O que você acha disso?
— Eliasah 18/10/2015

Com sua descrição atualizada, abs (x) pode funcionar ainda melhor.
— Quit - Anony-Mousse

No entanto, acredito que [0,2] é mais representativo. Gráficos Ponderadas geralmente têm importância muito grande sobre estes assuntos para centralidade de computação, distância, diâmetro, etc.
— eliasah

1
Isso não significa que você não pode discriminar depois. Você já tentou , os resultados ainda podem ser úteis?
— Quit - Anony-Mousse

1
Em seguida, tente a outra abordagem - encontrar cluster positivo e negativo separadamente.
— Quit - Anony-Mousse

1

Sim, existe um algoritmo chamado 'Propagação de afinidade' que funciona com pesos negativos; Acredito que isso seja implementado no sklearn (veja a documentação aqui ). Uma referência para o que está acontecendo nos bastidores pode ser encontrada aqui .

Espero que seja isso que você está procurando!


Eu não conhecia esse algoritmo, parece ser uma boa solução. Eu certamente vou tentar. Obrigado.
— Ewybe

Até onde eu sei, o agrupamento por Propagação por Afinidade não será capaz de considerar simultaneamente correlações positivas e negativas enquanto também as separa. A propósito, acho que a tarefa é contraditória.
— micans

0

Parece-me que o problema que você descreve é ​​conhecido como o problema de cluster de correlação . Esta informação deve ajudá-lo a encontrar algumas implementações, como:

Nota alguns algoritmos de detecção de comunidade também foram modificados a fim de processar redes assinados, por exemplo Amelio'13 , Sharma'12 , Anchuri'12 , etc. No entanto, eu não poderia encontrar qualquer implementação publicamente disponível.


0

Dê uma olhada neste código , é bastante escalável, trabalha com arestas positivas e negativas e resolve o Correlation Clustering (CC) como um caso especial (r = 0). No entanto, no caso do CC (maximização de links positivos e minimização de links negativos dentro de clusters), eu sugeriria outros métodos especializados em resolver esse objetivo.

Para ilustrar, o Correlation Clustering (ao contrário do que a literatura de Detecção da Comunidade busca) não leva em consideração a densidade positiva dos clusters; portanto, quando uma rede não tem ou tem poucos vínculos negativos (na maioria dos casos do mundo real), toda a rede é colocada em um único grupo.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.