Big Data: tecnologie, metodologie e applicazioni per l`analisi dei dati

annuncio pubblicitario
LSH - Locality Sensitive Hashing
Big Data: tecnologie, metodologie e applicazioni
per l’analisi dei dati massivi
Ministero Dello Sviluppo Economico
Istituto Superiore delle Comunicazioni e delle Tecnologie dell’Informazione
Seminario ISCOM
Simone Angelini
Fondazione Ugo Bordoni
Francesca Capri
Università di Roma Tor Vergata
6 marzo 2017
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
1 / 27
LSH - Locality Sensitive Hashing
Table of Contents
1
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
2 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Introduzione
Problema
La ricerca della similarità tra documenti è uno dei task più complessi in
ambito Big Data.
Obiettivo
Si vogliono esaminare n documenti in modo da raggruppare gli elementi
simili negli stessi sottoinsiemi (bucket)
Possibile soluzione
Riduzione della complessità del problema utilizzando funzioni hash che
rappresentino i documenti con una firma di interi (signature)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
3 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Introduzione
Problema
La ricerca della similarità tra documenti è uno dei task più complessi in
ambito Big Data.
Obiettivo
Si vogliono esaminare n documenti in modo da raggruppare gli elementi
simili negli stessi sottoinsiemi (bucket)
Possibile soluzione
Riduzione della complessità del problema utilizzando funzioni hash che
rappresentino i documenti con una firma di interi (signature)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
3 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Introduzione
Problema
La ricerca della similarità tra documenti è uno dei task più complessi in
ambito Big Data.
Obiettivo
Si vogliono esaminare n documenti in modo da raggruppare gli elementi
simili negli stessi sottoinsiemi (bucket)
Possibile soluzione
Riduzione della complessità del problema utilizzando funzioni hash che
rappresentino i documenti con una firma di interi (signature)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
3 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Alcuni campi di applicazione
La ricerca della similarità tra documenti è un problema ricorrente in un
contesto di Data Mining, e può essere ritrovato in molti ambiti:
Near-duplicate detection (Ricerca dei duplicati, problemi di plagio)
Entity Resolution (Ricerca di profili simili in contesti differenti es.
Twitter/Facebook)
Community Detection (Ricerca di comunità di utenti, in base a
interessi comuni)
Suggerimento di Sinonimi
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
4 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Locality Sensitive Hashing
Cos’è
Algoritmo di riduzione dello spazio vettoriale in un insieme di n documenti
Come funziona
3 fasi:
Shingling
MinHashing
Locality Sensitive Hashing
Definizione
Dati due insiemi S e T, una misura della similarità dei due insiemi è data
dal coefficiente di Jaccard:
SIM(S,T) =
|S∩T |
|S∪T |
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
5 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Locality Sensitive Hashing
Cos’è
Algoritmo di riduzione dello spazio vettoriale in un insieme di n documenti
Come funziona
3 fasi:
Shingling
MinHashing
Locality Sensitive Hashing
Definizione
Dati due insiemi S e T, una misura della similarità dei due insiemi è data
dal coefficiente di Jaccard:
SIM(S,T) =
|S∩T |
|S∪T |
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
5 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Locality Sensitive Hashing
Cos’è
Algoritmo di riduzione dello spazio vettoriale in un insieme di n documenti
Come funziona
3 fasi:
Shingling
MinHashing
Locality Sensitive Hashing
Definizione
Dati due insiemi S e T, una misura della similarità dei due insiemi è data
dal coefficiente di Jaccard:
SIM(S,T) =
|S∩T |
|S∪T |
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
5 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Pipeline
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
6 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Shingling (1/3)
Obiettivo
Scomporre ogni documento in k-grammi, ossia in raggruppamenti di k
token
Esempio
Documento: ”Oggi è una bella giornata, non pioverà”
1-grammi: Oggi, è, una, bella, giornata, non, pioverà
2-grammi: Oggi è, è una, una bella, bella giornata, giornata non,
non pioverà
3-grammi: Oggi è una, è una bella, una bella giornata, bella giornata
non, giornata non pioverà
...
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
7 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Shingling (1/3)
Obiettivo
Scomporre ogni documento in k-grammi, ossia in raggruppamenti di k
token
Esempio
Documento: ”Oggi è una bella giornata, non pioverà”
1-grammi: Oggi, è, una, bella, giornata, non, pioverà
2-grammi: Oggi è, è una, una bella, bella giornata, giornata non,
non pioverà
3-grammi: Oggi è una, è una bella, una bella giornata, bella giornata
non, giornata non pioverà
...
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
7 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Minhashing(2/3)
Obiettivo
Costruire una firma (signature) di h interi associata ad ogni documento,
in base a una famiglia H di funzioni hash casuali e indipendenti e ai
k-grammi individuati al passo precedente.
Algoritmo
1
Si applica una funzione hash a tutti gli shingle di un documento
2
Di tutti i valori ricavati dalle funzioni hash, viene selezionato il
minimo
3
Si ripete il procedimento per tutte le funzioni hi ∈ H
4
Al termine si avrà un vettore di k interi, che rappresentano la firma
del documento
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
8 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Minhashing(2/3)
Obiettivo
Costruire una firma (signature) di h interi associata ad ogni documento,
in base a una famiglia H di funzioni hash casuali e indipendenti e ai
k-grammi individuati al passo precedente.
Algoritmo
1
Si applica una funzione hash a tutti gli shingle di un documento
2
Di tutti i valori ricavati dalle funzioni hash, viene selezionato il
minimo
3
Si ripete il procedimento per tutte le funzioni hi ∈ H
4
Al termine si avrà un vettore di k interi, che rappresentano la firma
del documento
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
8 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Locality Sensitive Hashing(3/3)
Obiettivo
Raggruppare i documenti simili in base alle firme ottenute dal Minhashing
Algoritmo
1
La matrice delle firme viene divisa in b bande di r righe ciascuna
2
I numeri b e r sono scelti in modo tale che b ∗ r = h
3
I documenti che avranno corrispondenza totale in almeno una delle b
bande rispettano la regola di similarità, per cui verranno raggruppati
negli stessi bucket
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
9 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Locality Sensitive Hashing(3/3)
Obiettivo
Raggruppare i documenti simili in base alle firme ottenute dal Minhashing
Algoritmo
1
La matrice delle firme viene divisa in b bande di r righe ciascuna
2
I numeri b e r sono scelti in modo tale che b ∗ r = h
3
I documenti che avranno corrispondenza totale in almeno una delle b
bande rispettano la regola di similarità, per cui verranno raggruppati
negli stessi bucket
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
9 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Matrice delle firme
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
10 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: raggruppamenti in bucket
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
11 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Scelta dei valori b ed r
Obiettivo
Scelta ottimale dei parametri b e r in base all’obiettivo
Scelta
In base all’obiettivo che si vuole raggiungere, si sceglieranno dei valori di
b e r più o meno alti
aumentando la larghezza di una banda (r), si avrà una similarità più
restrittiva (duplicate o near-duplicate)
aumentando il numero di bande (b), si avrà una similarità più lasca
si dimostra che la probabilità di collisione dei valori hash di due
documenti distinti è uguale al coefficiente di Jaccard dei due
documenti
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
12 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Scelta dei valori b ed r
Obiettivo
Scelta ottimale dei parametri b e r in base all’obiettivo
Scelta
In base all’obiettivo che si vuole raggiungere, si sceglieranno dei valori di
b e r più o meno alti
aumentando la larghezza di una banda (r), si avrà una similarità più
restrittiva (duplicate o near-duplicate)
aumentando il numero di bande (b), si avrà una similarità più lasca
si dimostra che la probabilità di collisione dei valori hash di due
documenti distinti è uguale al coefficiente di Jaccard dei due
documenti
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
12 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
LSH: Curva S-Shaped
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
13 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Implementazione LSH - Hadoop / Spark
Dettagli implementativi
Implementazione in Java di LSH a 2 fasi (algoritmo originale)
Implementazione in Java di LSH a 4 fasi per migliorare la precisione
dell’algoritmo
Ricerca di similarità tra documenti (tweet)
Ricerca di similarità tra utenti, in base al contenuto dei loro tweet
Implementazioni sia in ambiente Hadoop, sia in ambiente Spark
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
14 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Comparazione tempi - Hadoop vs Spark 1/2
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
15 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Comparazione tempi - Hadoop vs Spark 2/2
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
16 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 1/2
Distanza tra nodi
Dato un grafo G = (V, E) di n nodi e m archi, la distanza d(u, v) tra
due nodi u, v ∈ V è la lunghezza del cammino minimo da u verso v.
Diametro di un grafo
Il diametro d(G) è la distanza massima tra due nodi u, v ∈ V . In altre
parole è il cammino minimo più lungo all’interno del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
17 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 1/2
Distanza tra nodi
Dato un grafo G = (V, E) di n nodi e m archi, la distanza d(u, v) tra
due nodi u, v ∈ V è la lunghezza del cammino minimo da u verso v.
Diametro di un grafo
Il diametro d(G) è la distanza massima tra due nodi u, v ∈ V . In altre
parole è il cammino minimo più lungo all’interno del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
17 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 1/2
Distanza tra nodi
Dato un grafo G = (V, E) di n nodi e m archi, la distanza d(u, v) tra
due nodi u, v ∈ V è la lunghezza del cammino minimo da u verso v.
Diametro di un grafo
Il diametro d(G) è la distanza massima tra due nodi u, v ∈ V . In altre
parole è il cammino minimo più lungo all’interno del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
17 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 2/2
Diametro effettivo
Il diametro effettivo deff (G) è definito come la distanza minima per cui
sono raggiungibili il 90% di tutte le coppie di nodi u, v ∈ V .
Firma di un nodo
La firma sig(u) di un nodo u ∈ V è definita come una sequenza di k
interi che identifica il nodo u.
Hop-plot
Dato un grafo G = (V, E), l’hop plot di G descrive la quantità di coppie
di nodi raggiungibili in al più h passi.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
18 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 2/2
Diametro effettivo
Il diametro effettivo deff (G) è definito come la distanza minima per cui
sono raggiungibili il 90% di tutte le coppie di nodi u, v ∈ V .
Firma di un nodo
La firma sig(u) di un nodo u ∈ V è definita come una sequenza di k
interi che identifica il nodo u.
Hop-plot
Dato un grafo G = (V, E), l’hop plot di G descrive la quantità di coppie
di nodi raggiungibili in al più h passi.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
18 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Grafi - Qualche definizione 2/2
Diametro effettivo
Il diametro effettivo deff (G) è definito come la distanza minima per cui
sono raggiungibili il 90% di tutte le coppie di nodi u, v ∈ V .
Firma di un nodo
La firma sig(u) di un nodo u ∈ V è definita come una sequenza di k
interi che identifica il nodo u.
Hop-plot
Dato un grafo G = (V, E), l’hop plot di G descrive la quantità di coppie
di nodi raggiungibili in al più h passi.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
18 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Stima del diametro effettivo di un grafo
Obiettivo
Dato un grafo G = (V, E), si vuole avere una stima del suo diametro
effettivo.
Idea
Assegnare una firma ad ogni nodo del grafo, per poi utilizzare la tecnica
del minhashing per stimarne il diametro effettivo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
19 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Stima del diametro effettivo di un grafo
Obiettivo
Dato un grafo G = (V, E), si vuole avere una stima del suo diametro
effettivo.
Idea
Assegnare una firma ad ogni nodo del grafo, per poi utilizzare la tecnica
del minhashing per stimarne il diametro effettivo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
19 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 1: Signature dei nodi del grafo
Obiettivo
Costruire una firma (signature) per ogni nodo u ∈ V di k interi,
utilizzando una famiglia H di k funzioni hash indipendenti.
Pseudo Codice
foreach u ∈ V do
foreach hk ∈ H do
SIGk (u) := hk (u)
end
SIG(u) := [SIG1 (u), ..., SIGk (u)]
end
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
20 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 1: Signature dei nodi del grafo
Obiettivo
Costruire una firma (signature) per ogni nodo u ∈ V di k interi,
utilizzando una famiglia H di k funzioni hash indipendenti.
Pseudo Codice
foreach u ∈ V do
foreach hk ∈ H do
SIGk (u) := hk (u)
end
SIG(u) := [SIG1 (u), ..., SIGk (u)]
end
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
20 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 2: Signature del grafo
Obiettivo
Costruire la firma SIG(G) del Grafo G, prendendo il valore minimo di
ogni funzione hash, ∀u ∈ V .
Pseudo Codice
foreach u ∈ V do
foreach k (funzione hash ) do
if SIGk (u) < SIGk (G) then
SIGk (G) := SIGk (u) ;
end
end
end
SIG(G) := [SIG1 (G), ..., SIGk (G)]
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
21 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 2: Signature del grafo
Obiettivo
Costruire la firma SIG(G) del Grafo G, prendendo il valore minimo di
ogni funzione hash, ∀u ∈ V .
Pseudo Codice
foreach u ∈ V do
foreach k (funzione hash ) do
if SIGk (u) < SIGk (G) then
SIGk (G) := SIGk (u) ;
end
end
end
SIG(G) := [SIG1 (G), ..., SIGk (G)]
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
21 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 3: Aggiornamento della firma dei nodi
Obiettivo
Si vuole aggiornare la firma SIG(u) di ogni nodo u ∈ V , calcolando il
minhash di ogni elemento della firma del nodo, con i corrispettivi dei nodi
adiacenti.
Pseudo Codice
foreach u do
foreach u → v ∈ E do
SIG(u) := M erge(SIG(u), SIG(v))
end
end
dove la funzione Merge agisce come di seguito:
foreach k (funzione hash ) do
SIGk (u) := min{SIGk (u), SIGk (v)}
end
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
22 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Fase 3: Aggiornamento della firma dei nodi
Obiettivo
Si vuole aggiornare la firma SIG(u) di ogni nodo u ∈ V , calcolando il
minhash di ogni elemento della firma del nodo, con i corrispettivi dei nodi
adiacenti.
Pseudo Codice
foreach u do
foreach u → v ∈ E do
SIG(u) := M erge(SIG(u), SIG(v))
end
end
dove la funzione Merge agisce come di seguito:
foreach k (funzione hash ) do
SIGk (u) := min{SIGk (u), SIGk (v)}
end
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
22 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Analisi
Obiettivo
Si vuole avere una stima del numero di coppie raggiungibili nel grafo
|N (G))| in al più un passo.
Algoritmo
|N (u))| = n · Jaccard(SIG(G),
SIG(u));
P
|N (G))| = n · u Jaccard(SIG(G), SIG(N (u));
Costruzione Hop Plot
Iterando questo procedimento h volte, è possibile ottenere una stima del
numero di coppie raggiungibili del grafo in al più h passi, permettendo di
costruire l’hop plot del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
23 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Analisi
Obiettivo
Si vuole avere una stima del numero di coppie raggiungibili nel grafo
|N (G))| in al più un passo.
Algoritmo
|N (u))| = n · Jaccard(SIG(G),
SIG(u));
P
|N (G))| = n · u Jaccard(SIG(G), SIG(N (u));
Costruzione Hop Plot
Iterando questo procedimento h volte, è possibile ottenere una stima del
numero di coppie raggiungibili del grafo in al più h passi, permettendo di
costruire l’hop plot del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
23 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Analisi
Obiettivo
Si vuole avere una stima del numero di coppie raggiungibili nel grafo
|N (G))| in al più un passo.
Algoritmo
|N (u))| = n · Jaccard(SIG(G),
SIG(u));
P
|N (G))| = n · u Jaccard(SIG(G), SIG(N (u));
Costruzione Hop Plot
Iterando questo procedimento h volte, è possibile ottenere una stima del
numero di coppie raggiungibili del grafo in al più h passi, permettendo di
costruire l’hop plot del grafo.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
23 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Conclusioni
Riepilogo statistiche
L’algoritmo presentato rende possibili diverse analisi statistiche sul grafo
di input:
|N (u, h))| ∀u ∈ V, ∀h
|N (h))| ∀h
d ≤ dMAX (G)
deff (G)
davg (G)
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
24 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Benchmarking dell’algoritmo con Spark GraphX
Alcuni dettagli implementativi
Implementazione dell’algoritmo nel linguaggio Scala, nativo di Spark
Utilizzo della libreria GraphX per la gestione dei grafi
Implementazione delle funzioni hash mediante la libreria Guava di
Google (murmur 32)
Dataset utilizzati
Nodi
Archi
Black Friday
2.7E+06
3.8E+06
World Series
4.74E+05
8.40E+05
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Italian sample
2.54E+06
1.37E+07
Simone Angelini - Francesca Capri
25 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Benchmarking dell’algoritmo con Spark GraphX
Alcuni dettagli implementativi
Implementazione dell’algoritmo nel linguaggio Scala, nativo di Spark
Utilizzo della libreria GraphX per la gestione dei grafi
Implementazione delle funzioni hash mediante la libreria Guava di
Google (murmur 32)
Dataset utilizzati
Nodi
Archi
Black Friday
2.7E+06
3.8E+06
World Series
4.74E+05
8.40E+05
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Italian sample
2.54E+06
1.37E+07
Simone Angelini - Francesca Capri
25 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Benchmarking dell’algoritmo con Spark GraphX
Risultati
Average
Distance
Valori esatti
Stima
8,463
8,480
Valori esatti
Stima
6,398
6,419
Valori esatti
Stima
16,124
16,369
Diametro
Diametro
Effettivo 90%
World Series
11,205
27
11,174
25
Italian Sample
9,315
62
9,318
54
Black Friday
22,722
70
22,824
66
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
Coppie
raggiungibili
2, 577 · 109
2, 562 · 109
3, 877 · 1011
3, 894 · 1011
11, 300 · 109
11, 703 · 109
26 / 27
LSH - Locality Sensitive Hashing
Introduzione
LSH per similarità tra documenti
Benchmarking: Hadoop vs Spark
LSH per analisi statistiche su grafi
Benchmarking: Spark GraphX
Ringraziamenti
Ringraziamenti
Tutti gli studi e i lavori di analisi sono stati effettuati all’interno del
Laboratorio Big Data di ISCOM.
Big Data: tecnologie, metodologie e applicazioni per l’analisi dei dati massivi
Simone Angelini - Francesca Capri
27 / 27
Scarica