Je me demande si quelqu'un pourrait suggérer quels sont les bons points de départ pour effectuer une détection de communauté / partitionnement / regroupement de graphes sur un graphique comportant des arêtes pondérées et non dirigées . Le graphique en question a environ 3 millions d'arêtes et chaque arête exprime le degré de similitude entre les deux sommets qu'il connecte. En particulier, dans cet ensemble de données, les arêtes sont des individus et les sommets sont une mesure de la similarité de leur comportement observé.
Dans le passé, j'ai suivi une suggestion que j'avais faite ici sur stats.stackexchange.com et utilisé l'implémentation de la modularité de la modularité de Newman par igraph. J'étais satisfait des résultats, mais c'était sur un ensemble de données non pondéré.
Existe-t-il des algorithmes spécifiques que je devrais examiner?
la source
Je sais que Gephi peut traiter un graphe pondéré non dirigé, mais je pense me souvenir qu'il doit être stocké dans GDF , qui est assez proche de CSV, ou Ucinet DL . Sachez que cela reste une version alpha. Maintenant, en ce qui concerne le clustering de votre graphique, Gephi semble manquer de pipelines de clustering, à l'exception de l'algorithme MCL qui est maintenant disponible dans la dernière version. Il y avait un projet de code Google en 2009, Gephi Network Statistics (avec, par exemple, la métrique de modularité de Newman), mais je ne sais pas si quelque chose a été publié dans cette direction. Quoi qu’il en soit, il semble permettre une sorte de calcul de modularité / clustering, mais voir aussi Analyse de réseau social en utilisant R et Gephi etPréparation des données pour l'analyse des réseaux sociaux en utilisant R et Gephi (Merci beaucoup à @Tal).
Si vous êtes habitué à Python, essayez NetworkX (voici un exemple de graphe pondéré avec le code correspondant). Ensuite, vous avez de nombreuses façons d'effectuer votre analyse.
Vous devriez également consulter INSNA - Logiciel d'analyse de réseau social ou la page Web de Tim Evans sur les réseaux complexes et la complexité .
la source
Gephi implémente la méthode Louvain Modularity: http://wiki.gephi.org/index.php/Modularity
à votre santé
la source
L'algorithme de modularité de Louvain est disponible en C ++: https://sites.google.com/site/findcommunities/
Il traite des réseaux pondérés de millions de nœuds et d’arêtes et il a été démontré qu’il était beaucoup plus rapide que l’algorithme de Newman.
la source
Si vous utilisez python et avez créé un graphique pondéré à l'aide de NetworkX , vous pouvez utiliser python-louvain pour la mise en cluster. Où G est un graphe pondéré:
la source
Je viens de tomber sur le paquet tnet pour R. Le créateur semble faire des recherches sur la découverte de communautés dans des graphiques pondérés et bipartites (à deux modes).
http://opsahl.co.uk/tnet/content/view/15/27/
Je ne l'ai pas encore utilisé.
la source
SLPA (maintenant appelé GANXiS) est un algorithme rapide capable de détecter les communautés disjointes et qui se chevauchent dans les réseaux sociaux (non dirigé / dirigé et non pondéré / pondéré). Il est démontré que l'algorithme produit des résultats significatifs sur des réseaux sociaux et géniques du monde réel. C’est l’un des plus modernes. Il est disponible à
https://sites.google.com/site/communitydetectionslpa/
Voir une belle critique arxiv.org/abs/1110.5813 pour plus d'infos
la source
J'ai une implémentation Java pour un réseau pondéré / non pondéré, qui ne se chevauchent pas, qui pourrait probablement gérer 3 millions de nœuds (je l'ai testée pour un ensemble de données d'un million de nœuds). Cependant, cela fonctionne comme k-means et nécessite que le nombre de partitions soit détecté en tant qu'entrée (k en kmeans). Vous pouvez trouver plus d'informations ici , et voici le code , dans github
À votre santé,
la source