La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

1 Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Peter N. Yanilos Presentazione di: Medri Matteo Tronconi Federica.

Presentazioni simili


Presentazione sul tema: "1 Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Peter N. Yanilos Presentazione di: Medri Matteo Tronconi Federica."— Transcript della presentazione:

1 1 Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Peter N. Yanilos Presentazione di: Medri Matteo Tronconi Federica Vassura Annalisa Sistemi informativi per le decisioni LS

2 2 Sommario Obiettivo: ricerca del Nearest Neighbor in un generico spazio metrico. Come ridurre il tempo di ricerca? Ordinando opportunamente i dati. Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Descrizione teorica dei VP-Tree Un algoritmo di ricerca del NN Risultati sperimentali: confronto con i KD-Tree nello spazio Euclideo

3 3 VP-tree VP-tree (Vantage Point) Sviluppato da Peter N. Yanilos nel 1986/87 Albero binario Partizione ricorsiva dello spazio ad ogni nodo tramite una funzione distanza (“tagli sferici” con centro in VP) Ordinano gli oggetti in modo da rendere più efficiente la ricerca del NN Tempi di costruzione:O(n log(n)) Tempo di ricerca:O(log(n)) Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

4 4 Definizioni preliminari Spazio metrico(S,d) DatabaseS D  S Queryq  S Ricerca del Nearest NeighborNN(q, S D ) Distanza soglia  Per semplicità il range della funzione distanza verrà ristretto all’intervallo [0,1]. Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces NN|  (q,S D ) Ricerca “ristretta” del NNNN|  (q,S D )

5 5 Definizioni (2)  p : S  [0,1] /  p (a) = d(a,p) d p : SxS  [0,1] / d p (a,b) = |  p (a)-  p (b)| Siano (S,d) uno spazio metrico limitato in [0,1] e p un elemento di S;per ogni a, b di S: d p è una pseudo-metrica perché non soddisfa l’assioma di positività. d(a,b)  |d(a,p)-d(b,p)| = d p (a,b) d domina d P ! y x q Trovato y / d(q,y)   d p (q,x)    d(q,x)   Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces p d p (q,x)

6 6 Split dei nodi Dato p  S D, definiamo  p ( S D ) l’immagine di S D in [0,1]. La mediana µ di  p ( S D ) divide l’intervallo in [0, µ [punti interni alla sfera di centro p (S pL ) [ µ,1 ]punti esterni e sulla superficie (S pR ) Generalmente pochi elementi sono sulla superficie, perciò avremo N R  N L. SDSD S pL S pR p Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

7 7 Condizioni di pruning Data una query q: Se  p (q)  µ +  allora si può non considerare S pL nella ricerca del NN. Se  p (q)  µ -  allora si può non considerare S pR. Se µ -  <  p (q) < µ +  non è possibile alcuna esclusione. SDSD S pL S pR p Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

8 8 Formulazione probabilistica Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Sia x  [0,1]. La probabilità della superficie della sfera S(p,x) è P(  -1 (x)). Per brevità indicheremo P(x). Uno spazio metrico (S,d,P) ha Zero Probability Spheres (ZPS) property se: P(S S (x,r)) = 0  x  S,  r  0 dove: S S (x,r) =  y  S / d(y,x) = r  Assumiamo sia valida (semplificazione non banale!) Dato  >0,  N / [0,1] è divisibile in N parti ognuna di probabilità P< .

9 9 Due teoremi M  log 2 (n) + 1  1.Sia (S,d,P) uno spazio metrico in cui vale la ZPS. Ogni database S D  S di dimensione n può essere organizzato in un albero binario. Dati M>0 e q, allora  0 / NN|  (q,S) richiede al più M  log 2 (n) + 1  valutazioni. M  log 2 (n) + 1  2.Sia (S,d,P) uno spazio metrico in cui vale la ZPS. Dati la dimensione n e M>1, allora  0 / NN|  (q,S) richiede al più M  log 2 (n) + 1  valutazioni. Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

10 10 Scelta del Vantage Point Si vuole  più grande possibile.  dipende da  p, quindi da p  va scelto un VP “buono” 3 scelte naturali per il VP (p c, p m, p e ) La lunghezza b del confine tra i due sottospazi è proporzionale alla probabilità di non-pruning Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces I VP migliori sono negli “angoli” pcpc pmpm pepe 1 10

11 11 Algoritmi di costruzione: VP-Tree Select_vp sceglie il VP migliore tra un insieme di candidati P Ogni candidato è confrontato con un campione di punti D Si sceglie il VP con Deviazione Standard (della distanza) maggiore Tempi di ricerca del NN inferiori (rispetto alla selezione random) Function Make_vp_tree(S) if S=0 then return 0 new(node); node .p := Select_vp(S); node .mu := Median s  S d(p,s); L :=  s  S-  p  | d(p,s)  mu  ; R :=  s  S-  p  | d(p,s)  mu  ; node .left := Make_vp_tree(L); node .right := Make_vp_tree(R); return node; Function Select_vp(S) P := Random sample of S; best_spread := 0; for p  P D := Random sample of S; mu := Median d  D d(p,d); spread := 2nd-Moment d  D (d(p,d) – mu); if spread > best_spread best_spread := spread; best_p := p; return best_p; VP ID mu left right Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

12 12 VP s -Tree Ad ogni elemento sono associati un identificatore id e una lista hist hist contiene le distanze dell’elemento da ogni VP che lo precede Quando splitta un nodo, divide la lista list in L e R e aggiorna la hist di ogni elemento Ogni nodo contiene lower e upper bounds del suo sottospazio, riferiti a tutti i VP precedenti Function Make_vps_tree(S) list = 0; for s  S new(item); item .id :=  s; item .hist := 0; add item to list; return Recurse_vps_tree(list); Function Recurse_vps_tree(list) if list := 0 then return 0 new(node); node .p := Select_vp(list); delete node .p from list; for item  list append d(p. item .id) to item .hist; mu := Median item  list tail(item .hist); L := 0; R := 0; for item  list if tail(item .hist) < mu then add item to L, delete from list; else add item to R, delete from list; node .left := Recurse_vps_tree(L); node .right := Recurse_vps_tree®; node .bnds := Merge(node .left .bnds, node .right .bnds, node .p .hist); return node; Function Merge(range_list1,range_list2,value_list) Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

13 13 VP s -Tree Ad ogni elemento sono associati un identificatore id e una lista hist hist contiene le distanze dell’elemento da ogni VP che lo precede Quando splitta un nodo, divide la lista list in L e R e aggiorna la hist di ogni elemento Ogni nodo contiene lower e upper bounds del suo sottospazio, riferiti a tutti i VP precedenti Function Make_vps_tree(S) list = 0; for s  S new(item); item .id :=  s; item .hist := 0; add item to list; return Recurse_vps_tree(list); Function Recurse_vps_tree(list) if list := 0 then return 0 new(node); node .p := Select_vp(list); delete node .p from list; for item  list append d(p. item .id) to item .hist; mu := Median item  list tail(item .hist); L := 0; R := 0; for item  list if tail(item .hist) < mu then add item to L, delete from list; else add item to R, delete from list; node .left := Recurse_vps_tree(L); node .right := Recurse_vps_tree®; node .bnds := Merge(node .left .bnds, node .right .bnds, node .p .hist); return node; Function Merge(range_list1,range_list2,value_list) right left Lower/upper VP ID Lower/upper Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

14 14 VP sb -Tree Crea buckets di foglie per risparmiare spazio Ogni bucket contiene n b records Ogni record si riferisce a un elemento e per questo specifica identificatore e le distanze dai VP precedenti VP ID NbNb d(x,c)d(x,b)d(x,a)VP ID a c b Record dell’elemento x Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

15 15 Algoritmo di ricerca Ricerca il NN in VP-Tree in cui ogni nodo contiene bounds dei sottospazi figli  tiene traccia della distanza del NN già incontrato Il confronto con il valore middle determina l’ordine di esplorazione I L è l’intervallo compreso tra n .left_bnd[low]-  e n .left_bnd[high]+  Analogamente è definito I R Ha complessità O(log(n)) Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Procedure Search(n) if n = 0 then return; x := d(q,n .id); if x < tau then tau := x; best := n .id; middle := (n .left_bnd[high] + n .right_bnd[low]) / 2; if x < middle then if x  I L then Search(n .left); if x  I R then Search(n .right); else if x  I R then Search(n .right); if x  I L then Search(n .left);

16 16 Risultati sperimentali Sono state confrontate le performances di VP-Tree e KD-Tree, utilizzando diverse metriche (L1, L2, L  ) Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Introdotti da Friedman e Bentley nel 1977 Dividono ricorsivamente il database con tagli monodimensionali (su una sola coordinata) Per lo split si sceglie l’attributo sul quale la distribuzione è più “larga” Funzionano bene in spazi Euclidei di moderate dimensioni KD-Tree

17 17 Risultati sperimentali Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces In 8 dimensioni, KD_Tree ha performance intermedie a quelle dei due tipi di VP-Tree In 12 dimensioni, per dimensioni del database sopra i elementi, KD-Tree si dimostra il migliore (nonostante la sua performance non sia comunque buona: viene visitato il 25% dei nodi) In L1 al crescere delle dimensioni, VP s -Tree e VP-Tree scalano meglio di KD-Tree Mentre in L2 le prestazioni sono confrontabili Nonostante i VP-Trees ignorino la struttura a coordinate dello spazio sono confrontabili nei tempi di ricerca con i KD-Tree.

18 18 Risultati sperimentali Attraverso matrici di rotazione lineare mappiamo database definiti in R m in R n, dove n>m. Dai risultati sperimentali in tabella si evince che i VP-Tree rappresentano l’approccio migliore per la ricerca del NN quando non si conosce la struttura interna del database. Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces KD R2R2 R 2  R 10 R VP VPS

19 19 Ricerca del NN di immagini Query presenti nel database  visita d nodi Query “vicine” a elementi del DB  visita  5% dei nodi Query “lontane” da elementi del DB  visita  15% dei nodi Similar (simile ad almeno una di ogni VP-Tree) General (immagini diverse da quelle della libreria ) Libreria di 16 immagini, ognuna 604x486 pixels. Uso della metrica Euclidea. 4 VP-Tree di 4 immagini ognuno; 2 fonti di query: Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Queries4x48x816x1632x3250x50 Similar1.0%3.4%4.5% 5.2% General1.4%5.7%10.7%15.7%19.3%

20 20 Ricerca del NN di immagini (2) I KD-Tree danno performances pessime L’uso di VP sb -Tree permette miglioramenti del 15-30% (rispetto ai VP-Tree) Riducendo  si riduce significativamente il tempo della VP-Tree Search…………ma ne risente l’efficacia! Per molte queries non trovo alcun Nearest Neighbor TrovareProvare Trovare il NN e Provare che è il NN sono cose diverse Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces La seconda fase è spesso la più onerosa (in termini di complessità computazionale) !

21 21 Conclusioni Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Spazi vettoriali e metrici Complessità di Ricerca O(log(n)) Punti di forza Usa solo una funzione distanza VP e  “buoni”  Alta probabilità di pruning Ma le prestazioni di VP-Tree degradano al crescere del numero di elementi del database!

22 22 Spazi metrici d(x,y)  0, d(x,y) = 0  x = y(positivity) d(x,y) = d(y,x)(simmetry) d(x,y)  d(x,z) + d(z,y)(triangle inequality) Uno spazio metrico M = (U,d) è una coppia, dove U è il dominio dei valori e d è una funzione distanza che,  x, y, z  U, soddisfa gli assiomi metrici: Infatti, d p (a,b) = 0 anche se a e b sono punti distinti equidistanti da p Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

23 23 N-ary VP-Tree Trova le distanze tra VP e gli altri elementi del database In base alle distanze il database è diviso in N sottospazi, “più o meno” di uguali dimensioni  x  S i,  i-1  d(x,p)   i Data una query q, saranno esplorati i sottospazi S i t.c.  i -  < d(q,p)   i+1 +  Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces S i-1 SiSi S i+1 d(x,p)  i-2  i-1 ii  i+1


Scaricare ppt "1 Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces Peter N. Yanilos Presentazione di: Medri Matteo Tronconi Federica."

Presentazioni simili


Annunci Google