740 likes | 1.14k Views
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
E N D
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 • 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
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)
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
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.
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
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”
Příklad • Tabulka “Projects”
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
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
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
Výsledek s Fuzzy SQL • Definujme fuzzy množinu “vysoký” pro sloupecBudget • Definujme fuzzy množinu “krátký” pro sloupec Duration
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
Výsledek s Fuzzy SQL - 3 • S použitím avg :
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í
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?
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
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
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ří
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.
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.
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.
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)
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)
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 ≤δ
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)
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)
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))
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))
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>
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)
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
Fuzzy komparátory • Kromě typických komparátory (=, >...), FSQL zahrnuje fuzzy komparátory v následující tabulce:
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>
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)))
Základní Fuzzy Konstanty • FSQL definuje syntaxi pro některé fuzzy konstanty. Nekteré jsou podrobně uvedeny v následující tabulce:
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.
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
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$
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)
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
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)
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.
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.
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.)
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)
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.
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).