1 data structures and algorithms for nearest neighbor search in general metric spaces peter n....

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

Upload: fortunato-donato

Post on 02-May-2015

213 views

Category:

Documents


0 download

TRANSCRIPT

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

1

Data Structures and Algorithms Data Structures and Algorithms for Nearest Neighbor Search in for Nearest Neighbor Search in

General Metric SpacesGeneral Metric SpacesPeter N. Yanilos

Presentazione di:

Medri MatteoMedri Matteo

Tronconi FedericaTronconi Federica

Vassura AnnalisaVassura Annalisa

Sistemi informativi per le decisioni LS

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

2

SommarioSommario

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

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

3

VP-treeVP-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

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

4

Definizioni preliminariDefinizioni preliminari

• Spazio metrico (S,d)

• Database SD S

• Query q S

• Ricerca del Nearest Neighbor NN(q, SD)

• 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

Ricerca “ristretta” del NN NN|NN|(q,S(q,SDD))

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

5

Definizioni (2)Definizioni (2)

p : S [0,1] / p(a) = d(a,p)

• dp : SxS [0,1] / dp(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:

dp è una pseudo-metrica perché non soddisfa l’assioma di positività.

d(a,b) |d(a,p)-d(b,p)| = dp(a,b)

d domina dP!

y

x

q

Trovato y / d(q,y)

dp(q,x) d(q,x)

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

p

dp(q,x)

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

6

Split dei nodiSplit dei nodi

Dato p SD, definiamo p(SD) l’immagine di SD in [0,1].

La mediana µ di p(SD) divide l’intervallo in

• [0, µ [ punti interni alla sfera di centro p (SpL)

• [ µ,1 ] punti esterni e sulla superficie (SpR)

Generalmente pochi elementi sono sulla superficie, perciò avremo NR NL. SD

SpLSpR

p

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

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

7

Condizioni di pruningCondizioni di pruning

Data una query q:

Se p(q) µ + allora si può non considerare SpL nella ricerca del NN.

Se p(q) µ - allora si può non considerare SpR.

Se µ - < p(q) < µ + non è possibile alcuna esclusione.

SD

SpL

SpR

p

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

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

8

Formulazione probabilisticaFormulazione 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(SS(x,r)) = 0 xS, r0

dove: SS(x,r) = yS / d(y,x) = r

Assumiamo sia valida (semplificazione non banale!)Assumiamo sia valida (semplificazione non banale!)

Dato >0, N / [0,1] è divisibile in N parti ognuna di probabilità P<.

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

9

Due teoremiDue teoremi

1. Sia (S,d,P) uno spazio metrico in cui vale la ZPS. Ogni database SDS di dimensione n può essere organizzato in un albero binario. Dati M>0 e q, allora 0 / NN|(q,S) richiede al più MMloglog22(n) + 1(n) + 1 valutazioni.

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ù MMloglog22(n) + 1(n) + 1 valutazioni.

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

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

10

Scelta del Vantage PointScelta 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 (pc, pm, pe)

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”

pc

pm pe

1

10

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

11

Algoritmi di costruzione: VP-TreeAlgoritmi 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 := MediansS d(p,s); L := sS-p | d(p,s)mu; R := sS-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 pP D := Random sample of S;

mu := MediandD d(p,d);

spread := 2nd-MomentdD (d(p,d) – mu); if spread > best_spread best_spread := spread; best_p := p; return best_p;

VP IDmu

leftright

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

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

12

VPVPss-Tree-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 sS 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 := Medianitemlist 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

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

13

VPVPss-Tree-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 sS 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 := Medianitemlist 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

Lower/upper

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

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

14

VPVPsbsb-Tree-Tree• Crea buckets di foglie per risparmiare spazio

• Ogni bucket contiene nb records

• Ogni record si riferisce a un elemento e per questo specifica identificatore e le distanze dai VP precedenti

VP IDNb 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

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

15

Algoritmo di ricercaAlgoritmo 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

• IL è l’intervallo compreso tra n.left_bnd[low]- e n.left_bnd[high]+

• Analogamente è definito IR

• 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 IL then Search(n.left);

if x IR then Search(n.right); else

if x IR then Search(n.right);

if x IL then Search(n.left);

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

16

Risultati sperimentaliRisultati sperimentaliSono 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-TreeKD-Tree

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

17

Risultati sperimentaliRisultati 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

1

10

100

1000

10000

100000

2 4 6 8 10 12 14

Dimensioni

Nu

me

ro m

ed

io d

i no

di

vis

ita

ti VP-Tree

KD-Tree

In 12 dimensioni, per dimensioni del database sopra i 30000 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, VPs-Tree e VP-Tree scalano meglio di KD-Tree

Mentre in L2 le prestazioni sono confrontabili

0200400600800

100012001400160018002000

Dimensioni

Nu

me

ro m

ed

io d

i n

od

i vi

sita

ti VPS-Tree

VP-Tree

KD-TreeNonostante i VP-Trees ignorino la struttura a Nonostante i VP-Trees ignorino la struttura a

coordinate dello spazio sono confrontabili nei tempi coordinate dello spazio sono confrontabili nei tempi di ricerca con i KD-Tree.di ricerca con i KD-Tree.

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

18

Risultati sperimentaliRisultati sperimentali• Attraverso matrici di rotazione lineare mappiamo database

definiti in Rm in Rn, 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

R2 R2R10 R10

21 3833 816

VP 15 279 1048

VPS 12 246 698

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

19

Ricerca del NN di immaginiRicerca 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

Queries 4x4 8x8 16x16 32x32 50x50

Similar 1.0% 3.4% 4.5% 4.5% 5.2%

General 1.4% 5.7% 10.7% 15.7% 19.3%

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

20

Ricerca del NN di immagini (2)Ricerca del NN di immagini (2)• I KD-Tree danno performances pessime• L’uso di VPsb-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 Per molte queries non trovo alcun Nearest Neighboralcun Nearest Neighbor

TrovareTrovare il NN e ProvareProvare 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) !

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

21

ConclusioniConclusioni

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

Spazi vettorialie metrici

Complessità diRicerca O(log(n))

Puntidi

forza

Usa solo unafunzione distanza

VP e “buoni”Alta probabilità

di pruning

Ma le prestazioni di VP-Tree degradano alcrescere del numero di elementi del database!

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

22

Spazi metriciSpazi 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, dp(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

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

23

N-ary VP-TreeN-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

xSi, i-1 d(x,p) i

• Data una query q, saranno esplorati i sottospazi Si t.c. i - < d(q,p) i+1+

Data Structures and Algorithms for Nearest Neighbor Search in General Metric Spaces

Si-1 Si Si+1d(x,p)

i-2 i-1 i i+1