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
algorithm Gibt 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'.
deterministic Stellt bei Einstellung auf TRUE sicher, dass jeder Aufruf (mit derselben Maschinenkonfiguration und Parametereinstellungen) dasselbe Endergebnis liefert. Standard ist TRUE.
direction Gibt an, ob der Eingabegraph als gerichtet ('DIRECTED') oder ungerichtet ('UNDIRECTED') betrachtet werden soll. Standard ist 'UNDIRECTED'.
display Gibt eine Liste von Ergebnistabellen an, die zur Anzeige an den Client gesendet werden sollen.
distributed Verwendet bei Einstellung auf TRUE einen verteilten Graphen. Standard ist FALSE.
fix Gibt 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.
graph Gibt den zu verwendenden In-Memory-Graphen an. Standard ist -1 (der zuletzt erstellte Graph).
indexOffset Gibt den Index-Offset für Bezeichner in den Protokoll- und Ergebnisausgabetabellen an. Standard ist 0.
labelUpdateMode Gibt an, ob Knoten ihre Bezeichnungen entsprechend den Bezeichnungen ihrer Nachbarn in der aktuellen Iteration (ASYNCHRONOUS) oder der vorherigen Iteration (SYNCHRONOUS) aktualisieren. Standard ist 'SYNCHRONOUS'.
linkRemovalRatio Gibt 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.
links Gibt die Eingabedatentabelle an, die die Linkinformationen des Graphen enthält.
linksVar Gibt die Datenvariablennamen für die Linktabelle an.
logFreqTime Steuert die Frequenz n (in Sekunden) für die Anzeige von Iterationsprotokollen für einige Algorithmen. Standard ist 5.
logLevel Steuert die Menge der im SAS-Protokoll angezeigten Informationen. Mögliche Werte sind 'NONE', 'BASIC', 'MODERATE', 'AGGRESSIVE'. Standard ist 'BASIC'.
maxIters Gibt die maximale Anzahl von Iterationen an, die der Algorithmus ausführen kann. Standard ist 20 für LOUVAIN und 100 für LABELPROPAGATION.
multiLinks Bezieht bei Einstellung auf TRUE Multilinks beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE.
nodes Gibt die Eingabedatentabelle an, die die Knoteninformationen des Graphen enthält.
nodesVar Gibt die Datenvariablennamen für die Knotentabelle an.
nThreads Gibt die maximale Anzahl von Threads an, die für die Multithread-Verarbeitung verwendet werden sollen.
outCommLinks Gibt die Ausgabedatentabelle an, die die Links zwischen den einzelnen Gemeinschaften beschreibt.
outCommunity Gibt die Ausgabedatentabelle an, die Eigenschaften zu jeder Gemeinschaft enthält.
outGraphList Gibt die Ausgabedatentabelle an, die zusammenfassende Informationen über In-Memory-Graphen enthält.
outLevel Gibt die Ausgabedatentabelle an, die Gemeinschaftsinformationen auf verschiedenen Auflösungsstufen enthält.
outLinks Gibt die Ausgabedatentabelle an, die die Linkinformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Links berechnen.
outNodes Gibt die Ausgabedatentabelle an, die die Knoteninformationen des Graphen zusammen mit allen Ergebnissen der Algorithmen enthält, die Metriken für Knoten berechnen.
outOverlap Gibt die Ausgabedatentabelle an, die die Intensität jedes Knotens beschreibt.
outputTables Listet die Namen der Ergebnistabellen auf, die als CAS-Tabellen auf dem Server gespeichert werden sollen.
recursive Zerlegt große Gemeinschaften in kleinere, bis die angegebenen Bedingungen (maxCommSize, maxDiameter) erfüllt sind.
resolutionList Gibt eine Liste von Auflösungswerten (nicht negative Zahlen) an, die durch Leerzeichen getrennt sind.
selfLinks Bezieht bei Einstellung auf TRUE Self-Links (Schleifen) beim Lesen eines Eingabegraphen mit ein. Standard ist TRUE.
standardizedLabels Gibt bei Einstellung auf TRUE an, dass die Eingabegraphdaten in einem standardisierten Format vorliegen. Standard ist FALSE.
standardizedLabelsOut Fordert bei Einstellung auf TRUE an, dass die Ausgabegraphdaten ein standardisiertes Format enthalten. Standard ist FALSE.
tolerance Gibt den Toleranzwert an, bei dem die Iterationen gestoppt werden sollen. Der gültige Bereich liegt streng zwischen 0 und 1.
warmStart Gibt 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?

Zugehörige Szenarien

Anwendungsfall
Erkennung von Geldwäsche-Ringen (Standard)

Eine Bank möchte verdächtige Transaktionsnetzwerke identifizieren. Das Ziel ist es, Gruppen von Konten zu finden, die untereinander häufig Geld transferieren, aber nur wenige Ve...

Anwendungsfall
Marktsegmentierung mit variabler Granularität (Performance/Analyse)

Ein Marketingteam eines Telekommunikationsunternehmens möchte Kundengruppen basierend auf Anrufdaten segmentieren. Sie benötigen sowohl grobe Segmente für landesweite Kampagnen ...

Anwendungsfall
Analyse biologischer Netzwerke (Cas Limite / Rekursion)

In der Proteomik sind Protein-Interaktionsnetzwerke oft sehr dicht ('Hairball'-Struktur). Ein einziger Durchlauf des Algorithmus liefert oft eine riesige 'Super-Community', die ...