Presentazione standard di PowerPoint

annuncio pubblicitario
Communities
Una comunità è un sottografo in cui i nodi membri sono molto connessi tra loro
e la densità degli edge esistenti all’interno del gruppo è molto maggiore rispetto
a quella degli edge che connettono nodi interni al gruppo con nodi esterni.
In una rete in cui sia presente una struttura in comunità, esistono solitamente
gruppi di nodi molto connessi e altri ancora che agiscono come ponti tra le
diverse comunità. Di conseguenza, evidenziare una rilevante struttura in
comunità all’interno di una rete rappresenta un potente strumento per
comprenderne la forma, il funzionamento e il suo eventuale meccanismo di
crescita.
La rete in figura presenta due comunità (nodi rossi e nodi blu)
Algoritmi
Le reti sociali, come altre reti reali presentano una strutturazione naturale in
comunità. Si vuole determinare tale struttura naturale, e non imporre una
partizione artificiale fissando il numero o la dimensione delle comunità.
Trovare le comunità all'interno di una rete arbitraria è un compito difficile
per varie motivazioni. Il numero di comunità all'interno della rete è in
genere sconosciuto e le comunità sono spesso di dimensioni e/o densità
differenti. Inoltre il problema presenta difficoltà computazionali, poiché gli
algoritmi devono trovare una buona suddivisione di reti molto grandi in un
tempo accettabile.
1
Algoritmo di Newman e Girvan.
Una tipologia di algoritmi si basa su metodi di partizione del grafo (graph
partitioning). Tra questi l’algoritmo proposto da Newman e Girvan individua
gli archi da rimuovere basandosi su un valore di centralità dell’arco, chiamato
shortest path betweeness.
L’idea si fonda sul ipotesi che gli archi con più grande centralità sono
responsabili della connessione di molte coppie di nodi, e quindi sono quelli da
eliminare se si vuole separare la rete in comunità.
Inoltre due comunità sono unite da pochi archi intercomunità e quindi molti
cammini minimi tra coppie di nodi sono quindi costretti a passare proprio per
questi tipo di archi, al contrario all’interno di una comunità gli archi sono più
densi ed esistono molti cammini alternativi.
Idea per il partizionamento: Iniziamo col definire il concetto di "traffico" sulla
rete e cercare gli archi che portano la maggior parte di questo traffico.
Per ogni coppia di nodi A e B che sono collegati da un cammino, immaginiamo
vi sia un’unità di ‘’flusso" lungo gli archi da A a B. Se A e B appartengono a
diverse componenti connesse, nessun liquido scorre tra di loro. Altrimenti il
flusso tra A e B si divide in modo uniforme lungo tutto il possibili percorsi più
brevi da A a B: Quindi se ci sono k cammini minimi da A e B, 1 / k di unità
passa lungo ciascuno.
Definizione. La betweenness di un edge è la quantità totale di flusso che esso
porta, contando il flusso tra cammini minimi di tutte le coppie di nodi che
utilizzano questo edge.
La betweenness di (1, 2) è 4 (=6/2 + 1), infatti tutti I cammini minimi
da 2 a 4, 5, 6, 7, 8, passano per (1, 2) o (2, 3), e (1,2) è il cammino
minimo tra 1 e2
L’algoritmo procede iterativamnte eliminando l’edge di massima betweeness.
2
Algoritmo
1.
Trovare l’arco di massima betweenness (o gli archi se c’è un pareggio) e
rimuovere questi archi dal grafo.
/ * Questa operazione può disconnettere il grafo. Se è così,
questo è il primo livello di regioni del partizionamento del grafo. * /
2.
Iterare: Procedere in questo modo finché rimangono archi nel grafo, in
ogni fase ricalcolando tutte le betweenness e rimuovendo l’arco o gli archi
di betweness massima
Esempio. Applichiamo i primi passi dell’algoritmo al grafo in figura.
Valori iniziali di betweenness
Risulta quindi che vi sono due edge con lo stesso valore massimo.
• Rimuoviamo (4,5) e (4, 6),
• Ricalcolando I valori, risulta che l’edge (7,9) ha il valore max 4, e deve
essere levato.
A questo punto il grafo risulta partizionato in tre componenti:
3
Esempio.
• Betweenness(1-3) = 1X12=12
• Betweenness(7-8)= 7x7 = 49
• Betweenness(3-7)=betweenness(67)
=betweenness(8-9)
=betweenness(812)= 3X11=33
Applicando l’algoritmo, si hanno le suddivisioni successive
• Betweenness(1-3) = 1X5=5
• Betweenness(3-7)=betweenness(67)
=betweenness(8-9) = betweenness(8-12)= 3X4=12
• Betweenness di ogni edge = 1
4
Esempio.
Applicando l’algoritmo, si hanno le suddivisioni successive:
5
Calcolo della Betweeness
L’algoritmo di Girman-Newman ad ogni passo deve ricalcolare la
betweenness di tutti gli edge rimanenti nel grafo. I valori dipendono dal
numero di cammini minimi tra ogni coppia di nodi. Vediamo come si
possono calcolare efficientemente.
L’idea è utilizzare una BFS da ogni nodo u per calcolare come un’unità di
flusso si distribuisce nella rete a partire da un nodo u stesso.
Algoritmo per il Calcolo della Betweenness
1. A partire da ogni nodo u eseguie una BFS e costruisce l’albero dei
percorsi minimi
2. Per ogni nodo v, calcola quanti cammini minimi ci sono da u a v
– Se il nodo v si trova al k-imo livello dell’albero i cammini
minimi da u a v hanno lunghezza k e passano per i padri di v
nell’albero
– Il numero dei cammini minimi per v è la somma del numero
di cammini minimi per i suoi padri
3. Determina quanto flusso attraversa ogni arco del grafo
– Bottom up
– Ad ogni nodo assegna un’unità di flusso più tutto quello che
gli arriva dai figli
– Ogni nodo distribuisce equalmente il proprio flusso tra i
padri
6
Una volta effettuata la BFS:
•
il calcolo del numero di percorsi minimi da A ad altri nodi può essere
fatto sommando i valori per percorsi più brevi, muovendosi verso il
basso attraverso la struttura di ricerca in ampiezza.
•
Il flusso può essere determinato partendo dagli strati più bassi della
BFS, dividendo il flusso che arriva dall’alto ad ogni nodo in proporzione
al numero di cammini minimi che entrano nel nodo su ogni arco.
Esempio
BFS dal nodo A;
•
•
I valori associati ai nodi corrispondono al numero di cammini minimi da A
I valori sugli edge corrispondono al flusso sull’edge stesso.
7
Complessità L’algoritmo richiede di ricalcolare ad ogni passo la
betweenness di tutti gli m edge. Quindi si hanno O(m) passi. Per
ognuno degli N nodi ad ogni passo occorre un tempo O(m) per
computare la BFS e su di essa la betweeness. In totale O(m2N).
Quale partizione scegliere? Si è visto che su alcune reti di test, come
per esempio la rete di Karate, l’algorimo permette di ottenere una
partizione in comunità (quasi ottimale). Ad ed esempio per la rete di
Karate, la prima suddivisione che si ottiene (quindi in due parti)
rispecchia quasi totalmente la reale suddivisione della rete. Poiché
l’algoritmo lavora per partizionamenti successivi, in generale è
necessario un criterio per stabilire quale livello di partizione è quello
giusto.
Una possibilità è quella di valutare i vari livelli di partizionamento
utilizzando una misura di bontà delle partizioni.
Es. Applicando l’algoritmi di Girvan-Newman, si ottengono le seguenti
partizioni successive. La modularità M (che vedremo in seguito) ci dice
che la partizione migliore è al livello 3 (l’ultima riportata in figura).
8
Modularity
La modularità di una partizione è una quantità scalare che misura la densità di archi
all’interno delle comunità individuate in paragone al valore atteso di tale densità.
L’idea alla base è quella di quantificare la misura in cui una determinata partizione
in comunità presenta una tendenza sistematica ad avere più collegamenti
intracomunitari rispetto a quelli che avrebbe la stessa suddivisione in comunità se
gli edge fossero ottenuti utilizzando un modello casuale.
Valori positivi della modularità indicano che una frazione statisticamente valida di
edge in una rete cade all’interno delle comunità individuate dalla partizione. Si
calcola come
𝟏
M= πŸπ’Ž
𝑖𝑗
𝐴𝑖𝑗−
π‘˜π‘– π‘˜π‘—
2π‘š
𝛿(𝑐𝑖 , 𝑐𝑗 )
dove Aij è l’ elemento della matrice di adiacenza della rete, ki è il grado del nodo i e
m è il numero totale di edge nella rete. Inoltre, 𝑐𝑖 è l’etichetta della comunità cui il
nodo i è assegnato. Il simbolo 𝛿(𝑐𝑖 , 𝑐𝑗 ) è pari a 1 se la coppia di nodi appartiene
alla stessa comunità e 0 altrimenti --- per questo rientrano nella somma solo gli
archi intra-comunità.
La frazione attesa di edge è valutata su un grafo casuale in cui la sequenza dei grado
dei nodi è invariata rispetto alla rete reale, ma per il quale la probabilità che esista
un edge è proporzionale a
π‘˜π‘– π‘˜π‘—
2π‘š
.
Variazione della modularità al variare della partizione, in un grafo
che ammette una chiara partizione in due comunità.
9
La modularità M è compresa tra -1 e 1. L’esperienza mostra che valori positivi
maggiori di 0.5 indicano la presenza effettiva di una struttura in comunità, mentre
valori prossimi allo zero indicano che la distribuzione degli archi tra intra-intercomunità e inter-comunità non si discosta dalla casualità; in grafi casuali il valore
atteso di Q è 0.
Ipotesi. Un’ipotesi di lavoro, comunemente accettata è la seguente:
La partizione ottimale in comunità è quella che massimizza la modularità.
In accordo all’ipotesi summenzionata, la modularità può essere utilizzata per
confrontare diverse partizioni di una stessa rete.
Ottimizzazione della modularità? La partizione corrispondente al valore
massimo di modularità per un dato grafo è quindi la migliore partizione possibile
per individuare le comunità. Purtroppo però si dimostra che il problema da
risolvere è NP-completo.
Sono state quindi sviluppate varie euristiche, ma anche queste spesso non
riescono a far fronte in tempi ragionevoli alla dimensione attuale delle reti reali.
10
Scarica