Fuzzy SQL MFF UK 16. 11. 2010
Přesné hodnoty Jak fungují matematika, informatika...? Hledáme lidi s platem rovným 45 000 Kč. Chceme najít všechny lidi starší než 65 let. Tím získáme vždy přesnou odpověd. Nicméně jak moc tyto dotazy a odpovědi odpovídají realitě?
Život je fuzzy... Jak se v běžném životě vyjadřujeme: Mám zvýšenou teplotu. Starší lidé mají problém s klouby. Manažeři v bankách mají vysoké platy. A jak toto vyjádříme pomocí matematiky? Starý = 70 let. Pak ale není starý 69,5 let. Paradox z antického Řecka: Mějme malou hromadu kamení. Pokud přidáme jeden kámen, dostaneme opět malou hromadu. Tedy každá hromada kamení je malá.
A co z toho vzniklo? Lotfi A. Zadeh (nar. 1921 v Baku), prof. na U. C. Berkeley Článek: Fuzzy Sets, Information and Control. 1965; 8: 338-353 Vznik modifikované teorie množin, tzv. fuzzy množin Fuzzy...... anglicky znamená nejasný, mlhavý, nepřesný, vágní... teorie množin, logika... množina, míra, relace atd.
Základní myšlenka fuzzy množin V některých situacích tedy nelze přesně určit, kdy prvek do množiny patří, či nepatří. Princip inkompatibility (1973, L. A. Zadeh): S rostoucí složitostí sytému klesá naše schopnost formulovat přesné a významné vlastnosti o jeho chování, až je dosáhnutá hranice, za kterou kterou je přesnost a relevantnost prakticky vzájemně se vylučující jevy. Proto zavedeme nějakou míru příslušnosti prvku do množiny, která nám toto určí.
Klasická množina A X je definována pomocí charakteristické funkce χ A : X {0, 1} tak, že χ A (x) = 1, x A χ A (x) = 0, x / A Oproti tomu fuzzy množina F X je definována funkcí příslušnosti µ F : X [0, 1] tak, že x X patří do fuzzy množiny právě tehdy když µ F (x) > 0.
µ F (x) = 1... patří plně do množiny µ F (x) (0, 1)... patří částečně do množiny µ F (x) = 0... nepatří do množiny
Operace s fuzzy množinami Doplněk µ F C (x) = 1 µ F (x)
Operace s fuzzy množinami Sjednocení µ F G (x) = max(µ F (x), µ G (x))
Operace s fuzzy množinami Průnik µ F G (x) = min(µ F (x), µ G (x))
Fuzzy logika Lze definovat jako tzv. Zadehovy operátory Negace doplněk Disjunkce sjednocení Konjunkce průnik Často se v systémech využívá pravidel ve tvaru IF proměnná IS vlastnost THEN akce : IF teplota IS vysoká THEN zrychli větrák
Motivace k rozšíření SQL Klasické SQL: SELECT jmeno, vek, prijem FROM zamestnanci WHERE (vek >= 25 AND vek <= 45) AND (prijem >= 35000) Fuzzy SQL: SELECT jmeno, vek, prijem FROM zamestnanci WHERE (vek = stredni_vek) AND (prijem >= vysoky_prijem) Operátory porovnání jsou v druhém případě chápány ve fuzzy smyslu.
Mějme atribut A a množinu všech funkcí příslušnosti P(A) = {µ i ; µ i : D(A) [0, 1]}, kde D(A) je obor hodnot atributu A. Potom fuzzy relací R rozumíme R = P(A 1 ) P(A 2 )... P(A n ) D, kde D [0, 1] je stupeň příslušnosti v relaci.
Potom pro prvek relace platí Databázově lze psát r R µ R (r) > 0. r.d > 0 Pro query stupeň příslušnosti v relaci značí, jak moc ji daný prvek relace splňuje.
Fuzzy SELECT Jako v klasickém SQL je query ve fuzzy SQL definována pomocí příkazu SELECT v následující formě SELECT atributy FROM relace WHERE podminky
Vyhodnocení výrazu Při porovnávání dvou atributů (obecně tvaru X ΘY ) ve WHERE části výrazu, potřebujeme určit stupeň splnění d(x ΘY ). Pro konkrétní hodnoty U z X a V z Y můžeme psát d(x ΘY ) = max x,y (min(µ U(x), µ V (y), µ Θ (x, y))), kde x, y jsou přesné hodnoty ze společného oboru hodnot, na kterém jsou definovány U a V.
Vyhodnocení výrazu - příklad Pokud budeme porovnávat přesnou hodnotu s fuzzy hodnotou. Stupeň splnění pro porovnání věku v případě hodnot 29 a kolem 30 d(r.vek = S.vek) = µ kolem 30 (29) = 0.75
Vyhodnocení výrazu - příklad Pokud budeme porovnávat 2 fuzzy hodnoty. Stupeň splnění pro porovnání věku v případě hodnot mladý a okolo 30 je potom d(r.vek = S.vek) = 0.5, což je hodnota nejvyššího průsečíku funkcí příslušnosti.
ID Pohlaví Jméno Věk Příjem 11 Žena Anna okolo 35 okolo 60K 12 Žena Jarka středně mladý středně vysoký 13 Žena Lucie střední věk vysoký 14 Žena Petra okolo 50 nízký 21 Muž Jakub 24 okolo 25K 22 Muž Josef okolo 50 okolo 40K 23 Muž Karel střední věk vysoký 24 Muž Pavel okolo 29 středně nízký
Dotaz SELECT Z.Jmeno FROM T AS Z WHERE Z.Pohlavi = "Zena" AND Z.Vek = "stredne mlady" AND Z.Prijem IN ( SELECT M.Prijem FROM T AS M WHERE M.Pohlavi = "Muz" AND M.Vek = "stredni vek" ) Binární operátor = je zde chápán ve fuzzy smyslu.
Výsledek Příjem D okolo 40K 0.4 vysoký 1.0 ID Jméno Věk Příjem D 11 Anna okolo 35 okolo 60K 1 12 Jarka středně mladý středně vysoký 1 13 Lucie střední věk vysoký 0.7 Jméno D Anna 0.3 Jarka 0.7 Lucie 0.7
Typy atributů - klasický přesný Data uložena klasicky s přesnými hodnotami Nad konkrétními atributy definovány nepřesné pojmy Možnost nepřesně se dotazovat nad přesnými daty Jednoduché rozšíření klasické relační databáze
Typy atributů - nepřesný uspořádaný Přesné i nepřesné hodnoty Dotazování pomocí nepřesných pojmů Typicky lichoběžníkový tvar vymezení pojmu
Typy atributů - neuspořádaný Definovány bezrozměrné hodnoty atributu Tabulka podobnosti jednotlivých hodnot (každý s každým) Možnost nepřesných hodnot {0.9/tmave, 0.4/zrzave}
Fuzzy konstanty Umožní zapsat nepřesnou hodnotu. $[a, b, c, d], distribuční fce lichoběžníkového tvaru [n, m], interval n + m, přibližně n s odchylkou m, trojúhelník #n, přibližně n s odchylkou definovanou v FMB $nazev, pojmenovaná konstanta definovaná ve FMB {P1/L1,..., Pn/Ln}, distribuce na nesetříděné doméně Pi hodnoty možnosti Li jednotlivé hodnoty atributu Př.: {0.9/tmave, 0.4/zrzave} celkem tmavé, trochu zrzavé
Porovnávací operátory FEQ, F =, rovnost FDIF, F! =, F <>, rozdílnost FGT, F >, větší než FGEQ, F >=, větší nebo rovno FLT, F <, menší než FLEQ, F <=, menší nebo rovno MGT, F >>, mnohem větší než MLT, F <<, mnohem menší než FINCL, obsaženo v
Množinové operace Rozšíření množinových operací známých z SQL o práci se stupni příslušnosti. FUNION, sjednocení FINTERSECT, průnik FMINUS, rozdíl
Stupeň příslušnosti Ve skutečnosti bylo definováno několik stupňů stupeň nejistoty, možnosti, důležitosti, splnění Hodnota z intervalu [0, 1] ve fce CDEG() Váže se k: jednotlivému atributu skupině atributů celému řádku
Kĺıčové slovo THOLD Hranice splnění podmínky (z angl. threshold) podmínka THOLD τ vynutí splnění podmínky s minimálním stupněm τ [0, 1] možno použít i pojmenované hodnoty definované v FMB
Schéma
Techniky odhnízdění SELECT Z.Jmeno FROM T AS Z WHERE Z.Pohlavi = "Zena" AND Z.Vek = "stredne mlady" AND Z.Prijem IN ( SELECT M.Prijem FROM T AS M WHERE M.Pohlavi = "Muz" AND M.Vek = "stredni vek" ) SELECT Z.Jmeno FROM T AS Z, T AS M WHERE Z.Pohlavi = "Zena" AND Z.Vek = "stredne mlady" AND M.Pohlavi = "Muz" AND M.Vek = "stredni vek" AND Z.Prijem = M.Prijem
Techniky spojování hash join nejlepší výsledky v klasických databázích pro fuzzy databáze nevhodné nemůžeme hashovat podle nepřesných hodnot nested loop join v podstatě porovnává každý s každým technicky použitelné, ale hodně pomalé (tedy nepoužitelné) merge join setřídíme množiny podle atributu, přes který spojujeme postupně spojujeme adekvátní prvky
fuzzy technologíı v databázích Oracle Postgress (na Catholic University of Maule) dm (data mining procesy) D (základ pro deduktivní databáze) SQLf, SQLfi
Využití fuzzy technologíı v praxi Foto - Vyhledávání bodu pro zaostření (Minolta) ABS, řízení motoru a klimatizace (Honda, Nissan, Sabaru) Řízení výtahů (Mitsubishi) Korekce chyb ve slévárenských zařízeních (Omron) Disketové mech. - vystavení hlaviček rychlejší až o 30% Rozpoznávání řeči, ručně psaných textů
Zdroje Qi Yang et al.: Efficient Processing of Nested Fuzzy SQL Queries in a Fuzzy Database, IEEE Transactions on Knowledge and Data Engineering. 2001, Vol. 13, No. 6 Angelica Urrutia and Leopoldo Pavesi: Extending the capabilities of database queries using fuzzy logic. http://www.docstoc.com/docs/23960003/chapter-7--a- Fuzzy-SQL-for-Fuzzy-Databases [přístup 8. 11. 2010] José Galindo, Juan M. Medina, Olga Pons, Juan C. Cubero: A Server for Fuzzy SQL Queries. Lecture Notes in Computer Science, 1998, Volume 1495/1998, 164 José Galindo: New Characteristics in, a Fuzzy SQL for Fuzzy Databases. 2005, Salzburg. http://www.wseas.us/elibrary/conferences/2005salzburg/papers/492-268.pdf [přístup 10. 11. 2010]
Zdroje José Galindo at al.: Applying fuzzy databases and to the management of rural accommodation. 2003, Tourism Management 24, 457-463 Základy fuzzy logiky, Slávek Rydval, http://www.rydval.cz/phprs/view.php?cisloclanku=2005061701 [přístup 5. 11. 2010]
Konec Děkujeme za pozornost.