Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoDafne Mura Modificato 10 anni fa
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
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.