1 / 74

FUZZY SQL

FUZZY SQL. Radomir Tarabič, Egor Ivkin. Co je fuzzy logika ?. Fuzzy logika operuje s tzv. mlhavými pojmy fuzziness = mlhavost Fuzzy logika představuje rozšíření klasické booleovské logiky, díky němuž lze lépe pracovat s nepřesnými nebo vágními daty

alair
Télécharger la présentation

FUZZY SQL

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 SQL Radomir Tarabič, Egor Ivkin

  2. Co je fuzzy logika ? • Fuzzy logika operuje s tzv. mlhavými pojmy • fuzziness = mlhavost • Fuzzy logika představuje rozšíření klasické booleovské logiky, díky němuž lze lépe pracovat s nepřesnými nebo vágními daty • Tam, kde klasické logické uvažování vyžaduje pouze hodnoty ano a ne, může fuzzy logika pracovat s pojmy jako možná, skoro či velmi

  3. Kdo jí vymyslel ? • Vícehodnotová logika byla "objevena" Mr. J. Lukadiewiczem v roce 1920 • Fuzzy logika a teorie množin jako taková byla představena Mr. Lotfi Zadehem v roce 1965. • První kdo prakticky použil fuzzy logiku byl Abraham Mandani v roce 1970 (kontrolní systém pro turbíny)

  4. Proč je fuzzy logika důležitá? • Striktní popis vede k popisu skutečnosti pouze pomocí dvouprvkové množiny {0,1}. • Pokud problém nelze jednoznačně určit, rozkládá se na menší podproblémy, ale za cenu místa a opět lze použít jen dvouprvkovou množinu. • V případech, kdy je již nemožné nebo neúnosné takto problém rozdělit, dopouštíme se jisté chyby a tím je dán odklon od reality

  5. Proč je fuzzy logika důležitá? -2 • Význam fuzzy logiky lze vnímat ve dvou rovinách. • První rovinou je potřeba uchopita pracovat s nepřesnými či mlhavými daty. • Druhou rovinou je celkový přístup k popisureálného světa. • Při používání přesných popisů totiž dochází k idealizování skutečnosti a tedyodklonu od reality.

  6. Kde se fuzzy logika používá ? Aplikace: • Řízení (robotika, spotřební elektronika) • Informační systémy (DBMS, získávání informací) • Rozpoznávání obrazců (strojové vidění, zpracování obrázků) • DSS

  7. Běžné otázky • V nemocnici: “Dej mi seznam mladých pacientů kteří trpí hepatidou a byli přijati přibližně před více jak 5 týdny” • Ve škole: “Dej mi seznam studentu kteří prošli matematikou s dobrými známkami a fyzikou s průměrnými“. • V supermarketu: “Seznam výrobků, které se prodaly velmi dobře a u kterých jsme neutratili mnoho za jejích reklamu”

  8. Příklad • Tabulka “Projects”

  9. Příklad - 2 • Chceme najít projekty s vysokýmrozpočtemkteré netrvali doluho • Můžeme to zjistit, například, následujícím dotazem: select Project, Budget, Duration from Projects where Budget>80 and Duration<90

  10. Výsledek • Výsledek splnujepožadavky, ale existuji projekty kteréjsou velice blízkopožadavkům a nejsou ve výsledku. • Zkusímepodmínkurozšířit: select Project, Budget, Duration from Projects where Budget>75 and Duration<100

  11. Výsledek - 2 • Dostali jsme většímnožstvídat, ale stale existují data která jsou na okraji, ale do výsledku nejsou zahrnuta. • Například, projekt p03 má rozpočet 73 000 a délku trvání 102 a mohl by taky odpovídat naším potřebám. • Další rozšiřování nemá smysl – jak budeme vědět kde zastavit. • Musíme to zkusit jinak

  12. Výsledek s Fuzzy SQL • Definujme fuzzy množinu “vysoký” pro sloupecBudget • Definujme fuzzy množinu “krátký” pro sloupec Duration

  13. Výsledek s Fuzzy SQL - 2 • V každémgrafu je zřejměkolikkteráhodnotanáleží do fuzzy množiny • Zkusímevytvořitobrazeckterýnám výpočte koliknáležídvojice (Budget, Duration) do požadavku • Uděláme to tak, ževypočítáme aritmetickýprůměr

  14. Výsledek s Fuzzy SQL - 3 • S použitím avg :

  15. Běžné problémy • Zadání 1: Zákazník si vybírá barvu obkladového materiálu. Chce barvu “podobnou” jiné barvě, kterou zná. • Řešení: “Podobná” barva je taková barva, jejíž složky RGB se liší maximálně o 10 od složek RGB barvy definované zákazníkem. Problém: Pokud se barva liší od barvy zadané uživatelem pouze v 1 složce o 11, zákazník ji neuvidí

  16. Běžné problémy - 2 • Zadání2: Realitní kancelář páruje nabídku s “odpovídající” poptávkou. Nabídka i poptávka jsou charakterizované lokalitou, cenou a dalšími atributy. • Řešení: Pro každý atribut zvolit jistou toleranci. • Problém: Které dvojice nabídka/poptávka si ještě odpovídají a které už ne?

  17. Elektronický katalog Problém prohledávání elektronických katalogů zboží: • Tradiční relační databáze podporují vyhledávání na základě přesných podmínek • Jsou vráceny právě výrobky přesně odpovídající zadané podmínce • Zákazník se většinou zeptá „špatně“ • Příliš nepřesná podmínka vracející obrovský počet záznamů • Příliš detailní specifikace, která nic nevrátí • Představa zákazníka • Neví, jak přesně popsat, co chce • Má o tom jen nejasnou představu

  18. Nedostatky SQL Jazyk SQL používá Booleovu algebru, což přinášíjeden velký problém: V dotazu typu A and B and C and … and Z je nesprávnost z našeho pohledu v tom, že dotazu nevyhovují údaje, které nesplňují jednu z podmínek A až Z, stejně tak jak nevyhovují údaje, které nesplňují dvě a více podmínek • Není tedy rozdílu mezi údaji, které splňují různý počet podmínek dotazu

  19. Zavedení fuzzy množin • Každému prvku je přiřazen stupeň příslušnosti, který vyjadřuje míru členství prvku vefuzzy množině. • Stupeň příslušnosti nabývá hodnot z intervalu<0,1>. • Čím vyšší (nižší) jestupeň příslušnosti, tím více (méně) platí, že prvek náleží do fuzzy množiny. • Jinými slovyvyjadřuje míru relevantnosti prvku v dané množině. • Hodnota 0 vyjadřuje stav, kdy prvek domnožiny vůbec nepatří a hodnota 1 stav, kdy prvek do množiny zcela patří

  20. Fuzzy množiny Př. (Plat): Pokud považujeme příjem zhruba nad 35 000 Kč za vysoký, potom z tohoto pohledu je méně důležitý rozdíl mezi příjmem 34 000 Kč a 35 000 Kč než mezi platem 32 000 Kč a 33 000 Kč. Samozřejmě, s rostoucím platem roste i stupeň příslušnosti do fuzzy množiny vysoký příjem.

  21. Fuzzy množiny - 2 Př (věk): Podívejme se na vágní pojem střední věk. Můžeme si jej představit jakožto člověka s věkem okolo 35 let.

  22. Principy • Fuzzy relace Rf je podmnožina kartézského součinu domén D1,…,Dn, kde jedno Di je DU — interval <0,1> • Hodnotalibovolné n-tice říká, jak hodně tato n-tice náleží do fuzzy relace Rf • Obvyklou relaci je možné považovat za fuzzy relaci, kde ve sloupci DU je stupeňroven vždy jedné pro každou n-tici.

  23. Fuzzy modelování Fuzzy relace se získá pomocí fuzzypodmínky aplikovanéna obvyklou relaci. Fuzzy podmínka se reprezentuje čtyřmi typy termů: • Logické (Booleans) • Transformace (Transformations) • Přesívání, změny (Alterations) • Interakce (Interactions)

  24. Transformace • Transformace definuje fuzzy množinu, jejíž interpretace si můžeme představit jako převod z kartézského součinu množin E1, …, En do intervalu <0,1>. Příklad transformace: • vysoký: VÝŠKA → <0,1>, h → µvysoký(h) • štíhlý: VÝŠKA x VÁHA → <0,1>, (h, w) → µštíhlý (h, w) Porovnání může být i přímo mezi objekty: • větší než: VÝŠKA x VÝŠKA → <0,1>, (h1, h2) → µvětší_než (h1, h2)

  25. Transformace - 2 • Je navrženoněkolikzákladníchfunkci na vyjádřeníhodnoty transformace. • Trapezoid : α, β, γ, δ = pevné; α<β< γ < δ ; S (x, α, β, γ, δ) = 0 , x ≤ α nebo x ≥ δ S (x, α, β, γ, δ) = (x-α)/(β-α) , α≤ x ≤β S (x, α, β, γ, δ) = 1 , β≤ x ≤γ S (x, α, β, γ, δ) =(x-δ)/(γ-δ) , γ≤ x ≤δ

  26. Transformace - 3 • Pravděpodobnostní rozdělení • f(x) = 1 – prvek určitě patří do množiny • f(x) = 0 – prvek určitě nepatří do množiny • f(x) Î (0, 1) – prvek patří do množiny s pravděpodobností f(x)

  27. Přesívání, změny • Přesívání, změny má za úkol nějakým způsobem zpracovat slova typu mnoho, okolo, velmi mnoho, málo, víceméně a negace. • Často se slovo velmirepresentuje následujícím způsobem: velmi fuzzycon (x) = (µfuzzycon(x))2 • A negace: negace fuzzycon (x) = 1-µfuzzycon(x)

  28. Interakce • Interakce má za úkol spolupráci mezi fuzzy množinami. • Konjunkce • Minimum z obou ohodnocení • μA۸B(x)=min(μA(x), μB(x)) • Disjunkce • Maximum z obou ohodnocení • μA٧B(x)=max(μA(x), μB(x))

  29. Fuzzy modelování - závěr • Př.: Vyberme si člověka velmi vysokého a současně s věkem kolem 40 let. select JMENOfrom LIDIwhere(VEK=okolo-40) and(VYSKA=velmi vysoký) • Fuzzy podmínka bude vypadat následovně: min ((µvysoký(výška))2, µokolo-40(věk))

  30. příkaz SELECT • Obvykle příkaz SQL zapisujeme: select<attributes> from <relations> where <condition> • S fuzzy, SELECT příkazzůstáváv podstatě stejný, kromě: • složený fuzzy podmínkyse můžu objevit na místo Boolean • musíme specifikovatregulacioni parametr nová formulace: select n|t <attributes> from <relations> where <fuzzy_condition>

  31. příkaz SELECT - 2 • Př: Vyber zaměstnance ve středním věku mající vysoký příjem. • Klasické SQL: select NAME, AGE, INCOME fromEMPLOYEE where(AGE >= 25 and AGE <= 45) and(INCOME >= 35, 000) • Fuzzy SQL: select0.75 NAME, AGE, INCOME from EMPLOYEE where (AGE = middle) and(INCOME >= high)

  32. Míra splnění Pro každou podmínku je možné určit hodnotu při které požadujeme podmínku za splněnou. <podmínka> THOLD g Př:Vrat mi všechny osoby s čistými vlasy (in minimum degree 0.5) které jsou možnávyšší než proměnna $Tall(in minimum degree 0.8): select * from Person where Hair FEQ $Fair thold 0.5 and Height FGT $Tall thold 0.8

  33. Fuzzy komparátory • Kromě typických komparátory (=, >...), FSQL zahrnuje fuzzy komparátory v následující tabulce:

  34. Lingvistické proměnné Jestli je možnoprovést fuzzy úpravy na atributu, potom mu můžemepřiradit lingvistickou proměnu Existujídvěmožnosti: • Proměnné pro atributy na uspořadatelnýchmnožin: každém atributu je přirazenipravděpodobnostní trapezoidnírozdělení - $Short, $Tall, $Very_Tall, $Very_Intelligent • Proměnné pro atributy na neuspořadatelnýchmnožin: pro každoudvojiciatributů je definovaná relace podobnosti, která náleži do intervalu <0,1>

  35. Množinové operace Interpretace základníchmnožinovýchoperacinad fuzzy množinami: • Sjednocení: µAuB (x) = max (µA (x), µB (x)) • Průnik: µA∩B (x) = min (µA (x), µB (x)) • Rozdíl: µA-B (x) = µA∩B‘ (x) = min (µA (x),(1-µB(x)))

  36. Základní Fuzzy Konstanty • FSQL definuje syntaxi pro některé fuzzy konstanty. Nekteré jsou podrobně uvedeny v následující tabulce:

  37. Podmínka IS <Fuzzy_Atribut> IS [NOT] (UNKNOWN | UNDEFINED | NULL ) • Tahle podmínka (bez NOT) bude splněná, jestli se hodnota levého fuzzy atributu (Fuzzy_Atribut) rovná fuzzy konstanty která je na pravé straně. • Jestli atribut není fuzzy a konstanta je rovná NULL, podmínka bude pochopena dle definice v DBMS. • Jestli je použito FEQ namísto IS, stupeň kompatibility mezi atributem a konstantou je porovnaný i když se atribut nerovná konstanty.

  38. Funkce CDEG() • Zobrazuje sloupec s plněním stupeň stavu dotazu na konkrétní atribut, který je vyjádřen v závorkách jako argument Pr: Ukázkapoužití CDEG()funkce:používátrapezoidní konstantu a vyhýba se UNKNOWN hodnotami select City, CDEG(Inhabitants) from Population where Country=‘Czech Republic’ and Inhabitants FGEQ $[200,350,650,800] .75 and Inhabitants is not unknown

  39. Having Uvažujme následující relaci: employee(epnum, name, age, depnum, job, salary, commission) group bypodmínkana štěpení relace do podmnožin. havingpodmínkase používá na výběr některých z předchozích podmnožin . Mějme dotaz:“Odděleníu kterých součetplatů zaměstnanců nadvyšuje 10000$.“ select depnum from employee group by depnum having sum (salary) > 10000$

  40. Having - 2 Tyhle možnosti jsou rozšířený tak, že supen náležení je přiděleny každé podmnožiny z daného rozdělení. select n|t <atributes 1’> from <relations> where <bool-cond> group by <atributes 1> having <fuzzy-cond-aggreg> Nový dotaz: Dej mi 10 nejlepších oddělení s ohledem na podmínku: průměrná hodnota platů úředníku je kolem 1000$. select 10 depnum from employee where job = ‘clerk’ group by depnum havingaround(avg(salary+comission), 1000)

  41. Implementace FSQL databáze

  42. Architektura a implementace 3 možnosti přístupu: • Klassicka data (crisp data) + fuzzy dotazy (obsahují fuzzy operátory) • Fuzzy data + klassicke dotazy . • Fuzzy data + Fuzzy dotazy

  43. Prototyp FRBD Tady popíšeme jeden z prototypu Fuzzy Relační DB. Tento FSQL server byl implementován pomoci existující DBMS. Toto řešení má 3 důsledky : • Pomalejší než nativní implementace • Snadná implementace • Dostáváme všechny výhody stávající DBMS(bezpečnost, a td)

  44. Prototyp FRBD Jako DBMS byla vybrána ORACLE, Kvůli flexibilitě, snadné šiřitelnosti. Procedurální jazyk PL/SQL umožňuje vytvoření , programových balíčku s funkce a procedury. Jistě může být vybrána jiná DBMS. Existuje implementace i na PostgreSQL.

  45. Architektura FRBD V základě obsahuje 3 části. • Datová model: Tradiční data (standartni databáze) a FMB (Fuzzy meta-knowledge base) • FSQL server. • FSQL client.

  46. Data Může být rozdělena do dvou kategorie. • Tradiční databáze - informace o relaci + speciální formát Pro uložení fuzzy atributy. Fuzzy atributy mají 3 různé typy. TYP 1 • Normální hodnoty (crisp values) , ale mají ještě definované lingvistické lichoběžné proměně nad nimi, které umožňuji dělat dotazy víc flexibilní. Při vytvoření dotazů můžeme použít fuzzy konstanty(viz tabulka.)

  47. Tabulka konstant při dotazech

  48. Fuzzy atributy typ 2 TYP 2 obecně hodnoty , plus moznostni rozdělení (posibility distribution), nad setříděnou doménu (ordered underlying domain). Při dotazovaní můžeme ukládat a použít kterékoli fuzzy konstantu(viz tabulka)

  49. Fuzzy atributy typ 3 TYP 3 Lingvisticke promene. Nad nimi mužeme definovat podobnost ( pomoci FEQ), ale samozřejme nemužeme použit žadnou konstantu s tabulky. Priklad: Vaha . Marek ma vetsi vahu než Karel o koeficient 0.9=> Muzeme pouzit operator FEQ.

  50. FMB Fuzzy meta-knowledge base. Obsahuje data o FRDB v relačním formátu, A meta-data o jednotlyvych fuzzy atributech( typy 1,2,3).

More Related