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

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

Emanuel Buzek, 2.12.2014.  Příklad: ◦ Zákazník si v eshopu s notebooky vybírá produkt… ◦ Přeje si:  Levný  Kamarád mu doporučil výrobce, třeba Acer.

Podobné prezentace


Prezentace na téma: "Emanuel Buzek, 2.12.2014.  Příklad: ◦ Zákazník si v eshopu s notebooky vybírá produkt… ◦ Přeje si:  Levný  Kamarád mu doporučil výrobce, třeba Acer."— Transkript prezentace:

1 Emanuel Buzek,

2  Příklad: ◦ Zákazník si v eshopu s notebooky vybírá produkt… ◦ Přeje si:  Levný  Kamarád mu doporučil výrobce, třeba Acer  Velký HDD  Aspoň 4GB RAM 2

3 3

4 ◦ Zákazník většinou neví přesně, co hledá ◦ Přesné (striktní) podmínky člověku nepřipadají intuitivní 4

5  Jedná se o dotaz typu “Levné notebooky od Aceru co mají aspoň 4GB RAM a velký disk” ◦ Co znamená “levný”  Třeba méně než Kč… ◦ Co znamená “velký”  Třeba více než 400GB 5

6  Jak funguje BACKEND? Co třeba… ◦ SELECT * FROM produkty WHERE cena < AND hdd > 400 AND ram > 4 AND vyrobce LIKE ‘ACER’ 6

7 ProduktRAMHDDVýrobceCena A8 GB450 GBAsus12000 B4 GB400 GBAcer13500 C8 GB500 GBAcer

8 ProduktRAMHDDVýrobceCena A8 GB450 GBAsus B4 GB400 GBAcer C8 GB500 GBAcer Náš SQL dotaz samozřejmě nevrátí produkty A a C… 8

9  Klasické striktkní booleovské (crisp) podmínky jsou často neintuitivní pro koncové uživatele  Uživatel musí příliš rozšiřovat požadavky ◦ Např. zvýšit cenu na ,- nebo nefiltrovat podle výrobce…  Pro klasické DBMS platí ◦ záznam do množiny buď náleží nebo nenáleží ◦ podmínka je buď splněna, nebo ne 9

10  Chceme systém, který bude nad daty hledat více lidsky/intuitivně ◦ Systém by měl pracovat jazykové termíny jako levný, dobrý, spolehlivý… ◦ Systém by měl umět porovnávat pomocí  Mnohem větší než >>  Mnohem menší než << ◦ Systém by měl být obecný a brát v potaz existující technologie (relační DBMS a SQL) 10

11  Přáli bychom si provádět dotazy typu ◦ SELECT * FROM produkty WHERE cena JE levný hdd JE velký ram > 4 AND vyrobce POKUD MOŽNO ‘ACER%’ 11

12 ◦ eshopy ◦ Hledání podobných dokumentů  Moderní webové aplikace – More Like This…  Facebook – více podobných příspěvků…  A samozřejmě Pandora, Grooveshark… ◦ Fulltext search (musí být trochu “fuzzy” – překlepy…) 12

13 ◦ Nearest Neighbour Search (k-NN)  Z metrik jednotlivých atribut se vytvoří k-rozměrný prostor  Hledá se nejbližších n vektorů v tomto prostoru  Metody: Space Partitioning, LSH  Nevýhody:  Space partitioning přestává být efektivní ve vyšších dimenzích… ◦ Operátor ~= (approximately equal to)  Starý koncept (Chang, 80. léta)  Nedostatečně obecné  Např. Atribut “hubený” záleží na hmotnosti a velikosti…  Těžko kombinovatelné do složitějších aritmetických výrazů 13

14 14

15 Idea: Rozšířit klasické DB (SQL) o fuzzy logiku Implementace Fuzzy SQL jsou většinou nádstavbou / rozšířením stávajících DBMS  Výhody: ◦ Data už v nich stejně jsou ◦ SQL je  známé  odladěné  vyspělé 15

16 16

17  Místo {0, 1} máme hodnoty v intervalu [0, 1] ◦ NOT(A) = 1 – A ◦ A AND B = min(A, B) ◦ A OR B = max(A, B)  Přínos: ◦ můžeme definovat další spojité funkce ◦ Jedná se o “organičtější” přístup – využití v UI 17

18  Příslušnost prvku do množiny je odstupňovaná  Fuzzy množina: (U, m) ◦ U je množina ◦ Funkce náležení m: U  [0, 1] ◦ Pro každé hodnota m(x) je “stupeň příslušnosti” 18

19  Klasická teorie množin je pouze zjednodušenou formou, kde stupeň příslušnosti má hodnoty {0, 1} 19

20  x plně náleží do (U, m) když m(x) = 1  x nenáleží do (U, m) když m(x) = 0 20

21 21

22 22

23  Koncept z roku 1986 (P. Bosc)  Úprava SQL serveru  Fuzzy podmínka: ◦ Booleovské výrazy ◦ Transformace ◦ Alterace ◦ Interakce 23

24  Atributy ◦ Vysoký: ◦ Hubený:  Porovnávání ◦ “mnohem vyšší než”:  24

25  Aplikuje se na fuzzy množinu a změní ji  Very, very much, few, more, less… ◦ very: ◦ not: 25

26  Vyjadřuje spojitost dvou fuzzy množin ◦ AND ◦ OR 26

27  very tall and age around 40 27

28  Jaké použít funkce? ◦ Dobrá otázka 28

29 ◦ SELECT n FROM … WHERE fuzzy- podmínka  Vybere n nejvíce vyhovujících ◦ SELECT t FROM… WHERE fuzzy- podmínka  Vybere záznamy splňující práh t 29

30 ◦ SELECT se pak přeloží na  SELECT FROM … WHERE ◦ Pokud fuzzy podmínka nejde rozdělit, tak se vlastně ani WHERE-clause nemusí generovat ◦ Funkce stupně příslušnosti se tedy vyhodnocuje na kartézském součinu všech relací, což je náročné ◦  PROBLÉM 30

31  Nádstavba nad existujícím SQL serverem ◦ Výhody:  Spolehlivost  Výkon  Známá platforma  Pracovalo na tom více autorů: ◦ Medina: FIRST  Fuzzy Interface for Relational Systems  Napsáno v PL/SQL nad Oraclem 31

32 32 Obecná architektura FSQL serveru podle Medina

33 33  Fuzzy atributy: mají definovány štítky (labels), uloženy v FMB, prefixovány znakem $ ◦ Lineární doména: štítky mají asociovanou distribuci  Např $drahý ◦ Non-lineární doména: štítky mají pouze definovaný vztah mezi sebou (skalár)  Např $vlasy = [černé, blond, kaštanové]

34 34  Fuzzy operátory na porovnávání ◦ Možnost (vrátí více záznamů, podmínka nemusí být splněna) ◦ Nutnost komparátorvýznam FEQ nebo F= FDIF nebo F!= Fuzzy equal to… Fuzzy different to… FGT nebo F > FGEQ nebo F>= Fuzzy greater than… Fuzzy greater than or equal to… FLT nebo F< FLEQ nebo F<= Fuzzy less than.. Fuzzy less than or equal to… FMG nebo F>> FLT nebo F<< Fuzzy much greater than… Fuzzy much less then… FINCLFuzzy included in…

35 35  Funkce CDEG: ◦ “compatibility degree” – vrátí stupeň náležení pro daný fuzzy atribut  Práh / threshold ◦ THOLD t ◦ Podmínka musí být splněna alespoň stupněm t

36 36  Fuzzy konstanty ◦ Fuzzy trapezoid $[a, b, c, d] ◦ Fuzzy číslo #n ◦ $label ◦ Fuzzy interval $[n,m] ◦ UNKNOWN, UNDEFINED  Fuzzy kvantifikátory ◦ Relativní, absolutní ◦ Umožňují výrazy typu “všechny”, “některé”, “skoro všechny”…

37 37  Příklad: ◦ SELECT * FROM Person WHERE hair FEQ $blond THOLD 0.5 AND height F>> $tall THOLD $high

38 38 ◦ Množinové relace:  union μ AυB (x)=max(μ A (x), μ B (x))  intesect μ A B (x)=min(μ A (x), μ B (x))  except μ A-B (x)= μ A B (x)=min(μ A (x),(1-μ B (x)))

39 39  Vyhodnocení dotazu: ◦ Výsledná relace obsahuje údaj “stupně náležení” ◦ Jak se vypořádat s duplikáty?  Narozdíl od duplikátů v crisp DB, záznamy mohou mít jiný stupeň náležení  Možnosti:  vrátit více řádků s duplikáty (SELECT)  vrátit největší stupeň náležení (SELECT UNIQUE)  vrátit nejmenší stupeň náležení (SELECT UNIMIN)  vrátit průměr stupně náležení (SELECT UNIAVG)

40 40  Nástroj FSQL_TO_SQL nad Oracle 8i ◦ Implementace v C++, GUI  DDL (create/update table):  Rozdělí se na dvě části:  Aktualizace FMB (vytvoření / úprava atributů)  Aktualizace klasické databáze  Rozšíření  CREATE LABEL  CREATE NEARNESS  DML (select/update/insert/delete) ◦ Přeloží se do SQL a spustí se

41  Generalized model Fuzzy heart Relational DB ◦ Medina et al., 1994  Obecná abstrakce  Fuzzy atributy: ◦ Fuzzy množiny jako Fuzzy hodnoty 1.Crisp 2.Crsip & Fuzzy s distribucí (lichoběžníkovou) 3.Diskrétní množiny s definovanou blízkostí 4.Diskrétní množiny bez blízkosti ◦ Fuzzy stupně jako Fuzzy hodnoty  Doména [0,1]  Významově v podstatě “stupeň náležení” 41

42  Jak funguje operace JOIN? 42

43  Metody spojení: ◦ Hash join  Menší tabulka se rozdělí pomocí hashovací funkce  Pro každý záznam z větší tabulky se hledá odpovídající záznam z menší tabulky ◦ Merge join (slévání)  Obě tabulky se setřídí podle atributu, na kterém mergujeme  Záznamy se postupně prochází (vzestupně nebo sestupně…) jako při merge-sort 43

44 ◦ Která metoda je lepší?  Pro klasické (non-fuzzy DB) je většinou výhodnější Hash join  Ale co Fuzzy DB?  Co vlastně znamená JOINovat podle fuzzy atributu…? 44

45  Spojení R d(R.X=S.X) S ◦ Dvě relace: R, S ◦ Společný atribut X ◦ d(R.X=S.X)  [0,1] ◦ Záznam se ve výsledku objeví pokud d(R.X=S.X)>0 45

46  Příklad: join na atribut X - „věk“ ◦ r.X = $around(35) („kolem 35“)  Dejme tomu interval [30,40] ◦ s.X = $young („mladý“)  Interval [20,35] ◦ Narozdíl od „normálních“ joinů, výsledek může obsahovat záznam, kde X není shodné ◦ Předpoklad: fuzzy predikát lze spočítat v konstatním čase... 46

47  Hash join? ◦ Nelze použít (aspoň ne přímo), protože dvě různé hodnoty budou mít různý hash, ale záznamy se stejně budou spojovat ◦ Z tohoto důvodu je u fuzzy DB složitější i indexování (o tom jindy :)  Jak tedy joinovat? 47

48  Definice parciálního uspořádání: ◦ pro fuzzy term v:  b(v): začátek intervalu  e(v): konec intervalu ◦ pro crisp hodnotu:v = b(v) = e(v) ◦ Pořadí:  v1 < v2 jestliže b(v1) < b(v2) nebo (b(v1)=b(v2) a (e(v1)

49  Definice: ◦ Pro záznam r z množiny R,  sml(r) je nejmenší neprázdná hodnota v, která je v S.X  lrg(r) je největší neprázdná hodnota v, která je v S.X ◦ Range:  Rng(r) = {s : s in S and sml(r)  s.X  lrg(r)}   Pokud s není v Rng(r), pak s se nemůže spojit (joinovat) s r 49

50 ◦ Záznamy z R jsou načítány do paměti podle definovaného částečného uspořádání  Pro záznam r z R, všechny potenciálně vhodné záznamy jsou v Rng(r)  Načítáme postupně stránky záznamů z S (podle uspořádání)  Pokud stránka z S obsahuje pouze záznamy předcházející r, je zbytečná  Pokud stránka z S obsahuje záznamy v Rng(r), provede se JOIN  Pokud stránka z S obsahuje záznam za intervalem Rng(r), pokračujeme pro další záznam z r... 50

51 ◦ Paměťová náročnost  Stránky z R a S se načítají pouze jednou, pokud se do paměti vejde 1 + max(P(Rng(r))) stránek  P(Rng(r)) je velikost ve stránkách pro Rng(r) ◦ I/O náročnost  SORT(R) + SORT(S) + P(R) + P(S) 51

52  V praxi relativně málo časté ◦ Setkali jste se?  Konfiguračně náročné ◦ Administrátor musí nakonfigurovat atributy a jejich distribuční funkce (FMB)  Jak by vypadala například distribuční funkce pro $drahý?  Jak tuto funkci vytvořit obecně - automaticky? ◦ Problém s výkonem a škálováním…  SQL je příliš schopné!  JOINy, agregace, vnořené SELECTy… 52

53  Uživatelské rozhraní ◦ Jak zvolíme prahové hodnoty t?  Uživatel by si je mohl vybrat sám ◦ Můžeme si být jisti, že uživatel chce hledat “fuzzy”?  Co když vlastně chce třeba všechny výrobky kromě Aceru, ale on stejně ve výsledcích jeden najde… 53

54  Podporují současné DBMS fuzzy dotazování? ◦ Částečně, určitě ne kompletní FSQL ◦ MySQL fulltext search  Alternativa: Fuzzy NoSQL :D ◦ Lucene/Solr/ElasticSearch…  FuzzyQuery v ElasticSearch  Levenshtein distance na stringy, intervaly na čísla a datumy  moreLikeThis query na nalezení podobných dokumentů 54

55  P. Bosc, M. Galibourg, G. Hamon: Fuzzy querying with SQL: Extensions and implementation aspects  F. Hao, H. Dougman, P. Zielinsky: A Fast Search Algorithm for a Large Fuzzy Database  Q. Yang, C. Lie, J. Wu: Efficient Processing of Nested Fuzzy SQL Queries 55


Stáhnout ppt "Emanuel Buzek, 2.12.2014.  Příklad: ◦ Zákazník si v eshopu s notebooky vybírá produkt… ◦ Přeje si:  Levný  Kamarád mu doporučil výrobce, třeba Acer."

Podobné prezentace


Reklamy Google