Estrutura comunitária

Origem: Wikipédia, a enciclopédia livre.

Em ciência das redes, uma rede tem estrutura comunitária se os nós dessa rede podem ser divididos em conjuntos onde os nós são densamente conectados internamente. Esses conjuntos podem ter sobreposição ou serem disjuntos. No caso disjunto, é assumido que os nós são esparsamente conectados com os nós de outros conjuntos. De forma geral, é mais provável um nó em uma rede com estrutura comunitária tenha uma aresta com outro nó de sua(s) comunidade(s) do que outros nós na rede, em contraste com redes aleatórias onde todo par de nós tem a mesma chance de ter uma ligação.

Definição[editar | editar código-fonte]

Fig. 1: Ilustração de uma rede evidenciando estruturas comunitárias, onde há três grupos com interligações densas internamente e esparsas entre os grupos.

Comunidades disjuntas[editar | editar código-fonte]

Nessa seção, vamos considerar apenas estruturas de comunidade disjuntas. Os primeiros trabalhos sobre estrutura comunitária disjunta assumiam que as comunidades eram cliques[1]. De fato, cliques são subgrafos densos na rede, isso constitui uma comunidade. Por outro lado, definir comunidades somente como cliques é muito restritivo porque geralmente em redes complexas é raro cliques de número de nós superiores a três e podemos deixar de classificar comunidades legítimas[2]. Por exemplo, na Fig. 1 à direita, nenhuma das comunidades destacadas são cliques.

Para relaxar a definição de comunidades através de cliques, foram propostas duas definições: comunidades fortes e comunidades fracas[3]. Dada uma rede representada por um grafo , é denotado como o grau do vértice . Seja um subgrafo tal que , vamos chamar de o número de arestas conectado o nó com os nós em . E similarmente, o número de arestas conectando o nó com os nós não pertencentes a .

Comunidades fortes[editar | editar código-fonte]

O subgrafo é uma comunidade forte se

Em outras palavras, todo nó pertencente a uma comunidade forte tem mais ligações internas em relação a comunidade do que externas.

Comunidades fracas[editar | editar código-fonte]

O subgrafo é uma comunidade fraca se

Nas comunidades fracas, a soma de todos os graus internos de é maior que a soma dos graus externos. Note que todo clique é uma comunidade forte e toda comunidade forte também é uma comunidade fraca. Por outro lado, comunidades fracas nem sempre são comunidades fortes.

É possível observar que há diversas definições para comunidades, algumas mais restritivas como definir comunidades como cliques e outras menos, como comunidades fortes e fracas. Adicionalmente, há diversas outras formas de definir comunidades que podem ser mais apropriadas dependendo do contexto[4].

Modularidade[editar | editar código-fonte]

Em redes aleatórias, não é possível observar nenhum tipo de estrutura comunitária, pois é esperado que as chances de ligações ocorram de forma uniforme por todos os nós. Através dessa observação, é possível criar uma métrica de modularidade calculando a diferença do padrão de ligações com de uma rede aleatória. Dessa forma, é possível medir quantitativamente se uma partição tem estrutura de comunitária.

Vamos supor uma rede representada pelo grafo com a matriz de adjacência e uma partição da rede em comunidades . Note que é um subgrafo, vamos denotar como o número de links internos da comunidade e a soma do graus dos nós em em relação a . Para cada comunidade , podemos definir a diferença entre suas ligações em e o número esperado de ligações entre dois nós e caso a rede fosse aleatória:

Em uma rede aleatória, a probabilidade de dois nós e estarem conectados é
então, a modularidade da rede toda é
onde é caso os nós e pertencem a mesma comunidade e caso o contrário. Dessa forma, apenas os nós que estão na mesma comunidade serão considerados, então podemos reescrever a modularidade como
Quanto maior for a modularidade, melhor representa uma partição de em comunidades. Também, é sempre menor que 1[5][6].

Algoritmos para encontrar comunidades[editar | editar código-fonte]

Encontrar comunidades em uma rede arbitrária pode ser difícil computacionalmente. Normalmente, o número de comunidades é desconhecido a priori e as comunidades tem diferentes tamanhos e densidade de ligações. Apesar dessas dificuldades, algoritmos foram desenvolvidos com essa finalidade[7].

Método por corte mínimo[editar | editar código-fonte]

O método por corte mínimo, a rede é dividida em um número pré-determinado de comunidades, onde essas comunidades normalmente tem tamanhos iguais. Essas comunidades são escolhidas de tal forma que o número de arestas entre os grupos é minimizado. Esse método funciona bem para várias aplicações mas não tem resultados satisfatórios para redes no geral porque o método encontrará comunidades sem levar em consideração a estrutura implícita, pois o número de comunidades é sempre fixo[8].

Hierarchical clustering[editar | editar código-fonte]

Outro método para encontrar estruturas comunitárias é agrupamento hierárquico. Nesse método, é necessário uma medida de similidade quantificando algum tipo de similidade (normalmente topológica) entre par de nós. Algumas medidas utilizadas são similaridade por cosseno, índice de Jaccard e Distância de Hamming entre as linhas da matriz de adjacência. Então, são formadas as comunidades com nós similares levando em consideração essa métrica. Há diversos métodos para realizar o agrupamento desses nós, sendo um deles o clustering de ligação única, no qual dois grupos são considerados separados em comunidades se e somente se todos os pares de nós em grupos diferentes tem a similaridade maior que um limiar. Outra abordagem que obteve resultados melhores é o uso de várias métricas de similaridades e dissimilaridades, combinadas através de uma combinação convexa[9].

Algoritmo de Girvan–Newman[editar | editar código-fonte]

Outra abordagem para detecção de comunidades é o algoritmo de Girvan-Newman [10]. Esse algoritmo identifica as arestas em uma rede que estão na fronteira de comunidades e as remove, deixando somente as comunidades isoladas. A identificação é feita utilizando intermediação, que é um número associado a cada aresta onde esse valor é maior se a aresta está "entre" muitos pares de nós.

O algoritmo de Girvan-Newman retorna resultados razoáveis em relação a qualidade mas sua popularidade advém do fato que esse método é implementado em diversos pacotes de software. Em contrapartida, sua execução é lenta levando tempo proporcional a em uma rede de vértices e arestas, por essa razão é impraticável para redes de alguns milhares de nós[10].

Maximização da modularidade[editar | editar código-fonte]

Apesar de suas desvantagens, um dos métodos mais utilizados para detecção de comunidades é a maximização da modularidade. A maximização da modularidade detecta comunidades realizando uma busca entre candidatos de partições e seleciona a partição (ou partições) com maior modularidade. Devido ao fato que uma busca por todas as possíveis partições é algo intratável, algoritmos baseados em aproximação são utilizados como algoritmos gulosos, simulated annealing, otimização espectral. Essas propostas oferecem diferentes resultados referente a velocidade e acurácia[5][11]. Um método popular de maximização da modularidade é o método de Louvain, que iterativamente realiza a otimização de comunidades locais até que a modularidade global não seja mais melhorada através de perturbações na partição de comunidades[12][13]. Atualmente, o melhor algoritmo para a otimização de modularidade utiliza o método RenELL que é um exemplo de aprendizado ensemble extremo[14] [15].

A modularidade é questionada como métrica para otimização porque já foi mostrado que sua maximização falha em detectar clusters menores que certa escala que depende do tamanho da rede[6].

Referências

  1. Luce, R Duncan and Perry, Albert. "A method of matrix analysis of group structure" . Springer.
  2. Barabási, Albert-László. "Network science" . The Royal Society Publishing.
  3. Radicchi Filippo and Castellano, Claudio and Cecconi, Federico and Loreto, Vittorio and Parisi, Domenico. "Defining and identifying communities in networks" . National Acad Sciences.
  4. Scott, John,. "Social network analysis," . British Sociological Association Publications Limited.
  5. a b L. Danon; J. Duch; A. Díaz-Guilera; A. Arenas (2005). «Comparing community structure identification». J. Stat. Mech. 2005 (9): P09008. Bibcode:2005JSMTE..09..008D. arXiv:cond-mat/0505245Acessível livremente. doi:10.1088/1742-5468/2005/09/P09008 
  6. a b S. Fortunato; M. Barthelemy (2007). «Resolution limit in community detection». Proceedings of the National Academy of Sciences of the United States of America. 104 (1): 36–41. Bibcode:2007PNAS..104...36F. PMC 1765466Acessível livremente. PMID 17190818. arXiv:physics/0607100Acessível livremente. doi:10.1073/pnas.0605965104 
  7. M. A. Porter; J.-P. Onnela; P. J. Mucha (2009). «Communities in Networks» (PDF). Notices of the American Mathematical Society. 56: 1082–1097, 1164–1166 
  8. M. E. J. Newman (2004). «Detecting community structure in networks». Eur. Phys. J. B. 38 (2): 321–330. Bibcode:2004EPJB...38..321N. doi:10.1140/epjb/e2004-00124-y. hdl:2027.42/43867 
  9. Alvarez, Alejandro J.; Sanz-Rodríguez, Carlos E.; Cabrera, Juan Luis (13 de dezembro de 2015). «Weighting dissimilarities to detect communities in networks». Phil. Trans. R. Soc. A. 373 (2056). 20150108 páginas. Bibcode:2015RSPTA.37350108A. ISSN 1364-503X. PMID 26527808. doi:10.1098/rsta.2015.0108 
  10. a b M. E. J. Newman (2004). «Fast algorithm for detecting community structure in networks». Phys. Rev. E. 69 (6). 066133 páginas. Bibcode:2004PhRvE..69f6133N. PMID 15244693. arXiv:cond-mat/0309508Acessível livremente. doi:10.1103/PhysRevE.69.066133 
  11. R. Guimera; L. A. N. Amaral (2005). «Functional cartography of complex metabolic networks». Nature. 433 (7028): 895–900. Bibcode:2005Natur.433..895G. PMC 2175124Acessível livremente. PMID 15729348. arXiv:q-bio/0502035Acessível livremente. doi:10.1038/nature03288 
  12. V.D. Blondel; J.-L. Guillaume; R. Lambiotte; E. Lefebvre (2008). «Fast unfolding of community hierarchies in large networks». J. Stat. Mech. 2008 (10): P10008. Bibcode:2008JSMTE..10..008B. arXiv:0803.0476Acessível livremente. doi:10.1088/1742-5468/2008/10/P10008 
  13. Que, Xinyu; Checconi, Fabio; Petrini, Fabrizio; Wang, Teng; Yu, Weikuan (2013). Lightning-fast Community Detection in Social Media: A Scalable Implementation of the Louvain Algorithm (Relatório técnico). Computer Architecture and SysTems Research Lab (CASTL), Florida State University. AU-CSSE-PASL/13-TR01 
  14. J. Guo; P. Singh; K.E. Bassler (2019). «Reduced network extremal ensemble learning (RenEEL) scheme for community detection in complex networks». Scientific Reports. 9 (14234). 14234 páginas. Bibcode:2019NatSR...914234G. PMC 6775136Acessível livremente. PMID 31578406. arXiv:1909.10491Acessível livremente. doi:10.1038/s41598-019-50739-3 
  15. «RenEEL-Modularity». 11 de Janeiro de 2021