Fuzzy Databázy (Computing with words)

44
Fuzzy Databázy (Computing with words) PDT 2008 Genci

description

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 (kapitol y 2-3 ). - PowerPoint PPT Presentation

Transcript of Fuzzy Databázy (Computing with words)

Page 1: Fuzzy Databázy (Computing with words)

Fuzzy Databázy(Computing with words)

PDT 2008

Genci

Page 2: Fuzzy Databázy (Computing with words)

Obsah

• Motivácia

• Fuzzy logika

• Fuzzy terms (výrazy)

• Jazykové operátory

• Fuzzy SQL

Page 3: Fuzzy Databázy (Computing with words)

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/

Page 4: Fuzzy Databázy (Computing with words)

Motivácia

• Stredne vysoká budova blízko banky

Page 5: Fuzzy Databázy (Computing with words)

Riešenie

Page 6: Fuzzy Databázy (Computing with words)

Príklad

• Máme databázu študentov a ich študijné priemery

Page 7: Fuzzy Databázy (Computing with words)

Dáta o študentoch

Page 8: Fuzzy Databázy (Computing with words)

• Hľadáme dobrých študentov (študenti s priemerom >= 3.5)

• DotazSELECT * FROM STUDENTS WHERE GPA >= 3.5;

Page 9: Fuzzy Databázy (Computing with words)

Výsledok

Page 10: Fuzzy Databázy (Computing with words)

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;

Page 11: Fuzzy Databázy (Computing with words)

Výsledok

Page 12: Fuzzy Databázy (Computing with words)

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í.

Page 13: Fuzzy Databázy (Computing with words)

Výsledok - nevýhody

Page 14: Fuzzy Databázy (Computing with words)

Riešenie

Aplikácia fuzzy logiky

Page 15: Fuzzy Databázy (Computing with words)

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.

Page 16: Fuzzy Databázy (Computing with words)

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.

Page 17: Fuzzy Databázy (Computing with words)

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

Page 18: Fuzzy Databázy (Computing with words)

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

Page 19: Fuzzy Databázy (Computing with words)

Fuzzy term (výraz)

• Fuzzy number

• Fuzzy label

Page 20: Fuzzy Databázy (Computing with words)

Fuzzy number (číslo)

Fuzzy číslo "asi 2"

0

0,2

0,4

0,6

0,8

1

0 1 2 3 4

Page 21: Fuzzy Databázy (Computing with words)

Fuzzy label (prívlastok)

Mem

bers

hip

degr

ee

Age20 24 26 30

1

Energetic (rázny, energický)

Page 22: Fuzzy Databázy (Computing with words)

Ďalšie fuzzy labels

• starý- mladý

• vysoký - nízky

• blízko - ďaleko

• ...

Page 23: Fuzzy Databázy (Computing with words)

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).

Page 24: Fuzzy Databázy (Computing with words)

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>.

Page 25: Fuzzy Databázy (Computing with words)

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)

Page 26: Fuzzy Databázy (Computing with words)

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]

Page 27: Fuzzy Databázy (Computing with words)

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)

Page 28: Fuzzy Databázy (Computing with words)
Page 29: Fuzzy Databázy (Computing with words)

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),

Page 30: Fuzzy Databázy (Computing with words)

Riešenie príkladu z úvodu

Page 31: Fuzzy Databázy (Computing with words)

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.

Page 32: Fuzzy Databázy (Computing with words)

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.

Page 33: Fuzzy Databázy (Computing with words)

Fuzzy SQL

Podľa prezentácie

Jaroslav Tykal, Jiří Dokulil: Fuzzy SQL(zo stránky prof. Pokorného)

Page 34: Fuzzy Databázy (Computing with words)

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.

Page 35: Fuzzy Databázy (Computing with words)

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

Page 36: Fuzzy Databázy (Computing with words)

λ-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

Page 37: Fuzzy Databázy (Computing with words)

λ-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

Page 38: Fuzzy Databázy (Computing with words)

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)

Page 39: Fuzzy Databázy (Computing with words)

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

Page 40: Fuzzy Databázy (Computing with words)

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

Page 41: Fuzzy Databázy (Computing with words)

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 λ.

Page 42: Fuzzy Databázy (Computing with words)

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’)

Page 43: Fuzzy Databázy (Computing with words)

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

Page 44: Fuzzy Databázy (Computing with words)

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