Metodi e applicazioni per social networks
SOcial MEdia MiNIng
Social Media Mining is the processof representing, analyzing, and extracting meaningful patterns from social media data
Generalità del corso
Docenti:
– Sabrina Gaito [email protected]
– Matteo Zignani [email protected]
Ricevimento:
– Su appuntamento via mail
Web:
http://someni.di.unimi.it
Orario:
– Lunedì Aula Beta - Via Comelico 14.30 - 16.30 da confermare
– Mercoledì Aula Beta - Via Comelico 11.30 - 13.30
– Giovedì Aula Beta - Via Comelico 13.45 - 15.30
– Venerdì Aula Delta - Via Comelico 09:00 - 12:45 (Laboratorio)
Teoria
ProgrammaTeoria
• Graph essential• Rappresentazione di grafi• Tipi di grafo• Sottografi, diadi e triadi• Cammini• Grafi connessi e componenti• Algoritmi su grafi
• Misure di popolarità e centralità• Degree• Betweenness, closeness, …
• Random networks e scale free network• Diadi:
• Link strength: weak e strong • Link reciprocity• Link transitivity and balance theory
• Triadi:• Clustering coefficient• Common neighbours• Link prediction
• Small world network• Sottografi: Clique and community detection
• Applicazioni• Information diffusion• Influence e homophily• Recommendation
Materiale Didattico
Reza Zafarani, Mohammad Ali Abbasi, Huan LiuSocial Media Mining: An IntroductionA Textbook by Cambridge University Presshttp://www.cambridge.org/ca/academic/subjects/computer-science/knowledge-management-databases-and-data-mining/social-media-mining-introduction [http://dmml.asu.edu/smm/]
Albert-László BarabásiNetwork Sciencehttp://barabasi.com/networksciencebook/
D. Easley, J. KleinbergNetworks, Crowds, and Markets: Reasoning About a Highly Connected Worldhttp://www.cs.cornell.edu/home/kleinber/networks-book/
Wasserman, Stanley and Katherine Faust. 1994.Social Network Analysis: Methods and Applications.Cambridge: Cambridge University Press.
Newman, M.E.J.Networks: An Introduction.Oxford University Press. 2010.
Modalità d’esame
Scritto:
– Domande aperte
– Esercizi
Orale:
– Presentazione dal progetto
– Domande sul progetto
Laboratorio
ProgrammaLaboratorio
– Introduzione a Python
– Web scraping
– Sviluppo di un focused crawler (Scrapy)
– Social Media API
– Twitter API
– Tools per l’analisi di reti sociali (NetworkX)
– Utilizzo delle metriche e indici visti nella parte di teoria
– Analisi delle proprietà dei nodi e dei link
– Analisi mesoscopica
– Estrazioni di sottografi particolari
– Community detection
– Graph Visualization (Gephi)
Linguaggi, librerie ed altri tools
Linguaggio di programmazione: Python
– Anaconda (distribuzione Python orientata al calcolo scientifico e data analysis) @ https://www.anaconda.com/download/
– Python 3.6 (consigliato)
– Jupyter Notebook: web-app per l’analisi dei dati in Python (sviluppo applicazioni, visualizzazione, editor, file explorer, etc...)
Librerie: networkx, requests, twython, flask
Visualizzazione: Gephi
Hardware:
– Postazioni in laboratorio
– Utilizzo del laptop (vedi slide in Appendice)
Progetto
– Progetto: analisi di una rete originata da dati provenienti da un social media.
– Il progetto deve essere originale e viene proposto dallo studente. Sono disponibili alcuni progetti proposti dai docenti, solo nel caso in cui non si abbia alcuna idea.
– Una bozza del progetto viene discussa preventivamente con i docenti del corso in modo da verificarne la reale fattibilità e originalità.
– Il progetto viene svolto individualmente o in caso di progetto complesso a coppie (deve essere ben definito il contributo dei membri).
– Ogni progetto è costituito dalle fasi:– Data collection
– Analisi
– Commento dei risultati ottenuti
CriteridiValutazione
Data collection (Raccolta Dati):
– Base: Utilizzo di un dataset già disponibile
– Intermedio: Utilizzo di API supportate da moduli Python adeguatamente documentati
– Avanzato:
– Utilizzo di API scarsamente supportate da moduli Python
– Raccolta dati utilizzando web scraping e focused crawler
Analisi:
– Base: analisi delle proprietà fondamentali di una rete (cfr. articolo su analisi di Twitter o Facebook, escluso ANF ed avearge shortest path)
– Intermedio: analisi delle proprietà fondamentali di una rete, analisi assortatività per attributo, community detection (intermedio/avanzato)
– Avanzato: analisi precedenti +
– Implementazione di misure/algoritmi non presenti in Networkx
– Analisi delle relazioni tra ulteriore oggetti (commenti, elementi testuali, foto, video, informazioni geografiche, informazioni sugli account, etc.. ) e la struttura della rete
Commenti sul'analisi effettuata:
– Base: statistiche descrittive e confronto con altre reti simili
– Intermedio: statistiche descrittive e analisi critica rispetto alle nozioni viste nelle lezioni di teoria
– Avanzato: intermedio + discussione originale su alcuni/tutti i risultati ottenuti.
Dimensione del dataset (valutato in caso di data collection intermedia o avanzata):
– Numero di nodi, archi del grafo
– Numero di elementi/oggetti utilizzati nell'analisi intermedia/avanzata
– Utilizzo di framework per la manipolazione di Big Data (Apache Spark, Hadoop)
Esempi di progetti
– NBA e YouTube (Ba Cheick)
http://someni.di.unimi.it/progetti2017/Ba-Youtube.pdf
– Eurovision Song Contest su Twitter (Laura Mandelli)
http://someni.di.unimi.it/progetti2017/Mandelli-Twitter_ESC.pdf
– Mastodon (Dondi Federica)
http://someni.di.unimi.it/progetti2017/Dondi-Mastodon.pdf
MaterialeDidattico
Twitter API
Ad ogni lezione di laboratorio è associata un Jupyter Notebook con esempi ed esercizi
Agenda e orario
Agenda (Tentativo)
02 Marzo: Introduzione a Python
9 Marzo: Web scraping
16 Marzo: Focused crawling + Scrapy
23 Marzo: Oauth e Twitter API
06 Aprile: Webapp, Social plugin e Flask
13 Aprile: Presentazione ‘bozza’ del progetto
20 Aprile: Networkx e centralità
27 Aprile: Assortatività e link analysis
04 Maggio: Community detection
11 Maggio: Sviluppo progetto
18 Maggio: Sviluppo progetto
Orario: 9:00 – 12:45
Installazione Anaconda
Desktop/Laptop Studente
https://docs.anaconda.com/anaconda/install/linux
Win: Installare Anaconda senza privilegi di amministrazione e solo per il vostro utente
macOS: Installare Anaconda solo per il vostro utente
Linux: seguire le istruzioni (vedi link nella slide).
Check Installazione:1. Aprire una shell2. Digitare conda listSe Anaconda è stato installato correttamente viene visualizzato l’elenco dei package/moduli installati