La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele.

Presentazioni simili


Presentazione sul tema: "1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele."— Transcript della presentazione:

1 1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele Degli Esposti – Letizia Falcone

2 15/03/2006An Approximation-Based Data Structure for Similarity Search2 Dall’R-tree al VA-File I metodi di data-partitioning degradano all’aumentare delle dimensioni dello spazio vettoriale. Soluzione: Vector-Approximation FILE Cos’è? Perché lo usiamo? È un file che contiene un’approssimazione compatta e geometrica di ciascun vettore. Usualmente le approssimazioni occupano solo il 10-20% dello spazio occupato dai vettori stessi. Il vantaggio principale riguarda le buone prestazioni all’aumentare della dimensionalità. Si può dimostrare che gli algoritmi basati sul VA- file sono più performanti, rispetto ai metodi di data-partitioning, di almeno un ordine di grandezza.

3 15/03/2006An Approximation-Based Data Structure for Similarity Search3 Costruzione VA-File (1) 1 0.9 0.1 11 00 2 0.7 0.1 10 00 3 0.2 0.1 00 00 4 0.7 0.3 10 10 5 0.3 0.2 01 01 6 0.1 0.4 00 01 7 0.6 0.6 10 10 8 0.4 0.5 01 10 9 0.9 0.8 11 11 10 0.4 0.9 01 11 11 0.2 07 00 11 00 011011 00 01 10 11 12 3 4 5 6 7 8 9 10 11

4 15/03/2006An Approximation-Based Data Structure for Similarity Search4 00 011011 00 01 10 11 lili qjqj m j [r i,y ] m j [r i,y +1] uiui r i,y Costruzione VA-File (2) u i = upper bound del vettore i l i = lower bound del vettore i m j [r i,x ]m j [r i,x +1] r i,x

5 15/03/2006An Approximation-Based Data Structure for Similarity Search5 00 011011 00 01 10 11 l i = 0 m j [r i,y ] uiui q j = r i,y Costruzione VA-File (3) q j = r i,x m j [r i,x ]

6 15/03/2006An Approximation-Based Data Structure for Similarity Search6 VA- Simple Search Algorithm Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

7 15/03/2006An Approximation-Based Data Structure for Similarity Search7 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

8 15/03/2006An Approximation-Based Data Structure for Similarity Search8 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate;

9 15/03/2006An Approximation-Based Data Structure for Similarity Search9 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate; Inserimento del punto i al posto del k-esimo se dst[i] < dst[k]

10 15/03/2006An Approximation-Based Data Structure for Similarity Search10 Algoritmo VA-SSA Definizione Variabili Generali Chiamata Funzione InitCandidate Ciclo FOR ans: vettore dei k risultati dst: vettore delle distanze dei k risultati a: vettore di Approssimazione dei punto p: vettore reale del punto q: vettore query N: numero dei punti i l i : lower bound di i  : raggio di ricerca  := InitCandidate(); FUNC InitCandidate(): REAL; VAR j: INT; FOR j:= 1 TO k DO dst[j]:= MAXREAL RETURN MAXREAL; END-FUNC InitCandidate; Inizializza le distanze dei k vettori risultato alla massima distanza possibile FOR i:= 1 TO N DO l i := GetBounds(a i,q); IF l i <  THEN  := Candidate(L p (p i,q), i); END-FOR; Restituisce il lower bound relativo ad ogni punto FUNC Candidate(  :REAL;i:INT): REAL; IF  <dst[k] THEN dst[k]:=  ; ans[k]:= i; SortOnDst(ans, dst, k); RETURN dst[k]; END-FUNC Candidate; Ordina i k “punti risultato” per distanza crescente Inserimento del punto i al posto del k-esimo se dst[i] < dst[k]

11 15/03/2006An Approximation-Based Data Structure for Similarity Search11 VA-SSA 00011011 00 01 10 11 q  MAXREAL 1 l1l1 << L p1 < Dst[3] a1a1 2 a2a2 l2l2 L p2 <  Dst[3] 3 l3l3 <  L p3 < Dst[3] <  a3a3 Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3Dst[1]=MRDst[2]=MRDst[3] =L p1 Dst[1] Dst[2]=MRDst[3] = MR Dst[1] =L p1 Dst[2]=MRDst[3] = L p2 Dst[1] Dst[2] = L p1 Dst[3] = MR Dst[1] = L p2 Dst[2] = L p1 Dst[3] = L p3 Dst[1] Dst[2] =L p2 Dst[3] =L p1  L p1

12 15/03/2006An Approximation-Based Data Structure for Similarity Search12 VA-SSA 00011011 00 01 10 11 q 1 a1a1  L p1 2 a2a2 3 a3a3 Hp:k=3 Dst[1] = L p3 Dst[2] =L p2 Dst[3] =L p1 4 l4l4  L p4 < Dst[3]Dst[1] = L p3 Dst[2] =L p2 Dst[3] =L p4 Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p2  L p2 a4a4

13 15/03/2006An Approximation-Based Data Structure for Similarity Search13 VA-SSA 00011011 00 01 10 11 q 1 a1a1 2 a2a2 3 a3a3 Hp:k=3 4 Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p2  L p2 a4a4 5 a5a5 l5l5 6 a6a6 l6l6 <  >  L p6 < Dst[3]Dst[1] = L p3 Dst[2] =L p4 Dst[3] = L p6 Dst[1] = L p3 Dst[2] = L p6 Dst[3] =L p4  L p4 Punti più vicini: 3, 6, 4

14 15/03/2006An Approximation-Based Data Structure for Similarity Search14 VA - Near Optimal Algorithm Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Pila “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR;  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

15 15/03/2006An Approximation-Based Data Structure for Similarity Search15 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

16 15/03/2006An Approximation-Based Data Structure for Similarity Search16 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE;

17 15/03/2006An Approximation-Based Data Structure for Similarity Search17 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE; Calcola e restituisce le distanze tra la query e i punti

18 15/03/2006An Approximation-Based Data Structure for Similarity Search18 Algoritmo VA-NOA Definizioni Variabili Generali N: numero dei punti i  raggio di ricerca l i : lower bound dell’i-esimo punto u i : upper bound dell’i-esimo punto Heap: Coda “a priorità” ad l i crescenti Chiamata InitCandidate Ciclo FOR Chiamata InitCandidate e definizione PopHeap Ciclo WHILE  := InitCandidate(); FOR i:= 1 TO N DO l i, u i := GetBounds(a i,q); IF l i <=  THEN  := Candidate(u i, i); InsertHeap (Heap, l i, i); END-FOR; Calcola e restituisce le distanze dalla query rispetto agli UPPER BOUND, non ai punti Inserisce nella coda Heap ordinando in funzione del LOWER BOUND  := InitCandidate(); l i, i:= PopHeap (Heap, l i, i); FASE1FASE1 FASE2FASE2 WHILE l i <  DO  := Candidate(L p (p i,q), i); l i, i:= PopHeap (Heap, l i, i); END-WHILE; Calcola e restituisce le distanze tra la query e i punti Estrae dalla coda Heap in funzione del LOWER BOUND più vicino alla query

19 15/03/2006An Approximation-Based Data Structure for Similarity Search19 VA-NOA (Fase 1) 00011011 00 01 10 11 q  MAXREAL 1 l1l1 << u1u1 < Dst[3] a1a1 2 a2a2 l2l2 u2u2 <  Dst[3] 3 l3l3 <  u3u3 < Dst[3] <  a3a3 Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3Dst[1]=MRDst[2]=MRDst[3] =u 1 Dst[1] Dst[2]=MRDst[3] = MR Dst[1] =u 1 Dst[2]=MRDst[3] = u 2 Dst[1] Dst[2] = u 1 Dst[3] = MR Dst[1] = u 2 Dst[2] = u 1 Dst[3] = u 3 Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 1  u 1 Heap l1l1l1l1 l2l2l2l2 l1l1l1l1 l3l3l3l3 l2l2l2l2 l1l1l1l1

20 15/03/2006An Approximation-Based Data Structure for Similarity Search20 VA-NOA (Fase 1) 00011011 00 01 10 11 q 1 a1a1  u 1 2 a2a2 3 a3a3 Hp:k=3 Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 1 4 l4l4 = 0 u4u4 < Dst[3]Dst[1] = u 2 Dst[2] =u 3 Dst[3] =u 4 Dst[1] Dst[2] =u 2 Dst[3] = u 3  u 3 a4a4 Heap l3l3l3l3 l2l2l2l2 l1l1l1l1 l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1

21 15/03/2006An Approximation-Based Data Structure for Similarity Search21 VA-NOA (Fase 1) 00011011 00 01 10 11 q 1 a1a1 2 a2a2 3 a3a3 Hp:k=3 4 Dst[1] = u 4 Dst[2] =u 2 Dst[3] = u 3  u 3 a4a4 5 a5a5 l5l5 6 a6a6 l6l6 <  u6u6 < Dst[3]Dst[1] = u 4 Dst[2] = u 2 Dst[3] = u 6 Dst[1] = u 4 Dst[2] = u 6 Dst[3] = u 2  u 2 u5u5 > Dst[3] Heap l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1 l4l4l4l4 l3l3l3l3 l2l2l2l2 l1l1l1l1 l5l5l5l5 l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

22 15/03/2006An Approximation-Based Data Structure for Similarity Search22 VA-NOA (Fase 2) 00011011 00 01 10 11 q  MAXREAL 1 2 3 l4l4  Dst[1]=MRDst[2]=MRDst[3]=MR Hp:k=3 Heap l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5 4 5 6Dst[1]=MRDst[2]=MRDst[3] =L p4 Dst[1] Dst[2]=MRDst[3] = MR l4l4l4l4 l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

23 15/03/2006An Approximation-Based Data Structure for Similarity Search23 VA-NOA (Fase 2) 00011011 00 01 10 11 q  MAXREAL 1 2 3 l3l3 <  Dst[1] =L p4 Dst[2]=MRDst[3]=MR Hp:k=3 Heap l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5 4 5 6Dst[1] =L p4 Dst[2]=MRDst[3] =L p3 Dst[1] Dst[2] =L p4 Dst[3] = MR l3l3l3l3 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5

24 15/03/2006An Approximation-Based Data Structure for Similarity Search24 VA-NOA (Fase 2) 00011011 00 01 10 11 q  MAXREAL 1 2 3 l6l6 <  Dst[1] =L p3 Dst[2] =L p4 Dst[3]=MR Hp:k=3 Heap l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5 4 5 6Dst[1] =L p3 Dst[2] =L p4 Dst[3] =L p6 Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4 l6l6l6l6 l2l2l2l2 l1l1l1l1 l5l5l5l5  L p4

25 15/03/2006An Approximation-Based Data Structure for Similarity Search25 VA-NOA (Fase 2) 00011011 00 01 10 11 q 1 2 3 l2l2 <  Hp:k=3 Heap l2l2l2l2 l1l1l1l1 l5l5l5l5 4 5 6 l2l2l2l2 l1l1l1l1 l5l5l5l5  L p4 L p2 >  Dst[3]Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4

26 15/03/2006An Approximation-Based Data Structure for Similarity Search26 VA-NOA (Fase 2) 00011011 00 01 10 11 q 1 2 3 l1l1 >  Hp:k=3 Heap l1l1l1l1 l5l5l5l5 4 5 6 l1l1l1l1 l5l5l5l5  L p4Dst[1] =L p3 Dst[2] =L p6 Dst[3] = L p4 Punti più vicini: 3, 6, 4

27 15/03/2006An Approximation-Based Data Structure for Similarity Search27 Confronto VA-File ed R-Tree + Algoritmi basati su VA-File non richiedono la costruzione di alcun albero - Algoritmi VA-File visitano sicuramente tutti i punti... +... Però ogni lettura è computazionalmente meno costosa + Algoritmi per i VA-File calcolano le distanze solo per i candidati = Algoritmi sui VA-File migliorano all’aumentare delle dimensioni mentre gli R-Tree peggiorano

28 15/03/2006An Approximation-Based Data Structure for Similarity Search28 Confronto VA-File ed R-Tree (1) (a): Tempo di CPU relativo al database immagine (b): Tempo di esecuzione (wall-clock time) relativo al database immagine

29 15/03/2006An Approximation-Based Data Structure for Similarity Search29 Confronto VA-File ed R-Tree (4) (a): Selettività dei blocchi in funzione del numero delle dimensioni. (b): Numero totale dei blocchi visitati in funzione del numero di dimensioni. Data Set REALE

30 15/03/2006An Approximation-Based Data Structure for Similarity Search30 Confronto tra VA-SSA e VA-NOA VA-NOA visita due volte i punti nella pila... VA-NOA visita due volte i punti nella pila...... ma nella prima fase calcola solo gli upper bound... ma nella prima fase calcola solo gli upper bound Difatti VA-NOA calcola L p, la distanza pesata, su un numero ridotto di candidati Difatti VA-NOA calcola L p, la distanza pesata, su un numero ridotto di candidati In pratica: In pratica: –VA-SSA è di complessità O(N) –VA-NOA è di complessità O(N 2 log 2 N 1 )

31 15/03/2006An Approximation-Based Data Structure for Similarity Search31 Confronto tra VA-SSA e VA-NOA (a): Selettività vettoriale per il VA-File in funzione della grandezza del database. (b): Selettività dei blocchi in funzione della dimensionalità.

32 15/03/2006An Approximation-Based Data Structure for Similarity Search32 Bibliografia “An Approximation-Based Data Structure for Similarity Search” – R. Weber, S. Blott “An Approximation-Based Data Structure for Similarity Search” – R. Weber, S. Blott Hermes TR, 1998 “Algorithms” – R. Sedgewick “Algorithms” – R. Sedgewick Addison-Wesley Publishing Company, 1983

33 33 Grazie per l’attenzione!! Diego Cera Michele Degli Esposti Letizia Falcone


Scaricare ppt "1 An Approximation- Based Data Structure for Similarity Search R. Weber, S. Blott Hermes, 1998 Sistemi Informativi per le Decisioni Diego Cera – Michele."

Presentazioni simili


Annunci Google