Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Efektivní podobnostní operace pro integraci dat Michal Fiedler.

Podobné prezentace


Prezentace na téma: "Efektivní podobnostní operace pro integraci dat Michal Fiedler."— Transkript prezentace:

1 Efektivní podobnostní operace pro integraci dat Michal Fiedler

2 2 Zdroj Referát podle článku “Efficient similarity-based operations for data integration” Autoři E. Schallehn, K. Sattler, G. Saake Článek vyšel v časopise Data & Knowledge Engineering, číslo 48

3 Úvod Kapitola 1.

4 Michal Fiedler 4 Úvod Stoupá poptávka po integraci dat – Shromažďování dat z různých veřejných zdrojů (Internet) – Integrace podnikových dat pro podporu rozhodování v datových skladech – Příprava dat pro data-mining

5 Michal Fiedler 5 Úkol Významným úkolem je poradit si s kolizemi a nesrovnalostmi v datech Při shromažďování překrývajících se dat z různých zdrojů kdy chceme odstraňovat duplikáty Při spojování souvisejících dat z různých zdrojů

6 Michal Fiedler 6 Problém Jen výjimečně můžeme při těchto operacích spoléhat na kvalitu dat, mezi atributy odpovídajících objektů nemusí platit rovnost! Nesrovnalosti pramení z chyb při vkládání dat nebo například z různé informovanosti autorů

7 Michal Fiedler 7 Implementace Implementace operací se proto liší od tradičních způsobů Zpravidla musíme zpracovat velké množství dat => velmi záleží na efektivitě

8 Michal Fiedler 8 Odstranění duplikátů Odstranění duplikátů je běžná podúloha čištění dat Při použití SQL se nabízí použití operátoru group by na klíčové atributy spolu s použitím agregačních funkcí pro zpracování lišících se neklíčových atributů Tento postup je možný jen při rovnosti klíčových atributů. Pokud data nemají jednoznačný klíč, nebo jsou v klíčových atributech nesrovnalosti, nebudou záznamy odpovídající stejnému reálnému objektu sloučeny

9 Michal Fiedler 9 Spojování Pro spojování SQL nabízí join (podle rovnosti) Pokud není podle čeho spojovat, jsme opět v koncích

10 Michal Fiedler 10 Motivace ArtistTitle Ilja RepinBarge Haulers on the Volga Vincent vanGoghDrawbridge with Carriage Albrecht DurerA Young Hare El GrecoView of Toledo … NameBirthDeath… Albrecht Dürer14711528 Vincent van Gogh18531890 Ilya Repin18441930 Dominico Theotocopuli 15411614 …

11 Michal Fiedler 11 Motivace ArtistTitle Ilja RepinBarge Haulers on the Volga Vincent vanGoghDrawbridge with Carriage Albrecht DurerA Young Hare El GrecoView of Toledo … NameBirthDeath… Albrecht Dürer14711528 Vincent van Gogh18531890 Ilya Repin18441930 Dominico Theotocopuli15411614 … TitleArtistBirthDeath… Barge Haulers on the VolgaIlya Repin18441930 Drawbridge with CarriageVincent van Gogh18531890 A Young HareAlbrecht Dürer14711528 View of ToledoEl Greco15411614 …

12 Michal Fiedler 12 Motivace TitleArtistYear ResurrectionEl Greco1579 ResurrectionDieric Bouts1460 … The Holy TrinityEl Greco1577 The Holy TrinityEl Greco16th cen. … Self-Portrait at 28Albrecht Dürer1500 Self-Portrait at 28Albrecht Dürer Self Portrait at 28Albrecht Dürer1500 … Fifteen SunflowersVincent van Gogh1888 Fifteen SunflowersVincent van Gogh1889 … TitleArtistYear ResurrectionEl Greco1579 ResurrectionDieric Bouts1460 … The Holy TrinityEl Greco1577 … Self-Portrait at 28Albrecht Dürer1500 … Fifteen SunflowersVincent van Gogh1888 Fifteen SunflowersVincent van Gogh1889 …

13 Michal Fiedler 13 Nástin řešení Navrhneme podobnostní operátory pro spojení a seskupování, jejich sémantiku i implementaci Použijeme podobnostní predikáty Musíme se proto vypořádat s odlišnými vlastnostmi (od rovnosti), zejména s netranzitivností Realizace rozšířením jazyka nebo extensions

14 Metody měření podobnosti Kapitola 2.

15 Michal Fiedler 15 Co je podobnost? Existuje mnoho způsobů, jak popsat podobnost objektů speciálního typu Zde chceme vytvořit široce použitelný aparát Definujeme podobnost pro běžné a jednoduché datové typy a způsob, jak jejich kombinací popsat podobnost komplexních objektů

16 Michal Fiedler 16 Míra podobnosti x, y  U míra podobnosti: SIM(x, y) → [0, 1] vzdálenost: d(x, y) → R Vzdálenost lze převést na míru podobnosti, např. – max je největší vzdálenost mezi objekty z U

17 Michal Fiedler 17 Predikát podobnosti Binární predikát SIM(x, y)… x je podobné y Lze odvodit z míry podobnosti (resp. z vzdálenosti) nastavením meze t  [0,1] (k  R): SIM(x, y) ↔ SIM(x, y) ≥ t resp. SIM(x, y) ↔ d(x, y) ≤ k Zpravidla reflexivní, symetrický, netranzitivní

18 Michal Fiedler 18 Metrika Metrika d v metrickém prostoru S –  x,y  S:d(x, y) = 0 ↔ x = y –  x,y  S:d(x, y) = d(y, x) –  x,y,z  S:d(x, y) ≤ d(x, z) + d(z, y) např. Euklidovská metrika

19 Michal Fiedler 19 Metrika Díky symetrii a trojúhelníkové nerovnosti lze metriky účinně používat Data porovnávaná metrikou musí mít formát souřadnic v metrickém prostoru, nebo na ně být převeditelná Pro efektivitu lze použít vícerozměrné indexy

20 Michal Fiedler 20 Změnová vzdálenost Levenshteinova neboli změnová či editační vzdálenost (edit distance) edist(p, w) pro určení vzdálenosti řetězců Výchozí řetězec p je posloupností povolených znakových operací (vložení, vymazání, záměna), které mají určenou cenu, převeden na cílový řetězec w. edist(p, w) je potom minimální cena takové posloupnosti operací.

21 Michal Fiedler 21 Změnová vzdálenost - příklad Nastavme cenu zmíněných operací na 1 Najdeme edist(“edna“, “eden“): Nejkratší posloupnosti jsou: – {záměna(#3, “e”), záměna(#4, “n”)} – {vložení(#3, “e”), vymazání(#5)} Tedy edist(“edna“, “eden“) = 2

22 Michal Fiedler 22 Změnová vzdálenost edist je metrika, což zaručuje možnost efektivní implementace Možno odvodit další vzdálenosti, např: – Přidáním operace prohození – Jemnějším rozlišením operací

23 Michal Fiedler 23 Další vzdálenosti řetězců Hammingova vzdálenost – povoluje jen výměnu Prokládaná vzdálenost (episode distance) – povoluje pouze vložení Délka nejdelší společné podposloupnosti – povoluje vložení a vymazání …

24 Michal Fiedler 24 Vzdálenosti pro další typy dat Obdobu změnové vzdálenosti lze použít např. pro záznam genomu, pro časoprostorová data, pro stromy a obecně pro grafy Pro číselná data euklidovská metrika Pro 1-rozměrná odpovídá rozdílu a lze použít stávající indexovací metody

25 Michal Fiedler 25 Vzdálenosti pro další typy dat Pro data zaznamenávající kategorii lze definovat míru podobnosti mapováním na: – Uspořádanou množinu – Metrický prostor – Graf reprezentující kategorie a vztahy mezi nimi

26 Michal Fiedler 26 Složené podobnostní podmínky Nestačí porovnávat atomická nebo homogenní data, chceme zjišťovat podobnost složitějších objektů Užitím (různých) predikátů podobnosti na jednotlivé atributy a spojením logickými spojkami dostaneme složenou podobnostní podmínku

27 Michal Fiedler 27 Specializované míry podobnosti Data mohou mít speciální sémantiku, na základě její znalosti lze definovat specializovanou míru podobnosti (application-specific similarity measure) Např. pro jména osob můžeme použít změnovou vzdálenost, lepší je ale zohlednit, že “Petr Malý“ nejspíš identifikuje stejnou osobu jako “Malý, Petr”, zatímco “Petr Milý” je nejspíš někdo jiný

28 Michal Fiedler 28 Specializované míry podobnosti Takové míry lze implementovat jako uživatelsky definované funkce, narážíme ovšem na problémy: – Efektivita: Autor funkce jen těžko využije indexů. – Vlastnosti: Pokud míra nebude symetrická, ztíží to vytvoření odpovídajícího podobnostního operátoru. Takové míry zde nebudeme uvažovat

29 Michal Fiedler 29 Převod podobnosti na ekvivalenci Existující operátory relační algebry jsou založeny na relaci ekvivalence, relace podobnosti však není tranzitivní Z relace podobnosti SIM proto odvodíme ekvivalenci SIM EQ Jednoduchá (tranzitivní) strategie: vytvořením tranzitivního uzávěru: SIM EQ = SIM + Přísná strategie: V každé třídě ekvivalence vyžadujeme podobnost po dvou

30 Michal Fiedler 30 Převod podobnosti na ekvivalenci Příklad převodu na ekvivalenci tranzitivní (b) a přísnou (c) strategií Př: řetězce “DBMS”, “ODBMS”, “OODBMS”, použijeme změnovou vzdálenost s mezí 1 Při strategii užívající tranzitivní uzávěr jsou podobné Při přísné strategii ne – edist(“DBMS”, “OODBMS”) = 2 > 1

31 Sémantika podobnostních operátorů Kapitola 3.

32 Michal Fiedler 32 Rozšiřujeme relační algebru Připomeneme značení: – R relace nad schématem S = {A 1,…,A m } – t R  R záznam z R – t R (A i ) hodnota atributu A i záznamu t R

33 Michal Fiedler 33 Podobnostní podmínka Podobnostní podmínka je konjunkce predikátů značí atomický predikát rovnosti (eq) nebo podobnosti (edist k, diff k,…), kde: – eq(A i ) značí rovnost atributu A i : t j (A i ) = t l (A i ) – edist k (A i ) značí změnovou vzdálenost s mezí k: edist(t j (A i ), t l (A i )) ≤ k – diff k (A i ) značí číselnou podobnost: |t j (A i )- t l (A i )| ≤ k

34 Michal Fiedler 34 Podobnostní spojení Spojení relací R 1 a R 2 přes podobnostní podmínku definujeme

35 Michal Fiedler 35 Podobnostní seskupení Tradiční: F [ ](R) Podobnostní: Γ [ ](R) Lze popsat jako složení operací rozdělení a agregace Operátor rozdělení vytvoří množinu skupin, kde prvky každé skupiny jsou si tranzitivně podobné podle podobnostní podmínky a nenastává podobnost mezi prvky různých skupin. Operátor agregace vytvoří z každé skupiny jeden záznam a vypočítá hodnotu agregačních funkcí z hodnot atributů záznamů v této skupině a vrátí je spolu s hodnotami atributů, podle nichž se spojovalo přes rovnost.

36 Michal Fiedler 36 Podobnostní seskupení A1A1 A2A2 1.05 1.16 2.07 2.18 2.24 A 1 avgA 2 min 1.055 2.14 A1A1 A2A2 G1G1 1.05 1.16 G2G2 2.07 2.18 2.24

37 Implementace a optimalizace Kapitola 4.

38 Michal Fiedler 38 Podobnostní predikát pro řetězce Zaměříme se na změnovou vzdálenost Jako vyhledávací strukturu použijeme trie, kam kromě hodnot řetězců uložíme také id odpovídajících záznamů Pro zrychlení výpočtu vzdálenosti použijeme metodu dynamického programování Máme zadanou mez a hledaný řetězec Hledání nevzdáváme hned po první neshodě, ale až když podobnost klesne pod mez. Při procházení trie tak odřezáváme větve, kde jsou jen nepodobné řetězce.

39 Michal Fiedler 39 Algoritmus 1 – hledání podobného řetězce Globals Threshold k Pattern string p, target string w Procedure approxSearch(TrieNode n, int level) begin for all child nodes c of n w[level] = character z of c// znak určující c if c is a leaf node and edist (w, p, level) < k output tuple-ids for node c if edist (w, p, level) > k continue// ořezání approxSearch (c, level + 1) end for end

40 Michal Fiedler 40 Podobnostní spojení Jako u běžného spojení se snažíme co nejvíce používat index, abychom snížili počet provedených porovnání. Zde ovšem pro různé podobnostní predikáty použijeme více typů indexů: – Pro predikát rovnosti běžné indexové struktury (stromy, hašovací tabulky) – Pro číselnou podobnost diff k můžeme po skupinách ukládat největší a nejmenší hodnoty – Pro podobnost stromů podle změnové vzdálenosti edist k můžeme použít trie – Pro další podobnostní predikáty můžeme použít odpovídající indexy, např vícerozměrné stromy

41 Michal Fiedler 41 Podobnostní spojení Provedeme spojení relací R 1 a R 2 Předpokládáme existenci indexů nad R 2 Procházíme záznamy R 1 a vyhovující záznamy ukládáme do tabulky

42 Michal Fiedler 42 Algoritmus 2 – zpracování záznamu při podobnostním spojení Globals Conjunctive join condition c = p 1 and … and p n Set of indices I pi, 1≤ i ≤ n on join relation R 2 for index supported predicates Mapping table tid_tid for matching tuples Procedure processTuple(Tuple t) begin for all index supported equality predicates p i set of tuples s conj = indexScan(I pi, t(A pi )) end for for all index supported similarity predicates p i s conj = s conj ∩ indexScan(I pi, t(A pi ), k pi ) end for …

43 Michal Fiedler 43 Algoritmus 2 – zpracování záznamu při podobnostním spojení … for all tuples t l  s conj boolean similar = true for all non-index supported predicates p i similar = similar and evaluate(p i, k pi, t(A pi ), tl(A pi ) if not similar break end for if similar insert (t, t l ) in tid_tid end for end

44 Michal Fiedler 44 Podobnostní seskupení Zde narážíme na netranzitivitu podobnostních predikátů Naivní algoritmus: – Procházíme postupně záznamy z vstupní množiny a zjišťujeme podobnost se všemi již zpracovanými záznamy. Dostaneme tak množinu skupin, do kterých patří podobné záznamy. – Pokud je množina prázdná, umístíme záznam do nové skupiny, jinak sloučíme všechny nalezené skupiny (jednáme podle strategie užívající tranzitivní uzávěr) – Složitost O(n 2 )

45 Michal Fiedler 45 Algoritmus 3 – Zpracování záznamu při podobnostním seskupení Globals Conjunctive similarity condition c = p 1 and … and p n Set of indices I pi, 1≤ i ≤ n for index supported predicates Mapping table gid_tid assigning tuples to groups Procedure processTuple(Tuple t) begin set of groups r conj = all groups from gid_tid for all index supported equality predicates p i set of tuples s = indexScan(I pi, t(A pi )) r conj = r conj ∩ gid_tid(s) end for for all index supported similarity predicates p i set of tuples s = indexScan(I pi, t(A pi ), k pi ) r conj = r conj ∩ gid_tid(s) end for …

46 Michal Fiedler 46 Algoritmus 3 – Zpracování záznamu při podobnostním seskupení … for all groups g j  r conj boolean member = false for all tuples t l  g j boolean similar = true for all non-index supported predicates p i similar = similar and evaluate(p i, k pi, t(A pi ), tl(A pi ) if not similar break end for member = member or similar if member break end for if not member r conj = r conj – g j end for if r conj = 0 group g = new group in gid_tid else group g = merge all r conj in gid_tid insert t in g end

47 Michal Fiedler 47 Podobnostní seskupení Algoritmus realizuje jen seskupovací část celé operace. Následující projekce a agregace se již shodují s běžným seskupením. Udržováním informace o počtu výskytů můžeme ještě výhodněji seřadit jednotlivá vyhledávání. Tím se efektivita ještě zvýší.

48 Michal Fiedler 48 Pro plnohodnotné začlenění nadefinovaných podobnostních operací je třeba přidat do DB stroje odpovídající plánovací operátory. Potom může optimalizátor vybrat plán, který podobnostní operátory využívá. Například pro dotaz select * from r1, r2 where edist(r1.title, r2.title) < 2 je žádoucí provést operaci r1 r2, nikoliv kartézský součin následovaný selekcí Plánovací operátory

49 Michal Fiedler 49 Rozšíření jazyka Můžeme také rozšířit jazyk SQL o odpovídající operátory, např: select * from r1 similarity join r2 on edist(r1.title, r2.title) threshold 0.9 select * from r1 group by similarity on edist(title) threshold 0.9

50 Michal Fiedler 50 Funkce vracející tabulku Implementace nativních plánovacích operátorů vyžaduje ovšem výrazné zásahy do DB stroje, což u komerčních systémů není možné. Musíme proto použít jiné mechanismy. V moderních systémech bývá možnost vytvořit funkce vracející tabulku.

51 Michal Fiedler 51 Funkce vracející tabulku Definujeme např. funkci sim_join, která na dvou zadaných kurzorech provede ukázaný algoritmus select * from table(sim_join( cursor(select * from data1), cursor(select * from data2), ‘edist(data1.title, data2.title) < 2’ )) Nutnost přesně udávat návratový typ funkce však znamená nepříjemné omezení

52 Michal Fiedler 52 Využití identifikátorů záznamu Možné řešení: funkce bude vracet tabulku obsahující generické identifikátory záznamů (rowid). Pro seskupování tak definujeme funkci sim_grouping, která vrací tabulku typu gid_tid_table: create type gid_tid_t as object gid int, tid int; create type gid_tid_table is table of gid_tid_t; select raw_data.* from table (sim_grouping( cursor(select rowid, * from raw_data), ‘edist(title) < 2’) ) as gt, rawdata where raw_data.tid = gt.tid group by gt.tid

53 Vyhodnocení efektivity Kapitola 5.

54 Michal Fiedler 54 Testování podobnostního seskupování Vzorek náhodných dat s přidanými pozměněnými záznamy Měření efektivity pro různé hodnoty meze. Pro rostoucí mez se blíží k O(n 2 ), ale nepřekračuje ji, díky použitému dynamickému programování

55 Michal Fiedler 55 Výsledky podobnostního seskupování pro různé hodnoty meze Seskupování podle rovnosti a podle změnové vzdálenosti s mezí 1 Seskupování s různými hodnotami meze a srovnání s naivním algoritmem „každý s každým“

56 Michal Fiedler 56 Výsledky podobnostního seskupování pro různý podíl duplikátů Měření výkonnosti na vzorcích s různým podílem duplikátů, Měřeno pro mez k = 2 Podobnostní operátor se vyplatí, pokud vzorek opravdu vykazuje podobnost.

57 Michal Fiedler 57 Výsledky podobnostního spojení Výsledky pro podobnostní spojení s různou hodnotou meze. V závislosti na mezi opět roste od O(n) k O(n 2 )

58 Uplatnění Kapitola 6.

59 Michal Fiedler 59 Uplatnění podobnostních operací v praxi Ukážeme si příklady použití na projektu shromažďování informací o uloupených uměleckých dílech Data přicházejí z různých zdrojů i z různých kultur, dochází k duplikaci. Podobnostní operace jsou tedy namístě

60 Michal Fiedler 60 Nalezení duplikátů Při detekci duplikátů použijeme podobnostní seskupení podle titulu (změnová vzdálenost) a autora (speciální míra podobnosti uvažující různé zápisy jména) select … from data group by similarity on sim_person(artist) and sim_edist(title) threshold 0.8

61 Michal Fiedler 61 Agregace Je třeba určit, jaké hodnoty atributů, podle nichž se neseskupuje, odpovídají seskupeným záznamům Vestavěné agregační funkce v tom nepomohou Možno použít uživatelské agregační funkce (UDA). Ty však mají přístup jen k hodnotám agregovaného atributu. Lepší výsledky dostaneme, pokud máme možnost nahlédnout do hodnot ostatních atributů, které mohou udávat například spolehlivost uvedených údajů pro daný záznam.

62 Michal Fiedler 62 Nové agregační funkce Proto definujeme sadu pokročilých agregačních funkcí, mezi nimi: – pick_where_eq(v, col) vrátí hodnotu atributu col prvního záznamu, který splní podmínku v – pick_where_min(v, col) vrátí hodnotu col záznamu, který má nejnižší hodnotu v – pick_where_max(v, col) vrátí hodnotu col záznamu, který má hodnotu v nejvyšší – to_array(col) vytvoří z hodnot col pole

63 Michal Fiedler 63 Nové agregační funkce Za použití těchto funkcí můžeme data slučovat například následujícími strategiemi: Vybíráme nejnovější záznam, datum je uloženo v m_date: select max(m_date), pick_where_max(m_date, col),… from data group by … Data jsou z různých zdrojů (uloženo v src), v případě kolize preferujeme zdroj ps select pick_where_eq(src = ‘ps’, col),… … Pokud dojde ke kolizi, předáme seznam dat uživateli, aby rozhodl select to_array(col),… …

64 Michal Fiedler 64 Zvolení vhodného predikátu Je třeba vybrat míru podobnosti a hodnotu meze tak, aby výpočet byl přesný i rychlý. Informace o distribuci vzdálenosti umožňuje určit vhodnou hodnotu meze. Někdy (např. pro řetězce pevné délky) je to dostačující informace Jindy (např. pro řetězce proměnlivé délky) takový výběr přináší chybně detekované duplikáty Zde je vhodné zvolit jinou míru podobnosti. Pro řetězce různé délky je vhodná relativní změnová vzdálenost

65 Michal Fiedler 65 Distribuce vzdálenosti a relativní vzdálenosti Distribuce změnové vzdálenosti na vzorku reálných dat Distribuce relativní změnové vzdálenosti Nabízí se zvolit hodnotu meze 0.8, analýza výsledku takto provedeného seskupení tomu dává za pravdu.

66 Shrnutí Kapitola 7.

67 Michal Fiedler 67 Shrnutí Předvedli jsme si databázové nástroje pro nalézání souvisejících dat a detekci duplikátů na základě uživatelem zadaných kritérií podobnosti. Lze je uplatnit především při integraci heterogenních dat, kde lze očekávat výskyt více záznamů o stejných objektech. Zároveň zde hrozí výskyt nepřesností.

68 Michal Fiedler 68 Shrnutí Navržené operace podobnostního spojení a seskupování spolu s pokročilými agregačními funkcemi jsme navrhli jako rozšíření relační algebry a předvedli jsme jejich efektivní implementaci.

69 Michal Fiedler 69 Prostor pro vylepšení Volba vhodného kritéria podobnosti Volba odpovídající indexovací metody Lepší začlenění operátorů do jazyka a do DB strojů

70 KONEC Děkuji za pozornost


Stáhnout ppt "Efektivní podobnostní operace pro integraci dat Michal Fiedler."

Podobné prezentace


Reklamy Google