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