Použitie fuzzy databáz a FSQL
Ján Vojt
31/10/2012 Použitie fuzzy SQL 2
Motivácia
● Tradi né rela né databázy pracujú len s presnými č č hodnotami
● Ľudia preferujú nepresné (vágne) vyjadrovanie
● napr. “Chcem lacné ubytovanie v Talianskom meste neďaleko Ríma.”
● → aplikácie by sa tomu mali prispôsobiť a mali by byť schopné spracovať vágne dotazy
● Často presnú informáciu nemáme k dispozícii
● napr. vidíme, že izba je malá, ale nevieme jej presnú plochu v m2 → do DB nemožeme uložiť hodnotu “malá” → uložíme NULL a nemáme tak o veľkosti žiadnu informáciu
Príklady vágnych dotazov
● V nemocnici:
Chcem zoznam mladých pacientov trpiacich hepatitídou, ktorí boli prijatí približne pred 5 týžd ami.ň
● V škole:
Chcem zoznam študentov, ktorí majú z matematiky dobré známky a z fyziky priemerné známky.
● V supermarkete:
Chcem zoznam produktov, ktoré sa dobre predávali, ale minuli sme málo na ich propagáciu.
31/10/2012 Použitie fuzzy SQL 4
FSQL – Fuzzy SQL
● FSQL je rozšírenie SQL o vágne dotazy
● Každý SQL dotaz je platným FSQL dotazom
● Ide len o rozšírenie príkazu SELECT o
● Lingvistické značky (Linguistic labels)
● Fuzzy komparátory (Fuzzy comparators)
● Prah splnenia (Fulfillment threshold)
● CDEG funkciu (CDEG function)
● Náhradný znak % (Wild card)
● Fuzzy konštanty (Fuzzy constants)
● Podmienka IS (IS condition)
Lingvistické zna ky č
(Linguistic labels)● Ak je atribút používaný ako fuzzy, je pred ním zna ka $ č na jasné odlíšenie od štandardných atribútov
● Každá zna ka má so sebou asociovanéč
● pravdepodobnostné rozdelenie
– Môže byť zadané rôzne, veľmi jednoduché, efektívne a pritom presné je lichobežníkové rozdelenie
● alebo hodnotu so vzťahom podobnosti
– Používa sa pri neusporiadanej doméne (napr. farba)
– Podobnosť nie je definovaná usporiadaním, preto musí byť explicitne dodefinovaná
31/10/2012 Použitie fuzzy SQL 6
Lichobežníkové pravdepodobnostné rozdelenia
studený teplý horúci
teplota
vysoký
Fuzzy komparátory
(Fuzzy comparators)● Rozšírenie štandardných komparátorov v SQL (=, >, …)
● Porovnávajú st pec s konštantou alebo dva st pce ĺ ĺ rovnakého typu
● 2 druhy
● Necessity
– Viac restriktívne
– Podmienka musí byť do splnená aspoň do určitej miery (aj keď nie úplne splnená)
● Possibility
– Menej restriktívne
– Podmienka nemusí byť splnená, ale je preferovaná
31/10/2012 Použitie fuzzy SQL 8
Fuzzy komparátory
(Fuzzy comparators)Prah splnenia
(Fulfillment threshold)● Pre každú podmienku môže by stanovená minimálna ť miera splnenia γ ϵ [0,1]
● Východzí prah je 1 (požadujeme úplné splnenie)
● Syntax: <condition> [THOLD] γ
● THOLD môžeme vynechať a zadať len γ
● Ekvivalent ku komparátoru >=
31/10/2012 Použitie fuzzy SQL 10
CDEG funkcia
(CDEG function)● Syntax: CDEG(<attribute>)
● Funkcia vracia mieru splnenia podmienky/podmienok pre atribút daný v argumente
● Pri logických operátoroch je použitá minimálna a maximálna trojuhoníková norma
● Užívateľ môže tieto funkcie zmeniť
● Namiesto atribútu je možné zada *, ím dostaneme ť č mieru splnenia pre všetky atribúty v podmienkach
● Veľmi užitočné pre zoradenie výsledkov
Náhradný znak %
(Wild card)● Podobné znaku * v SQL
● % ale reprezentuje okrem atribútov aj ich miery splnenia (pre atribúty v podmienke)
● Pre miery používa CDEG funkciu
31/10/2012 Použitie fuzzy SQL 12
Fuzzy konštanty
(Fuzzy constants)Podmienka IS
(IS condition)● Syntax:
<Fuzzy_Attribute> IS [NOT] (UNKNOWN|UNDEFINED|NULL)
● Použité rovnako ako štandardné SQL, ale aj s prvými troma fuzzy konštantami
31/10/2012 Použitie fuzzy SQL 14
Data vo FRDB
(Fuzzy Relational Database)● Tradi ná databázač
● Tradičné relačné data
● Navyše obsahujú fuzzy atribúty 3och typov
– Typ 1
● Presné, bez vágnosti, ne-fuzzy
● Ale možu na nich byť kladené flexibilné dotazy
– fuzzy komparátory
– fuzzy konštanty
– miera splniteľnosti
● Nad ich doménou môžeme definovať lingvistické značky, asociované s fuzzy hodnotou
● Tradičné atribúty môžu byť deklarované ako typ 1
→ dodefinujeme značky a môžeme použiť fuzzy komparátory
Data vo FRDB
(Fuzzy Relational Database)– Typ 2
● Presné alebo fuzzy
● Fuzzy data sú ukladané ako pravdepodobnostné rozdelenie
● Možné použiť všetky fuzzy konštanty
– Typ 3
● Data z domény bez usporiadania
● Sú pre ne definované lingvistické značky so
vzťahom podobnosti (do akej miery sú podobné)
● Použiteľný je na nich jediný komparátor FEQ
– pretože nemáme usporiadanie
31/10/2012 Použitie fuzzy SQL 16
Data vo FRDB
(Fuzzy Relational Database)● FMB – Fuzzy meta-knowlege base
● Obsahuje informácie o FRDB a jej fuzzy atribútoch (v relačnom formáte)
– Typ 1 (presné dáta)
● Lichobežníkové lingvistické značky
● Hraničná hodnota – ak je vzdialenosť medzi prvkami väčšia, sú “veľmi ďaleko”
– Použité pri komparátoroch MGT/NMGT, MLT/NMLT
– Typ 2 (mix) – to isté ako Typ 1
– Typ 3 (neusporiadané)
● Lingvistické značky
● Vzťah podobnosti
Využitie FSQL v aplikácii cestovnej kancelárie (CK)
● Klienti nemajú presnú predstavu pri h adaní ubytovaniaľ
● Vedia, čo zhruba chcú a sú ochotní spraviť kompromis
● Chceme využi FRDB, aby CK mohla používať ť
● Presné aj vágne hodnoty
● Flexibilné dotazy nad oboma hodnotami
● Flexibilná databáza najviac využíva atribúty typu 2 (mix)
● náročné na pamäť aj CPU, preto sú používané opatrne
● Príklad dotazu, ktorý chceme by schopný vyhodnoti :ť ť
“Vypíš každé lacné ubytovanie v blízkosti hôr, kde nie je príliš chladno a sú blízko mesta.”
31/10/2012 Použitie fuzzy SQL 18
Využitie FSQL – atribúty typu 2 (príklady)
● Cena
● Ubytovanie na vidieku má často vyjednateľnú cenu
● Plocha
● Často je problém odmerať plochu presne
● Vek nehnute nostiľ
● Často nevieme presne, pritom stačí odhad
● Stav budovy
● Môže byť hodnotenie [0,10], ale aj “luxusné”, ...
Využitie FSQL – atribúty typu 3 (príklady)
● Umiestnenie
● Napr. trojica vzdialeností od campu, lesa, jazera
● Typ ubytovania
● Dom, byt, dvojdom, chata, …
● Napr. definujeme stupeň podobnosti chaty a dvojdomu hodnotou 0.8
– Vo výsledku dotazu na chatu budú tak aj dvojdomy
● Prostredie
● Pláž, mesto, vidiek, príroda, pohorie, samota, ...
31/10/2012 Použitie fuzzy SQL 20
Využitie FSQL – fuzzy konštanty (príklady)
● UNKNOWN
● hodnotu atribútu nepoznáme
● UNDEFINED
● Hodnota je nepoužiteľná
– (veľkosť záhrady pri dome bez záhrady)
● NULL
● O atribúte nič nevieme
– Nevieme či je jeho hodnota neznáma, alebo nepoužiteľná
– (nevieme či je pri dome záhrada)
Využitie FSQL – dotaz (príklady)
● Vo výsledkoch sa objavia okrem chát aj domy a dvojdomy, ak majú mieru podobnosti >= 0.5
● Prinesie to relevantnejšie výsledky
● Znižuje pravdepodobnosť prázdneho výsledku
SELECT CDEG(*), Ubytovanie.*
FROM Ubytovanie
WHERE Typ FEQ $Chata 0.5
AND Plocha FGEQ $Velka 0.5
AND Izby FGEQ #8 0.5
AND Umiestnenie FEQ $Vidiek 0.7 AND Umiestnenie FEQ $Hory 0.7 ORDER BY 1 DESC;
31/10/2012 Použitie fuzzy SQL 22
Využitie FSQL – dotaz (príklady)
● FSQL dotaz vráti prázdny výsledok - o robi ?č ť
● nemôžeme povedať klientovi “nič nemáme”...
● Využijeme
● Fuzzy komparátory
– Zmeníme necessity komparátory na possibility
● Threshold
– Znížime mieru splnenia
● Použijeme klasický komparátor
– THOLD nahradíme za < alebo <=
● Fuzzy konštanty
– Zmeníme fuzzy konštantu ak je v dotaze použitá
● Logické operátory
– Zmeníme logické operátory, alebo úplne vyhodíme podmienku
Zdroje
● Galindo, J.; Carmen Aranda, M.; Caro, J. L.; Guevara, A.; Aguayo, A.
Applying fuzzy databases and FSQL to the management of rural
accommodation. Tourism Management 2002 Vol. 23 No. 6 pp. 623-629.
31/10/2012 Použitie fuzzy SQL 24
akujem za pozornos .
Ď ť