fuzzy databázy (computing with words)

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

Upload: azure

Post on 08-Jan-2016

30 views

Category:

Documents


3 download

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

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