Wie erkenne ich eine Community in einem gewichteten sozialen Netzwerk / Diagramm?


42

Ich frage mich, ob jemand vorschlagen könnte, was gute Ausgangspunkte für die Community-Erkennung / Diagrammaufteilung / -Clusterung in einem Diagramm mit gewichteten , ungerichteten Kanten sind. Das fragliche Diagramm hat ungefähr 3 Millionen Kanten und jede Kante drückt den Ähnlichkeitsgrad zwischen den beiden Scheitelpunkten aus, die es verbindet. Insbesondere sind in diesem Datensatz Kanten Individuen und Scheitelpunkte ein Maß für die Ähnlichkeit ihres beobachteten Verhaltens.

In der Vergangenheit bin ich einem Vorschlag gefolgt, den ich hier auf stats.stackexchange.com erhalten habe, und habe igraphs Implementierung von Newmans Modularitätsclustering verwendet und war mit den Ergebnissen zufrieden, aber das war bei einem ungewichteten Datensatz.

Gibt es spezielle Algorithmen, auf die ich achten sollte?

Antworten:


20

Die igraph-Implementierung von Newmans Modularity Clustering (Fastgreedy-Funktion) kann auch mit gewichteten Kanten verwendet werden. Fügen Sie einfach Gewichtsattribute zu den Kanten hinzu und analysieren Sie wie gewohnt. Nach meiner Erfahrung läuft es mit Gewichten noch schneller, da es weniger Bindungen gibt.


vielen dank für den hinweis, ich hatte den hinweis auf die gewichte in der dokumentation komplett verpasst.
Laramichaels

9

Ich weiß, dass Gephi ungerichtete gewichtete Grafiken verarbeiten kann, aber ich scheine mich zu erinnern, dass sie in GDF gespeichert werden müssen , was CSV oder Ucinet DL ziemlich nahe kommt . Beachten Sie, dass es sich immer noch um eine Alpha-Version handelt. Was das Clustering Ihres Diagramms angeht, scheint es in Gephi an Clustering-Pipelines zu mangeln, mit Ausnahme des MCL-Algorithmus, der jetzt in der neuesten Version verfügbar ist. Es gab 2009 ein Google Code-Projekt , Gephi Network Statistics (mit z. B. Newmans Modularitätsmetrik), aber ich weiß nicht, ob etwas in diese Richtung veröffentlicht wurde. Wie auch immer, es scheint eine Art von Modularitäts- / Clustering-Berechnungen zu ermöglichen, aber siehe auch Analyse sozialer Netzwerke mit R und Gephi undDatenaufbereitung für die Analyse sozialer Netzwerke mit R und Gephi (Vielen Dank an @Tal).

Wenn Sie an Python gewöhnt sind, sollten Sie NetworkX ausprobieren (hier ein Beispiel für ein gewichtetes Diagramm mit dem entsprechenden Code). Dann haben Sie viele Möglichkeiten, Ihre Analyse durchzuführen.

Sie sollten sich auch INSNA - Social Network Analysis Software oder Tim Evans 'Webseite über komplexe Netzwerke und Komplexität ansehen .


Hallo, nur um Ihnen mitzuteilen, dass Gephi mit gewichteten ungerichteten Diagrammen nicht umgehen kann, um die Community durch Modularität zu identifizieren. Vielen Dank. -Gautam

@Gautam Gut zu wissen, danke. Ich bin mit Gephi nicht wirklich vertraut, aber ich dachte, dass es sich um eine aktive Entwicklung handelt.
chl


4

Der Louvain-Modularitätsalgorithmus ist in C ++ verfügbar: https://sites.google.com/site/findcommunities/

Es befasst sich mit gewichteten Netzwerken von Millionen von Knoten und Kanten und ist nachweislich viel schneller als der Newman-Algorithmus.


Der Louvain-Modularitätsalgorithmus ist schnell und stetig. Ich frage mich, ob es eine Kartenreduzierungsversion davon gibt.
Seite

3

Wenn Sie Python verwenden und mit NetworkX ein gewichtetes Diagramm erstellt haben , können Sie Python-Louvain für das Clustering verwenden. Wobei G ein gewichteter Graph ist:

import community 
partition = community.best_partition(G, weight='weight')

1

Ich bin gerade auf das tnet-Paket für R gestoßen. Der Schöpfer scheint nach Community-Entdeckungen in gewichteten und zweigliedrigen (Zwei-Modi) Graphen zu forschen.

http://opsahl.co.uk/tnet/content/view/15/27/

Ich habe es noch nicht benutzt.


1

SLPA (jetzt GANXiS genannt) ist ein schneller Algorithmus, der sowohl disjunkte als auch überlappende Communities in sozialen Netzwerken erkennen kann (ungerichtet / gerichtet und ungewichtet / gewichtet). Es wird gezeigt, dass der Algorithmus aussagekräftige Ergebnisse in realen sozialen Netzwerken und Gennetzwerken liefert. Es gehört zum Stand der Technik. Es ist erhältlich bei

https://sites.google.com/site/communitydetectionslpa/

Weitere Informationen finden Sie in einer netten Rezension unter arxiv.org/abs/1110.5813


1

Ich habe eine Java-Implementierung für ein nicht überlappendes, gewichtetes / ungewichtetes Netzwerk, das wahrscheinlich 3 Millionen Knoten verarbeiten kann (ich habe es für einen Datensatz mit einer Million Knoten getestet). Es funktioniert jedoch wie k-means und benötigt die Anzahl der Partitionen, die als Eingabe erkannt werden sollen (k in kmeans). Sie können weitere Informationen finden sich hier , und hier ist der Code , in Github

Prost,

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.