network

community

Beschreibung

Die Aktion `community` erkennt Gemeinschaften in einem Graphen. In der Netzwerkanalyse werden Gemeinschaften oft als dicht verbundene Knotengruppen betrachtet, zwischen denen nur spärliche Verbindungen bestehen. Diese Aktion ist nützlich, um Cluster oder Gruppierungen innerhalb eines Netzwerks zu identifizieren, was in sozialen Netzwerken, biologischen Netzwerken und vielen anderen Bereichen Anwendung findet.

network.community <result=results> <status=rc> / algorithm="LABELPROPAGATION" | "LOUVAIN", deterministic=TRUE | FALSE, direction="DIRECTED" | "UNDIRECTED", display={...}, distributed=TRUE | FALSE, fix="variable-name", graph=integer, indexOffset=integer, labelUpdateMode="ASYNCHRONOUS" | "SYNCHRONOUS", linkRemovalRatio=integer, links={...}, linksVar={...}, logFreqTime=integer, logLevel="AGGRESSIVE" | "BASIC" | "MODERATE" | "NONE", maxIters=integer, multiLinks=TRUE | FALSE, nodes={...}, nodesVar={...}, nThreads=integer, outCommLinks={...}, outCommunity={...}, outGraphList={...}, outLevel={...}, outLinks={...}, outNodes={...}, outOverlap={...}, outputTables={...}, recursive={...}, resolutionList={double-1 <, double-2, ...>}, selfLinks=TRUE | FALSE, standardizedLabels=TRUE | FALSE, standardizedLabelsOut=TRUE | FALSE, tolerance=double, warmStart="variable-name";
Einstellungen
ParameterBeschreibung
algorithmGibt den Algorithmus an, der für die Gemeinschaftserkennung verwendet werden soll. 'LABELPROPAGATION' verwendet den Label-Propagation-Algorithmus, während 'LOUVAIN' den Louvain-Algorithmus verwendet. Standard ist 'LOUVAIN'.
deterministicStellt bei Einstellung auf TRUE sicher, dass jeder Aufruf (mit derselben Maschinenkonfiguration und Parametereinstellungen) dasselbe Endergebnis liefert. Standard ist TRUE.
directionGibt an, ob der Eingabegraph als gerichtet ('DIRECTED') oder ungerichtet ('UNDIRECTED') betrachtet werden soll. Standard ist 'UNDIRECTED'.
displayGibt eine Liste von Ergebnistabellen an, die zur Anzeige an den Client gesendet werden sollen.
distributedVerwendet bei Einstellung auf TRUE einen verteilten Graphen. Standard ist FALSE.
fixGibt die Variable an, die Gruppen von Knoten definiert, die für die Gemeinschaftserkennung zusammengehalten werden sollen. Jeder Wert der Variable muss eine 32-Bit-Ganzzahl größer oder gleich 0 oder ein fehlender Wert sein.
graphGibt den zu verwendenden In-Memory-Graphen an. Standard ist -1 (der zuletzt erstellte Graph).
indexOffsetGibt den Index-Offset für Bezeichner in den Protokoll- und Ergebnisausgabetabellen an. Standard ist 0.
labelUpdateModeGibt an, ob Knoten ihre Bezeichnungen entsprechend den Bezeichnungen ihrer Nachbarn in der aktuellen Iteration (ASYNCHRONOUS) oder der vorherigen Iteration (SYNCHRONOUS) aktualisieren. Standard ist 'SYNCHRONOUS'.
linkRemovalRatioGibt den Prozentsatz der Links mit geringem Gewicht an, die um jede Knotenumgebung herum entfernt werden sollen. Der Bereich liegt zwischen 0 und 100. Standard ist 10.
linksGibt die Eingabedatentabelle an, die die Linkinformationen des Graphen enthält.
linksVarGibt die Datenvariablennamen für die Linktabelle an.
logFreqTimeSteuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen. Standard ist 5.
logLevelSteuert die Menge der im SAS-Protokoll angezeigten Informationen. Mögliche Werte sind 'NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'. Standard ist 'BASIC'.
maxItersGibt die maximale Anzahl von Iterationen an, die der Algorithmus ausführen kann. Standard ist 20 für LOUVAIN und 100 für LABELPROPAGATION.
multiLinksBezieht bei Einstellung auf TRUE Multilinks beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE.
nodesGibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält.
nodesVarGibt die Datenvariablennamen für die Knotentabelle an.
nThreadsGibt die maximale Anzahl von Threads an, die für die Multithread-Verarbeitung verwendet werden sollen.
outCommLinksGibt die Ausgabedatentabelle an, die die Links zwischen den einzelnen Gemeinschaften beschreibt.
outCommunityGibt die Ausgabedatentabelle an, die Eigenschaften zu jeder Gemeinschaft enthält.
outGraphListGibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthält.
outLevelGibt die Ausgabedatentabelle an, die Gemeinschaftsinformationen auf verschiedenen Auflösungsstufen enthält.
outLinksGibt die Ausgabedatentabelle an, die die Linkinformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Links berechnen.
outNodesGibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Knoten berechnen.
outOverlapGibt die Ausgabedatentabelle an, die die Intensität jedes Knotens beschreibt.
outputTablesListet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
recursiveZerlegt große Gemeinschaften in kleinere, bis die angegebenen Bedingungen (maxCommSize, maxDiameter) erfüllt sind.
resolutionListGibt eine Liste von Auflösungswerten (nicht negative Zahlen) an, die durch Leerzeichen getrennt sind.
selfLinksBezieht bei Einstellung auf TRUE Self-Links (Schleifen) beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE.
standardizedLabelsGibt bei Einstellung auf TRUE an, dass die Eingabegraphdaten in einem standardisierten Format vorliegen. Standard ist FALSE.
standardizedLabelsOutFordert bei Einstellung auf TRUE an, dass die Ausgabegraphdaten ein standardisiertes Format enthalten. Standard ist FALSE.
toleranceGibt den Toleranzwert an, bei dem die Iterationen gestoppt werden sollen. Der gültige Bereich liegt streng zwischen 0 und 1.
warmStartGibt die Variable an, die anfängliche Gemeinschaftsbezeichner für den Warmstart der Gemeinschaftserkennung definiert.
Erstellen der Daten

Dieses Beispiel zeigt, wie ein ungerichteter Graph mit 11 Knoten und 15 Links erstellt wird, um die Gemeinschaftserkennung zu demonstrieren.

Kopiert!
1DATA mycas.LinkSetIn;
2 INPUT from $ to $ @@;
3 DATALINES;
4A B A C A D B C B D C D
5E F E G F G
6H I H J I J
7K D K E
8;
9RUN;

Beispiele

Dieses Beispiel zeigt, wie man Gemeinschaften in einem ungerichteten Graphen mit dem Louvain-Algorithmus erkennt. Die Ergebnisse werden in den Tabellen `mycas.CommLinks` und `mycas.NodeOut` gespeichert.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 LOADACTIONSET "network";
3 ACTION network.community RESULT=r STATUS=s /
4 links={name='LinkSetIn'}
5 outNodes={name='NodeOut', replace=true}
6 outCommLinks={name='CommLinks', replace=true};
7 PRINT r.ProblemSummary;
8 PRINT r.SolutionSummary;
9 RUN;
10 fetch / TABLE={name='CommLinks'} sortBy={'community', 'to_community'};
11 RUN;
12 fetch / TABLE={name='NodeOut'} sortBy={'community', 'node'};
13 RUN;
14QUIT;
Ergebnis :
Die Ausgabetabelle mycas.CommLinks beschreibt die Links zwischen den Gemeinschaften. Die Ausgabetabelle mycas.NodeOut enthält jetzt eine Variable, community, die die Gemeinschaftszuweisung für jeden Knoten angibt.

Dieses Beispiel verwendet den Louvain-Algorithmus in einem gerichteten Graphen, um Gemeinschaften zu finden. Die Option `direction='DIRECTED'` wird verwendet, um die Direktionalität der Links zu berücksichtigen.

SAS® / CAS-Code Code wartet auf Validierung durch die Community
Kopiert!
1PROC CAS;
2 ACTION network.community RESULT=r STATUS=s /
3 direction='DIRECTED'
4 links={name='LinkSetIn'}
5 outNodes={name='Comm', replace=true};
6 PRINT r.ProblemSummary;
7 PRINT r.SolutionSummary;
8 RUN;
9 fetch / TABLE={name='Comm'} sortBy={'community', 'node'};
10 RUN;
11QUIT;
Ergebnis :
Die Ausgabetabelle mycas.Comm zeigt die Gemeinschaftszuweisung für jeden Knoten im gerichteten Graphen.

FAQ

Was bewirkt die `community`-Aktion im `network`-Aktionsset?
Welche Algorithmen unterstützt die `community`-Aktion zur Gemeinschaftserkennung?
Wie kann man die Granularität der erkannten Gemeinschaften mit dem Louvain-Algorithmus steuern?
Was ist der Zweck des `outOverlap`-Ausgabetisches?
Kann die `community`-Aktion große Gemeinschaften rekursiv in kleinere unterteilen?