Download - Fuzzy Databázy (Computing with words)
Fuzzy Databázy(Computing with words)
PDT 2008
Genci
Obsah
• Motivácia
• Fuzzy logika
• Fuzzy terms (výrazy)
• Jazykové operátory
• Fuzzy SQL
Zdroje
[1] Carlo Zaniolo a kol.: Advanced Database Systems, Morgan Kaufman Publishers, San Francisco, 1997 (kapitoly 2-3).
[2] Imrich J.: Fuzzy databázy. Stav problematiky, dostupný SW, implementácia v relačných DBS. Diplomová práca. 2000. KPI FEI Košice
[3] články Jaroslava Kostelanského, pôvodne umiestnené na http://www.kredit.sk/DB-fuzzy.html
Mnohé veci nájdete v prezentáciách študentov prof. Pokorného na stránke:http://www.ksi.mff.cuni.cz/~pokorny/dj/
Motivácia
• Stredne vysoká budova blízko banky
Riešenie
Príklad
• Máme databázu študentov a ich študijné priemery
Dáta o študentoch
• Hľadáme dobrých študentov (študenti s priemerom >= 3.5)
• DotazSELECT * FROM STUDENTS WHERE GPA >= 3.5;
Výsledok
Príklad – pokr.
• Ďalej požadujeme– Zotriediť študentov od najlepšieho k
najhoršiemu.– Zvolíme triedenie podľa priemeru zostupne
(DESC) a podľa absencií vzostupne (ASC).
• DotazSELECT * FROM STUDENTSWHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC;
Výsledok
Nevýhody riešenia
• Nie úplne vyhovujúce radenie študentov.– Student Barry Allen má o málo horší priemer než Billy
Kidd. Billy Kidd má však o mnoho horšiu docházku než Barry Allen.
– Ktorý z nich je teda lepší študent?
• Nie úplne vyhovujúci zoznam študentov– Zoznam neobsahuje študentov, ktorí majú študijný
priemer 3.49, ale žiadnú absenciu.– Zoznam neobsahuje študenta, ktorý má študijný
priemer 4.00 a má 10 absencií.
Výsledok - nevýhody
Riešenie
Aplikácia fuzzy logiky
História vzniku fuzzy logiky
• 1965 Prof. L. A. Zadeh (Univerzity of California, Berkeley)
• Prvých 10 rokov odmietavý postoj• 80-te roky vzostup • Japonsko, 1987 "Predictive Fuzzy Control" ,
Hitachi • 1989 inštitút LIFE (Laboratory for International
Fuzzy Engineering Research) vstupný kapitál - 33 mil. dolárov
• 1992 v Japonsku registrovaných viac ako 2000 fuzzy patentov.
Fuzzy množina, funkcia a stupeň príslušnosti
Definícia : Nech U je množina a nech L = <1, 0> je interval. Potom fuzzy množina A na univerze U je definovaná nasledovne:
A={x/μA (x)| x U, μA : U → L},
pričom μA sa nazýva funkcia príslušnosti fuzzy množiny A. Každému prvku x je priradená hodnota μA (x) L, ktorá sa nazýva stupeň príslušnosti prvku x do fuzzy množiny A.
Ak μA (x)=0, potom prvok x určite nepatrí do fuzzy množiny.Ak μA (x)=1, potom prvok určite do množiny patrí.
V prípade, že μA (x) {0,1} potom x čiastočne patrí do fuzzy množiny A.
Funkcie príslušnostiLineárne rastúca funkcia
0
0,2
0,4
0,6
0,8
1
5 10 15 20
Prvky univerza
Fu
n.
prí
slu
šno
sti
Lineárne klesajúca funkcia
0
0,2
0,4
0,6
0,8
1
5 10 15 20
Prvky univerza
Fu
n.
prí
slu
šn
os
ti
Trapezová funkcia
00,20,40,60,8
1
5 10 15 20
Prvky univerza
Fu
n.
prí
slu
šno
sti
Fuzzy množina S+
0
0,2
0,4
0,6
0,8
1
0 1 2 3 4 5 6 7 8 9 10
Fuzzy množina S-
0
0,2
0,4
0,6
0,8
1
0 1 2 3 4 5 6 7 8 9 10
Funkcie príslušnosti (pokr.)
Fuzzy množina Pí
0
0,2
0,4
0,6
0,8
1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
Fuzzy term (výraz)
• Fuzzy number
• Fuzzy label
Fuzzy number (číslo)
Fuzzy číslo "asi 2"
0
0,2
0,4
0,6
0,8
1
0 1 2 3 4
Fuzzy label (prívlastok)
Mem
bers
hip
degr
ee
Age20 24 26 30
1
Energetic (rázny, energický)
Ďalšie fuzzy labels
• starý- mladý
• vysoký - nízky
• blízko - ďaleko
• ...
Qualifiers (jazykové operátory)
• Medzi najčastejšie požívané jazykové operátory patria: – veľmi (very), – značne (highly), – viac-menej (more or less), – zhruba (roughly),– skôr (rather),– mierne (slightly).
Definícia
Nech A U je fuzzy množina a nech L=<1,0> je množina, potom pre x U platí:a) koncentrácia
CON(A) = CON(μA(x)) = μA(x) * μA(x) = μA(x)2,b) dilatácia
DIL(A) = DIL(μA(x)) = μA(x)0.5 = 2√ μA(x)
c) intenzifikáciaINT(A) = INT(μA(x)) = 2 * μA(x)2 pre μA(x) <0,0.5>,
INT(A) = INT(μA(x)) = 1 - 2 *(1 - μA(x))2 pre μA(x) <0.5,1>.
Operácie CON DIL INT
0
0.2
0.4
0.6
0.8
1
0 1 2 3 4 5 6 7 8 9 1011121314151617181920
A CON(A) DIL(A) INT(A)
Modelovanie jazykových operátorov
– veľmi veľmi(A) = CON(A) = μA(x)2
– značne značne(A) = μA(x)3
– viac-menej viac-menej(A) = DIL(A) = 2√ μA(x)
– zhruba zhruba(A) = DIL (DIL(A)) = 4√ μA(x)
– skôr skôr(A) = INT (CON(A))
– mierne mierne(A) = [2*(μA(x) (1- μA(x)2)] /[√(5)-1]
Jazykové operátory
Jazykové operátory
00.10.20.30.40.50.60.70.80.9
1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
A Veľmi(A) Značne(A) Viac-menej(A)
Zhruba(A) Skôr(A) Mierne(A)
Operácie nad fuzzy množinami
• zjednotenie(A B) x = μA(x) μB(x) = μA(x) μB(x) = max(μA(x), μB(x))
• prienik(A B) x = μA(x) μB(x) = μA(x) μB(x) = min(μA(x), μB(x))
• súčin (obmedzený, alebo odvážny prienik)(A B) x = μA(x) μA(x) = 0 (μA(x) + μB(x) - 1)
• doplnok A = μA(x) = 1 - μA(x)
• podmnožinaA B = uA(x) μB(x),
Riešenie príkladu z úvodu
Fuzzy logika v relačných databázových systémoch
• Väčšina fuzzy databázových systémov umožňuje využívať fuzzy logiku iba pri deklarovaní dotazov.
• Výsledkom takýchto dotazov je ohodnotená množina záznamov, ktorá obsahuje stĺpec (QCIX-Query Compatibility Index), ktorý určuje do akej miery daný záznam vyhovuje zadanému dotazu.
Fuzzy logika v relačných databázových systémoch (pokr.)
• Niektoré databázové systémy umožňujú definovať aj atribúty ako fuzzy atribúty.– Databázový systém OMRON Fuzzy SQL
umožňuje deklarovať fuzzy number (fuzzy čislo) a fuzzy label.
Fuzzy SQL
Podľa prezentácie
Jaroslav Tykal, Jiří Dokulil: Fuzzy SQL(zo stránky prof. Pokorného)
Dotazy
• Z fuzzy predikátov a operátorov je pomocou logických spojok vytvorená podmienka WHERE
• Je používaná fuzzy implementácia logických spojok
• Výsledný dotaz vypadá takto:SELECT A FROM R WHERE fc
• Výsledkom dotazu je fuzzy relácia Rf, ku ktorej je priradená funkcia příslušnosti (membership function) určujúca, ako jednotlivé riadky výsledku zodpovedajú podmienke fc.
Vyhodnotenie dotazu
• Dotazy chceme vyhodnocovať pomocou relačnej databázy, je teda nutné previesť fuzzy reláciu na bežnú reláciu
• Vykonáme λ-rez, teda vezmeme tie n-tice z Rf, pre ktoré je μRf(a)≥ λ
SELECT (λ)A FROM R WHERE fc
λ-rez
• Aplikácia λ-rezu na rôzne fuzzy distribúcie– (a) definícia predikátu ‘vysoký’ nad cenou produktu– (b) definícia predikátu ‘oveľa menší’ nad rozdielom
dvoch atribútov
λ-rez v číslach
• Vezmime fuzzy podmienku C a D(C) jej fuzzy stupeň
• Následne môžeme vykonávať úpravy výrazu– D(cena=vysoka ۸ dlzka« 100)≥0,8– min(D(cena=vysoka),D(dlzka « 100)) ≥0,8– D(cena=vysoka)≥0,8 ۸ D(dlzka « 100) ≥0,8– (110≤cena≤180) ۸ (dlzka – 100) ≤ -18
• Výslednú podmienku možeme relatívne jednoducho preložiť do SQL
Príklad• Obchod s vínomREGION (nazov_regionu, krajina)PRODUCENT (nazov_prod, adresa_prod, email_prod, web_prod,
nazov_regionu)TYP_VINA (nazov_typu, typ, farba)VINO (nazov_vina, nazov_prod, nazov_regionu, kategoria, cru)FLASA(nazov_vina, nazov_prod, rok, dostupnost, cena)
• Cudzie kľúče súPRODUCENT: foreign key (nazov_regionu) references
REGION(nazov_regionu)VINO: foreign key (nazov_prod) references PRODUCENT(nazov_prod)VINO: foreign key (nazov_typu) references TYP_VINA(nazov_typu)VINO: foreign key (nazov_regionu) references REGION(nazov_regionu)FLASA: foreign key (nazov_vina, nazov_prod) references VINO(nazov_vina,
nazov_prod)
Príklad (pokr.)• Tieto tabuľky sú štrukturované tak, ako to zodpovedá relačným
databázam• Zvolená implementácia bude jednoduchšia, keď to všetko bude
pohromade
CREATE VIEW PRODUKT (nazov_vina, rok, nazov_prod, cena, nazov_typu, farba, kategorie, nazov_regionu, vek) ASSELECT F.nazov_vina, F.rok, F.nazov_prod, F.cena,
TV.nazov_typu, TV.typ, TV.farba, V.kategorie, V.nazov_regionu, ($CURRENT_YEAR-L.rok)FROM FLASA F, VINO V, TYP_VINA TVWHERE V.nazov_typu=TV.nazov_typu AND L.nazov_vina=V.nazov_vina
Príklad (pokr.)
• Definujeme fuzzy operátor podobnosti nad REGION.nazov_regionu a TYP_VINA.nazov_typu, ktoré reprezentujú to, že niektoré druhy vín a oblasti sú si podobné
• Zadefinujeme niektoré fuzzy predikáty
Položka tabuľky Fuzzy hodnoty
PRODUCENT.nazov_prod norm_dôležitosť, vysoká_dôležitosť
TYP_VINA. nazov_typu norm_dôležitosť, vysoká_dôležitosť
REGION. nazov_regionu norm_dôležitosť, vysoká_dôležitosť
FLASA.vek mladé, stredné, staré
FLASA.cena veľmi lacné, lacné, stredné, drahé, veľmi drahé
• Nakonec ešte zadefinujeme operátor oveľa menší než «p nad FLASA.cena
Príklad (pokr.) – zadanie dotazu
• Dajme tomu, že zákazník hľadá mladé červené víno od významného výrobcu za strednú cenu, ktorá je omnoho menšia než €40 a má podobné charakteristiky ako víno z Bordeaux.
• Zákazník vo formulári určí tieto požiadavky. Zároveň musí určiť hodnotu λ.
Príklad (pokr.) – vytvorenie fSQL dotazu
• Ak vezmeme do úvahy, že bola zvolená hodnota λ=0.8 dostaneme tento dotaz:
SELECT (0.8) *FROM PRODUKT , REGIONWHERE
(PRODUKT.nazov_regionu=REGION.nazov_regionu) AND(PRODUKT.nazov_regionu |sim| ‘Bordeaux’) AND(PRODUKT.nazov_prod={vyská_dolezitost}) AND(PRODUKT.cena=[stredny]) AND (PRODUKT.cena «p 40) AND(PRODUKT.vek=[mlade]) AND(PRODUKT.farba=‘červene’)
Príklad (pokr.) – prevod na SQL
• Máme určenú hodnotu λ=0.8, takže si môžeme znázorniť distribúcie pre cenu a vek
Príklad (pokr.) – prevod na SQL – pokračovanie
• Dostávame SQL dotazSELECT *FROM PRODUKT, REGIONWHERE
(PRODUKT.nazov_regionu=REGION.nazov_regionu) AND(PRODUKT.nazov_regionu IN (‘Bordeaux’, ‘Juhozapad’)) AND(PRODUKT.nazov_prod IN (‘prod1’, ‘prod2’,… ‘prodN’) AND(PRODUKT.cena BETWEEN 19 AND 31.5) AND(PRODUKT.CENA – 40 <= -18) AND(PRODUKT.vek BETWEEN 0 and 2) AND(PRODUKT.farba=‘červene’)
• prod1, prod2, … prodN sú mená producentov, ktorí majú mieru príslušnosti do množiny vyská_dôležitosť väčšiu než 0.8
• Bordeaux a Juhozápad sú jediné regióny, ktorých miera podobnosti s Bordeaux je väčšia než 0.8