240 likes | 404 Views
Vyhledávání v multimediálních databázích Tomáš Skopal KSI MFF UK. 7. Metrické přístupové metody (MAM) 2 . část – maticov é a statické metody , D-index. Osnova. maticové MAM AESA, LAESA statické MAM gh-strom GNAT vp-strom mvp-strom SAT metrické hašování – D-index
E N D
Vyhledávání v multimediálních databázíchTomáš SkopalKSI MFF UK 7.Metrické přístupové metody (MAM)2. část – maticové a statické metody, D-index
Osnova • maticové MAM • AESA, LAESA • statické MAM • gh-strom • GNAT • vp-strom • mvp-strom • SAT • metrické hašování – D-index • metody volby globálních pivotů
AESA/LAESA (1) • (Linear) Approximating and Eliminating Search Algorithm • volba globálních pivotů • u AESA je počet pivotů roven |S| • tj. při přidání objektu do S vzroste i počet pivotů • u LAESA se vybere konstantnípočet pivotů k<|S| • při přidání objektu do S se pivoty nemění • konstrukce matice vzdáleností (index) od pivotů k objektům v S • AESA– časová i prostorová složitost O(n2), po přidání nového objektu O do S (což je taky pivot) je potřeba do matice přidat a spočítat sloupec vzdáleností od O ke všem ostatním objektům • LAESA – časová i prostorová složitost O(kn)
AESA/LAESA (2) • úzká spojitost s kontraktivní pivot-based metodou • matice vzdáleností = mapování do vektorového prostoru dimenze k • při dotazování se využívá L metrika (v kombinaci s původní metrikou; to navíc dovoluje implementovat i kNN dotazy)
AESA/LAESA (2) • původně určeno pro NN dotazy • AESA – průměrná složitost vyhledání je O(1) – experimentálně • LAESA – průměrná složitost vyhledání je k + O(1)– experiment. • lze modifikovat i pro kNN a rozsahové dotazy • pro kNN se udržuje k kandidátů • implementace rozsahového dotazu je triviální – přímé odfiltrování objektů podle L metriky (kontraktivní vzdálenosti) a dofiltrování původní metrikoud • optimalizováno pouze pro minimalizaci počtu aplikací původní metriky • tj. database „un-friendly“, prochází se sekvenčně celá matice
NN dotaz - AESA • podobný algoritmus jako hledání nejbližšího souseda v Ai u kontraktivního SparseMap mapování (viz předchozí přednáška) • myšlenka: počítají se průběžně hodnoty mapovaného vektoru q pro dotaz Q a zároveň se filtrují irelevantní objekty (resp. příslušné vektory) Algoritmus: • (inicializace) Mějme NN dotaz Q aneprázdnou množinu pivotů S’ = S. Aktuální vzdálenost k nejbližšímu sousedovi Onn nechť je dmin = . • Náhodně se vybere pivot PS’ • Spočítá se vzdálenost d(Q, P), tj. nějaká souřadnice mapovaného vektoru q. Pokud dmin> d(Q, P), pak dmin := d(Q, Onn) a Onn := P.S’ := S’ – {P}. • (eliminace) Z S se odfiltrují objektyOi, pro jejichž vektory platí L(q, oi) > dmin.Uoi se uvažují pouze ty souřadnice, které už byly vypočítány i pro q. • (aproximace)Pokud je S’ již prázdná, NN byl nalezen (je to Onn) a algoritmus končí, jinakse nalezne ten pivot PS’, jehož vektor p má nejmenší L(q, p). • Opakuje se od kroku 3, až než se odfiltrují všechny objekty z S(tj. zbude jediný kandidátOnn – pravý nejbližší soused)
NN dotaz - LAESA • lze implementovat dvěma způsoby • jednofázově – podobně jako AESA • souřadnice mapovaného dotazového objektu se počítají postupně a zároveň se filtruje • výhodné, když k je velké, resp. srovnatelné s |S| • modifikace oproti AESA je v tom, že pivotůje méně – S’S– a tudíž po vyčerpání všech pivotů se zbytek neodfiltrovaných objektů zpracuje dvoufázovým způsobem (kde odpadá první krok, protože vektor q už je celýspočítaný) • dvoufázově • spočítá se nejdříve celý vektor q mapovaného dotazového objektu Q • objekty OiSse setřídí vzestupně podle vzdáleností L(q, oi) • v tomto pořadí se počítá se d(Q, Oi), podle toho se aktualizuje kandidát Onn na nejbližšího souseda a jakmile d(Q, Onn) < L(q, oi), filtrování končí (neexistuje žádný bližší kandidát než Onn) - tj.Onn je výsledek
AESA/LAESA - zobecnění pro kNN • u algoritmu AESA se v kroku 5 (aproximace) neuvažuje pouze nejbližší vektor, ale k nejbližších vektorů – dmin je potom nastaveno na vzdálenost dmin := min(dmin, dk) • dk je maximum ze vzdáleností d(Q, Pi), kde Pi jsou pivoty příslušné těm k vektorům • u dvoufázového algoritmu LAESA se v kroku 3 aktualizuje k kandidátů (místo jednoho) a filtruje se podle toho nejvzdálenějšího (nejvzdálenějšího podle d) • srovnání jednofázového a dvoufázového algoritmu • jednofázový alg. je výhodný pokud k je vysoké (v krajním případě k = |S|, tj. případ AESA), tj. dvoufázový algoritmus by v prvním kroku sekvenčně „prohledal“ značnou část S • dvoufázový je výhodný pro malé k, protože po jednorázovém namapování je potřeba setřídit vektory podle L pouze jednou, čímž se redukují ostatní CPU náklady
tyto objekty zůstaly v S, je potřeba dofiltrovat přes d (L)AESA – rozšíření pro rozsahový dotaz • Algoritmus: • Mějme rozsahový dotaz (Q, rQ) • Zvolí se „malý“ počet pivotů k. • Dopočítá se příslušný počet souřadnic vektoru dotazu q. • Sekvenčně se procházejí (zbylé) vektory v S a filtrují se podle k dimenzí, tj. jsou odfiltrovány ty objekty, pro které L(q, oi) > rQ. • Pokud zbyl v S “malý” počet objektů(anebo byly vyčerpány všechny pivoty), zbytek S se dofiltruje sekvenčně, jinak se zvýší k a pokračuje se krokem 3. Ukázka filtrování podle jedné dimenze (pivotu)
Další LAESA-based indexační metody • TLAESA • redukce I/O nákladů použitím stromové struktury podobné gh-stromu (viz dále) • ROAESA • AESA + heuristiky pro redukci průchodu maticí (omezeno pouze na kNN dotazy) • Spaghettis • redukce I/o nákladů použitím polí setříděných párů objekt-pivot (jakoby indexování zvlášť přes všechny pivoty) • OmniFamily • využití R-stromu a dalších SAM pro indexování vektorů
gh-strom (generalized-hyperplane tree) • binární strom • každý uzel má přiřazeny dva pivoty, podstromy uchovávají data prostorově rozdělená „nadrovinou“ mezi oběma pivoty • podobné struktury • Bisector tree • Voronoi tree
Q gh-tree Rozsahový dotazFiltrování levého podstromu: Pokud nejbližší objekt uvnitř dotazu (vzhledem k O1) je dál než nejvzdálenější objekt uvnitř dotazu (vhledem k O6), může být levý podstrom odfiltrován Filtrování pravého podstromu obráceně.
GNAT (geometric nearest-neighbor access tree) • zobecnění gh-stromu na n-ární strom • + nějaká další rozšíření (neuvádíme) • tj. n pivotů dělí prostor na n regionů, kde myšlenou hranici tvoří ty „body“ všech možných nadrovin (mezi všemi dvojicemi pivotů), které nezasahují dovnitřžádného regionu binárního dělení • jinými slovy, všechny body prostoru jsou rozděleny do n regionů tak, že bod patří k regionů i, pokud je nejblíže k pivotu Oi – všechny ostatní body tvoří onu hranici • body hranice se nějakým dohodnotým způsobem rozdělí taky mezi regiony
Q GNAT Rozsahový dotazFiltrování O5-podstromu: Pokud nejbližší objekt uvnitř dotazu (vzhledem k O5) je dál než nejvzdálenější objekt uvnitř dotazu (libovolně vhledem k O1,O3, O4), může být O5-podstrom odfiltrován Filtrování odstatních podstromů podobně.
vp-strom • todo
mvp-strom • todo
Metrické hašování – D-index (1) • založen na dělích hašovacích funkcích bps1,r,j, kde Pj je pivot, dm je medián vzdáleností k objektům a r je rozdělující parametr • funkce přiřadí objektu 0 pokud není uvnitř prstence (Pj, dm – r, dm + r) a to tak že je uvnitř koule dané menším poloměrem prstence, a 1 pokud také není uvnitř, ale je vně koule dané větším poloměrem • jinak přiřadí 2 (když padne dovnitř prstence)
Metrické hašování – D-index (2) • funkce bps lze kombinovat, takže obdržíme až 2n hašovacích hodnot složených z 1 a 0, které odpovídají 2n regionům v prostoru (tvořených průniky) • hašovací hodnoty, kde se vyskytuje alespoň jedna 2 tvoří tzv. množinu vyloučených (exclusion set) • množina vyloučených lze dále stejným způsobem rozdělit (přičemž můžeme použít úplně jiné pivoty a parametry dm a r)
D-index Struktura D-indexu:hašované regiony mají své kapsy (buckets) na disku, množina vyloučených se dále rozděluje až je dostatečně malá. Tím obdržíme několikaúrovňový hašovaný index. Výhody:- pokud je poloměr dotazu rQ<r, na každé úrovni D-indexu se projde maximálně jedna kapsa- pokud navíc je celý dotaz na dané úrovni uvnitř množiny vyloučených, pokračuje se na další úrovni bez potřeby přistupovat do kapes na současné úrovniNevýhody:- volba pivotů, parametrů dm a r a s tím spojená nevyváženost struktury- parametr r zpravidla musí být velmi malý, aby kapsy nebyly prázdné a vše neskončilo v množine vyloučených (tj. nevhodné pro „velké“ dotazy)