Final Term Matricola: Nome: Giulio Bambini Esame: Analisi delle reti sociali

Documenti analoghi
METODI E APPLICAZIONI PER SOCIAL NETWORK A.A SIMONE ALGHISI

POSHMAP. Il social network made in Italy dedicato alla moda. Sara Longo, Social Media Mining

Social Network Analysis: Soundcloud. By Alessandro Sperotti Matricola

Modello dei grafi casuali

Metodi e Applicazioni per Social Network. Presentazione progetto

Metodi della conoscenza

Reti Complesse Biologiche

Grafi aleatori e reti nel mondo reale

Amedeo Leo Alessio Petrozziello Simone Romano

CENTRALITA nella RETE

Grafi aleatori: il modello di Erdős-Rényi

Metodi di analisi delle reti sociali applicati alle movimentazioni di animali per tracciare e prevedere l'andamento di una epidemia

Geometria per il TFA grafi e reti

Esercizi Capitolo 11 - Strutture di dati e progettazione di algoritmi

COMPORTAMENTI LOCALI E FENOMENI GLOBALI

ORGANIZZAZIONE DI RETI

La matematica dei network struttura e dinamiche di informazione

Introduzione ai grafi. Introduzione ai grafi p. 1/2

«Sciente e Tecnologie dei Beni Culturali»

Grafi e reti di flusso

Introduzione ai network. Misael Mongiovì

Guido Caldarelli2, Paolo De Los Rios3, Stefano Leonardi1 e Stefano Millozzi1 Giancarlo Casale e Ernesto Ricci

PRINCIPI DI SOCIAL NETWORK ANALYSIS CORSO DI INTERFACCE, CONTENUTI E SERVIZI PER LE TECNOLOGIE INTERATTIVE PROF. GIOVANNI CIOFALO

Corso di elettrotecnica Materiale didattico: i grafi

Riconoscimento e recupero dell informazione per bioinformatica. Clustering: validazione. Manuele Bicego

Lezione n.15 Random Graphs, Small-Worlds, Scale-Free Networks Materiale didattico: Peer-to-Peer Systems and Applications Capitolo 6

RETI DI CALCOLATORI II

Simulazione dei dati

Impatto del rilascio intenzionale di un virus altamente patogeno in relazione alla mobilità internazionale

Esercizi proposti 10

Esercitazione 6 Ancora sul Network Flow

Minimo albero di copertura

Grafi: visite. Una breve presentazione. F. Damiani - Alg. & Lab. 04/05 (da C. Demetrescu et al - McGraw-Hill)

Grafi e rappresentazione delle Reti

La teoria dei grafi permette di esprimere in modo sistematico le LKT e LKC con i metodi della

Figura 1: 1) Si scriva la formulazione del problema come problema di PLI (con un numero minimo di vincoli) e la matrice dei vincoli.

ALGORITMI DI GENERAZIONE DI GRAFI CASUALI PER MODELLARE IL WEB OF TRUST - 1 -

Riduzione degli schemi a blocchi

Coverage. Visto che il coverage si basa su aree dell ambiente che vengono monitorate non è

Variabili casuali. - di Massimo Cristallo -

JSON for Linked Data JSON-LD

Acquisizione, rappresentazione e analisi di dati sperimentali

Problema del cammino minimo

Relazioni e reti per il Dopo di noi (a cura di Manuela Vinai e Emilio Sulis Q.R.S. Biella) Introduzione

LA METAFORA DELL UFFICIO

Alberi e alberi binari I Un albero è un caso particolare di grafo

TIPS AND TRICKS 04 MODELLAZIONE E RISPOSTA DI UN ARCO IN MURATURA RINFORZATO CON ELEMENTI IN F.R.P. (Update number

Alcune v.a. discrete notevoli

Teoria dei Giochi Prova del 30 Novembre 2012

Routing. Forwarding e routing

Calcolo dell inflazione per differenti tipologie di famiglie milanesi

11.4 Chiusura transitiva

2.3 Cammini ottimi. E. Amaldi Fondamenti di R.O. Politecnico di Milano 1

4c. Esercizi sul livello di Rete Instradamento in Internet

ALGORITMI CORSO DI STUDIO IN INFORMATICA (laurea triennale) UNIVERSITÀ DEGLI STUDI DI CATANIA ANNO ACCADEMICO 2014/15

Esercizio 1. Esercizio 2

MODELLISTICA DI IMPIANTI E SISTEMI Syllabus e Testi di Riferimento Prof. Giuseppe Iazeolla

Dati sperimentali Nella serie di 10 misurazioni di tempo effettuate, si sono ottenuti i seguenti valori espressi in secondi:

Corso di Sistemi Informatici Avanzati Social Networks Analysis

FONDAMENTI DI INTELLIGENZA ARTIFICIALE 14 Gennaio 2016 Tempo a disposizione: 2 h Risultato: 32/32 punti

La simulazione con DERIVE Marcello Pedone LE SIMULAZIONI DEL LANCIO DI DADI CON DERIVE

Introduzione alla probabilità. Renato Mainetti

RELAZIONE DI FINE TIROCINIO

Intelligenza Artificiale. Risoluzione dei Problemi

Acquisizione, rappresentazione e analisi di dati sperimentali Aurelio Agliolo Gallitto

Lezione n.14 SCALE FREE NETWORKS 22/4/2008

Subsection 1. MapReduce

Confidenzialità e crittografia simmetrica. Contenuto. Scenario tipico. Corso di Sicurezza su Reti Uso della crittografia simmetrica

Corso di Laurea in Ingegneria Informatica e Automatica (A-O) Università di Roma La Sapienza CALCOLO DELLE PROBABILITÀ E STATISTICA ESAME DEL 8/04/2016

Possibile applicazione

Analisi descrittiva: calcolando medie campionarie, varianze campionarie e deviazioni standard campionarie otteniamo i dati:

Introduzione ai Problemi di Flusso su Reti

UNIVERSITÀ DEGLI STUDI ROMA TRE Corso di Studi in Ingegneria Informatica Ricerca Operativa 1 Seconda prova intermedia 17 giugno 2013

Social Network & Social Network Analisys. Social media management Proff. Giovanni Ciofalo, Stefano Epifani a.a. 2014/2015

Telerilevamento. Esercitazione 5. Classificazione non supervisionata. Apriamo l immagine multi spettrale relativa alla zona di Feltre che si trova in:

Regressione Lineare Multipla

Modelli e Metodi per il Supporto alle Decisioni II A.A. 2016/2017

FemCode: libreria Matlab per FEM

Grafi diretti. Un grafo diretto (o grafo orientato) G è una coppia (V,E) dove. V è u n i n s i e m e d i nodi (o vertici);

Densità di probabilità del prodotto di due variabili casuali distribuite uniformemente

Lezione 4. Problemi trattabili e soluzioni sempre più efficienti. Gianluca Rossi

CALCOLO DEL VALORE GENETICO DI UN RIPRODUTTORE

Esercitazione 4 Distribuzioni campionarie e introduzione ai metodi Monte Carlo

Prima di iniziare: Inviare una mail all indirizzo : Scaricare i files per la lezione di oggi dal sito:

PROBABILITÀ - SCHEDA N. 3 VARIABILI ALEATORIE CONTINUE E SIMULAZIONE

Esercitazione. 24 Aprile 2012

Aggiornamento dell area di espandimento dello scenario basso in data 10 aprile 2014

1 Relazione di congruenza in Z

LE OPINIONI DEI CONSUMATORI CIRCA LE NUOVE TIPOLOGIE DI ALIMENTAZIONE PER AUTOMOBILI

Algoritmi Approssimanti per -TSP

Segmentazione e Marketing 121. Università di Bologna Andrea De Marco

STRUTTURA DELLE RETI SOCIALI GRAFI. Vincenzo Auletta

PONTI TERMICI: PROBLEMATICHE PRESTAZIONALI E COSTRUTTIVE DEL NODO PARETE-SERRAMENTO

Dati e Algoritmi 1: A. Pietracaprina. Grafi (II parte)

Ingegneria degli Algoritmi (II parte pratica)

Dati demografici di base Aldopaolo Palareti

Lucchetto con combinazione (3 numeri tra 0 e 39)

Segmentazione e Marketing 121

Pagina intenzionalmente lasciata bianca.

Cammini Minimi. Algoritmo di Dijkstra

Transcript:

Final Term 2016 Matricola: 458856 Nome: Giulio Bambini Esame: Analisi delle reti sociali

Sommario Abstract... 3 1.Community discovery... 3 1.1 Modularità di Louvain... 4 1.2 Algoritmo DEMON... 4 1.3 Algoritmo K-clique... 4 2. Tie strength... 5 3. Spreading... 10 2

Abstract Il seguente elaborato si propone di analizzare alcune caratteristiche della rete estratta da Wikipedia. Le proprietà della rete sono già state analizzate durante la prima parte del corso. I task eseguiti sono il Community Discovery, il Tie Strength e lo Spreading. 1. Community discovery 1.1 Modularità di Louvain L algoritmo Louvain definisce un valore compreso tra -1 e 1 per misurare la densità di link intracomunitari. Figura1. La rete reale analizzata secondo diversi parametri di risoluzione With resolution : -1.0 0.5 1 Modularity -0,001 0,450 0,498 Modularity with -0,001 0,189 0,498 resolution Number of 5318 21 11 approximate communities Strongly connected 59 59 59 components Weakly connected components 2 2 2 Tabella1. Statistiche della modularità applicata alla rete reale La rete reale è stata analizzata e filtrata sulla base della modularità e i risultati sono evidenziati nella Tabella1. Ciò ha permesso di distinguere a livello superficiale i principali cluster che rappresentano le comunità approssimative. Sulla base del valore di resolution compreso tra -1 e 1 sono state eseguite tre differenti analisi. Per il valore -1.0 è stata evidenziata un unica componente gigante; per 0.5 sono state trovate 21 comunità, mentre per il valore 1 sono state trovate 11 comunità. 3

Successivamente è stato applicato un filtro Giant Component con Gephi per escludere i nodi singoli e le coppie di nodi che rappresentano comunità isolate dal resto della rete. Ciò ha permesso di evidenziare alcune discrepanze rispetto ai dati della tabella precedente: With resolution : -1.0 0.5 1 Modularity -0,001 0,447 0,498 Modularity with -0,001 0,187 0,498 resolution Number of exact 5317 19 9 communities Strongly connected 57 57 57 components Weakly connected components 2 2 2 Tabella2. Statistiche della modularità applicata alla rete reale con filtro Giant Compnent Nonostante i valori di modularità siano pressoché invariati, il numero delle comunità è diminuito e con esso anche il numero delle componenti connesse. 1.2 Algoritmo DEMON L analisi è stata svolta incrementando il parametro riguardante il numero minimo di nodi presenti in una comunità nel programma DEMON.py. Tale valore è stato incrementato fino ad ottenere una singola comunità. min_size nodes,edges n. communities density/clust. Coeff. 3 5163,17106 9 0,001 6 5148,18969 9 0,001 10 5131,7647 4 0,000 20 5100,6538 5 0,000 30 5069,10856 7 0,000 40 5034,9757 4 0,000 50 5002,8131 5 0,000 100 4834,4854 2 0,000 150 4398,4397 1 0,000 Tabella3. Statistiche sul numero di comunità identificate con DEMON.py Rispetto all applicazione dell algoritmo di Louvain il numero delle comunità generate con DEMON.py risulta insolitamente basso per valori di min_community_size inferiori a 10. Ciò denota una distribuzione pressoché uniforme delle comunità per ogni ordine di grandezza. 1.3 K-clique L analisi è stata svolta utilizzando il comando nx.find_cliques() su network x. I sottografi creati sono stati trattati come indiretti poiché il comando k-clique non permette di analizzare grafi diretti attraverso il comando DiGraph(). k connected components 1 * 4

2 * 3 * 4 342 5 112 6 81 9 1 Tabella4. Statistiche sul numero di comunità identificate con K-clique 2. Tie Strength Per prima cosa è stata effettuata un analisi preliminare per definire le componenti connesse della rete reale. La rete si presenta composta da 1 componente debolmente connessa e da 57 componenti fortemente connesse. Figura2. Distribuzione delle componenti connesse nella rete reale Per analizzare in dettaglio le 57 componenti fortemente connesse sono state utilizzate le seguenti funzioni di NetworkX: nx.number_strongly_connected_components() e nx.number_weakly_connected_components(). Da questa operazione è emerso che l intera rete corrisponde a un unica componente debolmente connessa composta da 5317 nodi. In essa sono state evidenziate poi 57 componenti fortemente connesse, 56 delle quali corrispondono a nodi sparsi fortemente connessi tra loro, ma con legami deboli al di fuori delle loro cerchia. Una delle 57 componenti fortemente connesse rappresenta invece la nostra intera rete (intesa come componente debole) meno i 56 nodi fortemente connessi tra loro ma con legami deboli, per un totale di 5261 nodi. 5

Per facilitare la comprensione della struttura delle componenti è stato utilizzato il comando nx.condensation() per visualizzare l intera rete composta dalle 57 componenti fortemente connesse in maniera schematica. Figura3. Rappresentazione della rete attraverso il comando nx.condensation() I 56 nodi fortemente connessi vanno tutti nella stessa direzione, tranne il nodo con label #55 che è orientato nel senso opposto e che da solo rappresenta l intera rete (sottratti i 56 nodi fortemente connessi con legami deboli). Per cercare di capire come la forza dei legami impatta sulla connettività e la resistenza della rete reale, è stata definita la forza dei legami per ciascun arco all interno della componente fortemente connessa, escludendo i 56 nodi isolati. Successivamente è stata messa a confronto la stessa rete reale in due ambienti di lavoro separati. Nel primo ambiente sono stati rimossi dalla rete i legami più deboli, nel secondo ambiente sono stati rimossi i legami più forti. Per la stima della forza dei legami è stata utilizzata la seguente formula: number of nodes who are neighbors of both A and B number of nodes who are neighbors of at least one of A or B Il seguente codice in python assegna la forza a ciascun legame, rimuove rispettivamente i 10 legami più deboli esportando il grafo attraverso il comando nx.write_graphml(gn, 'remove_weak.graphml'), e i 10 legami più forti attraverso il comando nx.write_graphml(gn, 'remove_strong.graphml'). Sono stati ignorati alcuni archi con forza del legame >= a 0.99 perché gli archi con forza compresa tra 0.99 e 1.0 è probabile che siano connessi con loro stessi da self loop. def edges_tie_weight(dict_edges): dict_tie_strength = {} dict_values = {} for first_node, first_list in dict_edges.iteritems(): for second_node in first_list: second_list = dict_edges[second_node] numerator = list(set(first_list) & set(second_list)) 6

denominator = list(set(first_list) set(second_list) - set([first_node, second_node])) value = float(len(numerator)) / len(denominator) if value < 0.99: key = (first_node, second_node) dict_tie_strength[key] = value dict_values.setdefault(value,[]).append(key) dict_result = {} dict_result['dict_tie_strength'] = dict_tie_strength dict_result['dict_values'] = dict_values return dict_result def remove_edge(dict_edges, tpl_key): lst_values = dict_edges[tpl_key[0]] lst_values.remove(tpl_key[1]) dict_edges = nx.to_dict_of_lists(gs) tie_weight = edges_tie_weight(dict_edges) tw_values = tie_weight['dict_values'] tw_keys = tie_weight['dict_tie_strength'] val_weakest = min(tw_keys.values()) lst_weakest = tw_values[val_weakest] #remove 10 weakest edges removed = [] i = 0 for tpl_key in lst_weakest: if not (tpl_key[0] in removed) and not (tpl_key[1] in removed): remove_edge(dict_edges, tpl_key) removed.append(tpl_key[0]) removed.append(tpl_key[1]) i += 1 if i == 10: break Gn = nx.from_dict_of_lists(dict_edges, nx.digraph()) nx.write_graphml(gn, 'remove_weak.graphml') val_strongest = max(tw_keys.values()) lst_strongest= tw_values[val_strongest] #remove 10 strongest edges removed = [] i = 0 for tpl_key in lst_strongest: if not (tpl_key[0] in removed) and not (tpl_key[1] in removed): remove_edge(dict_edges, tpl_key) removed.append(tpl_key[0]) removed.append(tpl_key[1]) i += 1 if i == 10: break Gn = nx.from_dict_of_lists(dict_edges, nx.digraph()) nx.write_graphml(gn, 'remove_strong.graphml') Per verificare la resistenza della rete sono stati rimossi di volta in volta sempre più legami, da una parte per la rete a cui vengono tolti i legami più forti, dall altra per la rete a cui vengono tolti i legami più deboli. Le statistiche ci mostrano che per 10 legami rimossi rispettivamente da entrambe le parti, la struttura di entrambe le reti rimane stabile ed invariata: 7

Statistiche Crawled network (G) Strongly connected graph (Gs) Gs with eliminated 10 weakest ties Gs with eliminated 10 strongest ties Diameter 9 9 9 9 Radius 0 5 5 5 Avg. path length 3.5295905 3.5271369 3.5272129 3.5271373 (Gephy) Avg. shortest path 3.4924229 3.5271369 3.5272088 3.5271373 length (Networkx) Avg. degree 48.858 49.058 49.055 49.055 Avg. weighted 24.429 24.529 24.527 24.527 degree Density 0.005 0.005 0.005 0.005 Modularity 0.495 0.496 0.498 0.491 Number of 9 10 10 10 communities Avg. clastering 0.193 0.193 0.193 0.193 coefficient Measurement of resilience 0 1 1 1 Tabella5. Statistiche del confronto in seguito alla rimozione di 10 legami deboli e 10 legami forti Per approfondire maggiormente l esperimento è stato portato avanti il processo iterativo di rimozione di 10 legami deboli e 10 legami forti con lo scopo di testare eventuali comportamenti insoliti da parte delle due reti. Come previsto, alla terza iterazione aggiuntiva, la rete da cui sono stati rimossi i legami deboli si è trasformata in due componenti con un legame. Con il comando condensation è stato rappresentato il grafo da cui sono stati rimossi i legami deboli: esso non è più una componente unica. Figura4. Rappresentazione del grafo con legami deboli rimossi Le statistiche nella tabella sottostante ci mostrano i dati per quattro iterazioni: 8

Statistic Gw iteration 2 Gs iteration 2 Gw iteration 3 Gs iteration 3 Gw iteration 4 Gs iteration 4 Diameter 9 9 9 9 9 9 Radius 5 5 5 5 5 5 Avg. path length (Gephy) 3.5272823 3.5273270 3.5273999 3.5273999 3.5272971 3.5272971 Avg. shortest path length (Networkx) 3.5272823 3.5271376 3.5273999 3.5271380 3.5266266 3.5271383 Avg. degree 49.051 49.049 49.047 49.047 49.043 49.043 Avg. weighted degree 24.525 24.525 24.523 24.523 24.522 24.522 Density 0.005 0.005 0.005 0.005 0.005 0.005 Modularity 0.495 0.497 0.493 0.498 0.498 0.487 Number of 8 9 9 8 10 7 communities Avg. clastering coefficient 0.193 0.193 0.193 0.193 0.193 0.193 Measurement of resilience 1 1 1 1 0 1 Tabella6. Statistiche del confronto delle iterazioni per 10 legami deboli e 10 legami forti In conclusione, osservando il comportamento delle due reti, possiamo intuire come i legami più deboli siano più importanti per la connettività rispetto ai legami più forti. Questa considerazione viene fatta a seguito dell osservazione della variazione della lunghezza media degli shortest path. Difatti, come possiamo vedere in Figura5 e Figura6, rimuovere legami forti ha un minimo impatto sulla lunghezza media dei percorsi minimi mentre si dimostra il contrario nel caso della rimozione di legami deboli, per la quale si registra un aumento notevole di average shortest path lenght. 12 10 8 6 4 weak strong 2 0 0 1 2 3 4 Figura5. Distribuzione di average shortest path length per Gw. 9

0,5 0,498 0,496 0,494 0,492 0,49 0,488 0,486 0,484 0,482 0,48 0 1 2 3 4 weakn strongn Figura6. Distribuzione di average shortest path length per Gs. Una successiva conclusione interessante consiste nel fatto che alla rimozione di legami forti la modularità e il numero delle comunità tende a decrescere. Riguardo alla resistenza della rete possiamo concludere che la rimozione di soli 10 legami non è sufficiente a vedere cambiamenti netti all interno della rete. 3. Spreading Per svolgere il seguente task sono stati simulati tre processi di diffusione SIR rispettivamente sulla rete reale e le due reti sintetiche generate secondo il Barabasi Albert Model e l Erdos Renyi Model. I risultati ottenuti sono stati successivamente messi a confronto. Simulando il processo di diffusione SIR si nota che quando il numero di nodi infetti è basso, il virus si diffonde liberamente e che il numero dei nodi infetti aumenta esponenzialmente. Questa è una caratteristica comune anche nei modelli di diffusione SI e SIS. Tuttavia, a differenza dei modelli SI e SIS, in SIR tutti i nodi infettati non sono più infettabili, il che presuppone che siano immuni o morti. Con il parametro R0 < 1 il virus persiste all interno della rete, per R0 = 1 viene individuata la soglia di massimo contagio, mentre per R0 > 1 il virus muore naturalmente. Questo modello è sicuramente più completo rispetto ai modelli SI e SIS proprio per le seguenti ragioni: - non ignora il fatto che un nodo (nel caso specifico una pagina di Wikipedia) possa entrare in contatto solo con un gruppo di nodi a lui vicini nella rete. -considera il fatto che il nodo una volta contagiato possa guarire/morire/ diventare immune. Per simulare il processo SIR sulle tre reti è stato usato Nepidemix con python. Di seguito i parametri utilizzati per le tre reti: 10

Infection rate = 0.09; Recovery rate = 0.04; Initial state S = 95%; Initial state I = 5%; Initial state R = 0%. Il risultato della simulazione con Nepidemix ha prodotto il seguente output in csv illustrato in Figura7: Figura7. Risultati della simulazione della durata di 150 secondi. I risultati completi della simulazione sono stati riportati nel grafico sottostante illustrato in Figura8: 6000 5000 CN_I 4000 3000 2000 1000 CN_S CN_R BA_I BA_S BA_R ER_I ER_S ER_R 0 Time 4,8 9,7 14,6 19,5 24,4 29,3 34,2 39,1 44,0 48,9 53,8 58,7 63,6 68,5 73,4 78,3 83,2 88,1 93,0 97,9 102,8 107,7 112,6 117,5 122,4 127,3 132,2 137,1 142,0 146,9 Figura8. Grafico della distribuzione dei valori per le 3 reti durante l esperimento. 11

Il processo di infezione per tutte e tre le reti ha una distribuzione con curva di Poisson non pura. La probabilità che un nodo infetto non trasmetta il virus ai nodi vicini suscettibili decresce esponenzialmente in base al tempo. Osservando i risultati della tabella possiamo concludere che il virus si diffonde più rapidamente nelle reti sintetiche, in particolare nella rete casuale basata sul modello di Erdos Renyi. Essa infatti presenta un picco di nodi infetti il cui numero ammonta al doppio dei nodi contagiati per la rete reale. Nella rete reale, invece, la crescita esponenziale non è particolarmente spiccata perché è prevista l immunizzazione. Nel complesso le reti sintetiche risultano più simili nel numero di nodi guariti, la cui crescita è giustificata anche dal numero più elevato di nodi che sono stati precedentemente infettati. Ciò potrebbe essere spiegato anche dal fatto che le reti sintetiche hanno entrambe densità 0.7 (rispetto allo 0.2 della rete reale) e quindi si tratta di due reti fortemente connesse. 12