1 / 44

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

azure
Download Presentation

Fuzzy Databázy (Computing with words)

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Obsah • Motivácia • Fuzzy logika • Fuzzy terms (výrazy) • Jazykové operátory • Fuzzy SQL

  3. Zdroje [1]Carlo Zaniolo a kol.: Advanced Database Systems, Morgan Kaufman Publishers, San Francisco, 1997 (kapitoly 2-3). [2] ImrichJ.: 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/

  4. Motivácia • Stredne vysoká budova blízko banky

  5. Riešenie

  6. Príklad • Máme databázu študentov a ich študijné priemery

  7. Dáta o študentoch

  8. Hľadáme dobrých študentov (študenti s priemerom >= 3.5) • Dotaz SELECT * FROM STUDENTS WHERE GPA >= 3.5;

  9. Výsledok

  10. 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). • Dotaz SELECT * FROM STUDENTSWHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC;

  11. Výsledok

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

  13. Výsledok - nevýhody

  14. Riešenie Aplikácia fuzzy logiky

  15. História vzniku fuzzy logiky • 1965Prof. 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.

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

  17. Funkcie príslušnosti

  18. Funkcie príslušnosti (pokr.)

  19. Fuzzy term (výraz) • Fuzzy number • Fuzzy label

  20. Fuzzy number (číslo)

  21. Fuzzy label (prívlastok) Energetic (rázny, energický) Membership degree 1 20 24 26 30 Age

  22. Ďalšie fuzzy labels • starý- mladý • vysoký - nízky • blízko - ďaleko • ...

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

  24. 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ácia INT(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>.

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

  26. Jazykové operátory

  27. 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žina A  B = uA(x) μB(x),

  28. Riešenie príkladu z úvodu

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

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

  31. Fuzzy SQL Podľa prezentácie Jaroslav Tykal, Jiří Dokulil: Fuzzy SQL (zo stránky prof. Pokorného)

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

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

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

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

  36. Príklad • Obchod s vínom REGION (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)

  37. 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) AS SELECT 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 TV WHERE V.nazov_typu=TV.nazov_typu AND L.nazov_vina=V.nazov_vina

  38. 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 • Nakonec ešte zadefinujeme operátor oveľa menší než«p nad FLASA.cena

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

  40. Príklad (pokr.) – vytvorenie fSQL dotazu • Ak vezmeme do úvahy, že bola zvolená hodnota λ=0.8 dostaneme tento dotaz: SELECT (0.8) * FROM PRODUKT , REGION WHERE (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’)

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

  42. Príklad (pokr.) – prevod na SQL – pokračovanie • Dostávame SQL dotaz SELECT * FROM PRODUKT, REGION WHERE (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

More Related