+ All Categories
Home > Documents > FUZZY SQL

FUZZY SQL

Date post: 04-Feb-2016
Category:
Upload: alair
View: 74 times
Download: 0 times
Share this document with a friend
Description:
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 - PowerPoint PPT Presentation
74
FUZZY SQL Radomir Tarabič, Egor Ivkin
Transcript
Page 1: FUZZY   SQL

FUZZY SQL

Radomir Tarabič,

Egor Ivkin

Page 2: FUZZY   SQL

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

Page 3: FUZZY   SQL

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)

Page 4: FUZZY   SQL

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

Page 5: FUZZY   SQL

Proč je fuzzy logika důležitá? -2

Význam fuzzy logiky lze vnímat ve dvou rovinách.

První rovinou je potřeba uchopit a pracovat s nepřesnými či mlhavými daty.

Druhou rovinou je celkový přístup k popisu reálného světa.

Při používání přesných popisů totiž dochází k idealizování skutečnosti a tedy odklonu od reality.

Page 6: FUZZY   SQL

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

Page 7: FUZZY   SQL

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”

Page 8: FUZZY   SQL

Příklad

Tabulka “Projects”

Project Budget(1000$) Duration Staff

p01 55 108 29

p02 48 115 33

p03 73 102 10

p04 81 87 40

p05 78 97 16

p06 57 90 25

p07 91 125 41

p08 90 88 27

p09 65 117 37

p10 93 93 45

Page 9: FUZZY   SQL

Příklad - 2 Chceme najít projekty s vysokým rozpočtem které 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

Project Budget(1000$) Duration

p04 81 87

p08 90 88

Page 10: FUZZY   SQL

Výsledek• Výsledek splnuje požadavky, ale existuji projekty které jsou

velice blízko požadavkům a nejsou ve výsledku.• Zkusíme podmínku rozšířit:

select Project, Budget, Duration from Projects where Budget>75 and Duration<100

Project Budget(1000$) Duration

p04 81 87

p05 78 97

p08 90 88

p10 93 93

Page 11: FUZZY   SQL

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

Page 12: FUZZY   SQL

Výsledek s Fuzzy SQL

Definujme fuzzy množinu “vysoký” pro sloupec Budget

Definujme fuzzy množinu “krátký” pro sloupec Duration

Page 13: FUZZY   SQL

Výsledek s Fuzzy SQL - 2

V každém grafu je zřejmě kolik která hodnota náleží do fuzzy množiny

Zkusíme vytvořit obrazec který nám výpočte kolik náleží dvojice (Budget, Duration) do požadavku

Uděláme to tak, že vypočítáme aritmetický průměr

Page 14: FUZZY   SQL

Výsledek s Fuzzy SQL - 3

S použitím avg :

Project Budget(1000$) Duration CIX

p08 90 88 0,964

p10 93 93 0,755

p04 81 87 0,606

p07 91 125 0,486

p06 57 90 0,439

p05 48 115 0,073

p01 55 108 0,000

p02 48 115 0,000

p09 65 117 0,000

p03 73 102 0,000

Page 15: FUZZY   SQL

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í

Page 16: FUZZY   SQL

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?

Page 17: FUZZY   SQL

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

Page 18: FUZZY   SQL

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

Page 19: FUZZY   SQL

Zavedení fuzzy množin Každému prvku je přiřazen stupeň příslušnosti, který

vyjadřuje míru členství prvku ve fuzzy množině.

Stupeň příslušnosti nabývá hodnot z intervalu <0,1>.

Čím vyšší (nižší) je stupeň příslušnosti, tím více

(méně) platí, že prvek náleží do fuzzy množiny.

Jinými slovy vyjadřuje míru relevantnosti prvku v dané množině.

Hodnota 0 vyjadřuje stav, kdy prvek do množiny vůbec nepatří a hodnota 1 stav, kdy prvek do množiny zcela patří

Page 20: FUZZY   SQL

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.

Příjem (Kč) Hodnota Příjem (Kč) Hodnota

24 000 0,000 35 000 0,500

26 000 0,021 36 000 0,519

29 000 0,122 37 000 0,572

32 000 0,352 38 000 0,648

33000 0,428 40 000 0,812

34 000 0,481 46 000 1,000

Page 21: FUZZY   SQL

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.

Věk Hodnota Věk Hodnota

24 0,000 35 1,000

26 0,024 36 0,955

29 0,191 37 0,832

32 0,661 38 0,661

33 0,835 40 0,316

34 0,955 46 0,000

Page 22: FUZZY   SQL

Principy

Fuzzy relace Rf je podmnožina kartézského

součinu domén D1,…,Dn, kde jedno Di je DU — interval <0,1>

Hodnota libovolné 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.

Page 23: FUZZY   SQL

Fuzzy modelování

Fuzzy relace se získá pomocí fuzzy podmí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)

Page 24: FUZZY   SQL

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)

Page 25: FUZZY   SQL

Transformace - 2

Je navrženo několik základních funkci 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 ≤ δ

Page 26: FUZZY   SQL

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)

Page 27: FUZZY   SQL

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 velmi representuje následujícím způsobem:

velmi fuzzycon (x) = (µfuzzycon(x)) 2

A negace: negace fuzzycon (x) = 1-µfuzzycon(x)

Page 28: FUZZY   SQL

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

Page 29: FUZZY   SQL

Fuzzy modelování - závěr

Př.: Vyberme si člověka velmi vysokého a současně s

věkem kolem 40 let.

select JMENO from LIDI where (VEK=okolo-40)    and (VYSKA=velmi vysoký)

Fuzzy podmínka bude vypadat následovně:

min ((µvysoký(výška))2, µokolo-40(věk))

Page 30: FUZZY   SQL

příkaz SELECT Obvykle příkaz SQL zapisujeme: select <attributes> from <relations> where

<condition>

• S fuzzy, SELECT příkaz zůstává v podstatě stejný, kromě:

• složený fuzzy podmínky se můžu objevit na místo Boolean

• musíme specifikovat regulacioni parametr nová formulace: select n|t <attributes> from <relations>

where <fuzzy_condition>

Page 31: FUZZY   SQL

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

from EMPLOYEE where (AGE >= 25 and AGE <= 45)    and (INCOME >= 35, 000)

Fuzzy SQL: select 0.75 NAME, AGE, INCOME

from EMPLOYEE where (AGE = middle)    and (INCOME >= high)

Page 32: FUZZY   SQL

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

Page 33: FUZZY   SQL

Fuzzy komparátory

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

Komparátor pro Možnost Komparátor pro Nutnost Význam

FEQ nebo F = NFEQ nebo NF = Fuzzy Rovnaky

FDIF, F! nebo F = <> NFDIF, NF! NF = nebo <> Fuzzy Různé

FGT nebo F> NFGT NF> Fuzzy Větší než

FGEQ nebo F> = NFGEQ nebo NF> = Fuzzy Větší nebo se rovná

FLT nebo F < NFLT nebo NF < Fuzzy Menší než

FLEQ nebo F <= NFLEQ nebo NF <= Fuzzy Menší nebo roven

MGT nebo F>> NMGT nebo NF>> Mnohem větší než

MLT nebo F << NMLT nebo NF << Mnohem menší než

Page 34: FUZZY   SQL

Lingvistické proměnné

Jestli je možno provést fuzzy úpravy na atributu, potom mu můžeme přiradit lingvistickou proměnu

Existují dvě možnosti:I. Proměnné pro atributy na uspořadatelných množin:

každém atributu je přirazeni pravděpodobnostní trapezoidní rozdělení - $Short, $Tall, $Very_Tall, $Very_Intelligent

II. Proměnné pro atributy na neuspořadatelných množin: pro každou dvojici atributů je definovaná relace podobnosti, která náleži do intervalu <0,1>

Page 35: FUZZY   SQL

Množinové operace

Interpretace základních množinových operaci nad 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)))

Page 36: FUZZY   SQL

Základní Fuzzy Konstanty

FSQL definuje syntaxi pro některé fuzzy konstanty. Nekteré jsou podrobně uvedeny v následující tabulce:

Fuzzy Konstanty Význam

UNKNOWN Neznámá hodnota atributu, ale je použitelný

UNDEFINED Atribut není použitelný ani nemá smysl

NULL Naprostá neznalost: Nevíme nic o tom

$ [a, b, c, d] Fuzzy lichoběžník (<= b <= c <= d)

$ label Jazyková Nálepka

[n, m] Interval "Mezi n a m" (= b = n a c = d = m)

# n Fuzzy hodnota: "Přibližně n"

Page 37: FUZZY   SQL

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.

Page 38: FUZZY   SQL

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ázka použ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

Page 39: FUZZY   SQL

Having

Uvažujme následující relaci: employee(epnum, name, age, depnum, job, salary,

commission)

group by podmínka na štěpení relace do podmnožin.having podmínka se používá na výběr některých z

předchozích podmnožin .

Mějme dotaz:“ Oddělení u kterých součet platů zaměstnanců nadvyšuje 10000$.“

select depnum from employee group by depnum having sum (salary) > 10000$

Page 40: FUZZY   SQL

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 having around(avg(salary+comission), 1000)

Page 41: FUZZY   SQL

Implementace FSQL databáze

Page 42: FUZZY   SQL

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

Page 43: FUZZY   SQL

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)

Page 44: FUZZY   SQL

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.

Page 45: FUZZY   SQL

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.

Page 46: FUZZY   SQL

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

Page 47: FUZZY   SQL

Tabulka konstant při dotazech

Page 48: FUZZY   SQL

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)

Page 49: FUZZY   SQL

Fuzzy atributy typ 3

TYP 3Lingvisticke 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.

Page 50: FUZZY   SQL

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

Page 51: FUZZY   SQL

Typy funkce

Oracle verze FSQL Server obsahuje 3 typy funkce • Překladové funkce (FSQL2SQL), po analýze dotazů,

převádí ho do SQL dotazů nebo vypíše chybu

• Zobrazovací funkce - převádí fuzzy atributy s interního formátu do přehledně formy.

• Fuzzy poravnovaci funkce -poravnava fuzzy hodnoty, a počítá stupeň kompatibility (CDEG())

Page 52: FUZZY   SQL

FSQL client

Slouží jako interface mezi uživatelem a FSQL serverem. Uživatel žádá dotaz, pak program postará o tom aby uživatel dostal výsledek.

Page 53: FUZZY   SQL

Architektura, Schéma

Page 54: FUZZY   SQL

Architektura, Schéma

1) FSQL client posílá FSQL dotaz do serverů. 2) FSQL server provede analýzu dotazů, a pokud on

je korektní, vytvoří příslušný SQL dotaz, pomoci Fuzzy Meta-knowledge base.

3) Klient přečte převedeny SQL dotaz. 4) Klient posílá dotaz do příslušné databáze. Při

vykonání dotazů se používají funkce FSQL serverů (comparatory a td.)

5) Klient dostává výsledek a zobrazí ho.

Page 55: FUZZY   SQL

Důsledky

Tato model není ideální pro konečný produkt Krok 3 a 4 je možné pro zvýšení efektivity vynechat . Ale je dobře že tady je oddělena funkce FSQL serverů (překládací funkce a td) a Database. Hlavní výhodou ale je to že můžeme použít velkou sadu fuzzy data.

Page 56: FUZZY   SQL

Jiné SQL-based fuzzy languages

SQlf

Format : SELECT [N|T|N,T] <select list> FROM <table list> WHERE <fuzzy condition>

Tato konstrukce vrátí jenom N řádku které splňuje podmínku víc než stupeň T.

Page 57: FUZZY   SQL

Rozdíl FSQL a SQLf

Jaké je vidět SQLf je mnohem víc omezena než

FSQL. 1) FSQL dovoluje použití thresholds(T hodnota) v libovolně jednoduché podmínce. 2) SQLf dovoluje porovnání jenom tradičných hodnot(crisp values) spolu s Lingustickymi proměny , nebo ”přibližně ekvivalence” mezi tradiční hodnoty. (Příklad: Jestli “well-paid”; je definovány fuzzy predikáte pak můžeme napsat “WHERE saláry = well-paid”).

Page 58: FUZZY   SQL

dmFSQL

DmFSQL je rozšíření FSQL, zaměřena na dobývání znalosti (data mining).

1) Clustering.2) Klasifikace.

3) hledání Globální fuzzy závislosti (Fuzzy Globál Dependencies FGD).

Page 59: FUZZY   SQL

Byznys aplikace fuzzy database

Jednou z výhod Fuzzy Database je to že zachováme všechny výhody Relační Database,

ale rozšiřujeme ji na novou funkcionalitu, jako možnost hledat nepřesná data pomoci lingustickych promenych, fuzzy poravnani a td.

Page 60: FUZZY   SQL

Jiné příklady

Možnost použití FSQL není omezena jenom na nějaké rozšíření byznes aplikace. Existuji oblasti kde Fuzzy database jsou taky velmi užitečné. Například jak jsme viděli Data Mining (Dobývání znalosti).

Obecně při dobývání znalosti používáme hodně různých metod (uměla intelligence, statistika a td). Tak že přidáním FSQL přidáme další metodu klassifikace a klasterizace dát.

Page 61: FUZZY   SQL

Clusterizace

Dotaz: SELECT table.*, CDEG(*) FROM table WHERE A1 FEQ #C1 THOLD τ AND A2 FEQ #C2 THOLD τ AND … AND An FEQ #Cn THOLD τ;

V tomto dotazů začínáme centrem (C1..i) pro každý atribut(A1..i) Pro specifický cluster C. (centry - jsou atributy které popisujou cluster) Pak dostaneme objekty patřící C s minimálním stupněm prinadleznosti t.

Page 62: FUZZY   SQL

Konkrétní příklad s převodem do SQL

Internet Obchod Počítačů :

POCITAC(model_pocitacu, jmeno_vyrobce, model_processoru, model_videokarty, model_monitoru, operacni_pamet, hard_disk, nazev_OS, cena )

VYROBCE(jmeno_vyrobce,zeme) OS(nazev_os,licence) PROCESSOR (model_processoru,vyrobce,frekvence) VIDEOKARTA (model_videokarty,vyrobce,pamet,chip) MONITOR (model_monitoru,vyrobce, diagonala)

Page 63: FUZZY   SQL

Pokračování, Cizí klíče pocitac: foreign key (jmeno_vyrobce) references

VYROBCE(jmeno_vyrobce) pocitac: foreign key (model_processoru) references

PROCESSOR(model_processoru) pocitac: foreign key (model_videokarty) references

VIDEOKARTA(model_videokarty) pocitac: foreign key (model_monitoru) references

MONITOR(model_monitoru) pocitac: foreign key (nazev_os) references OS(nazev_os) processor: foreign key (vyrobce) references

VYROBCE(jmeno_vyrobce) videokrata: foreign key (vyrobce) references

VYROBCE(jmeno_vyrobce) monitor: foreign key (vyrobce) references

VYROBCE(jmeno_vyrobce)

Page 64: FUZZY   SQL

Definice

Definice: 1) definujeme operátor podobnosti nad

Výrobce.jméno_výrobce a Počítač.model_počítačů který reprezentují to že některé počítače jsou podobný jako počítače od jiného výrobce.

2) taky potřebujeme definovat pár fuzzy predikátu Položka tabulky, Fuzzy hodnota Výrobce.jméno_výrobce : norm_důležitý,vysoké_důležitý Monitor.diagonála: malá,střední, velká počítač.cena : levný, střední, dráhy Processor.frekvence : pomalý,střední,rychlý

Page 65: FUZZY   SQL

Pokračování, Vytvoření pohledu

CREATE VIEW MODEL(model_pocitacu, jmeno_vyrobce, model_processoru, frekvence, model_monitoru, diagonala,cena) ASSELECT P.model_pocitacu, P.model_vyrobce,

Pr.model_processoru, Pr.frekvence, M.model_monitoru, M.diagonala, P.cena

FROM pocitac P, monitor M, Processor PrWHERE M.model_monitoru = P.model_monitoru AND

P.model_processoru = Pr.model_processoru

Page 66: FUZZY   SQL

Dotaz uživatele

dotaz : chci počítač od známého výrobce za střední cenu, s rychlým procesorem Intel,velkým monitorem, s charakteristiky podobnými jako u počítačů Apple.

Pomoci formulářů , nastaví hodnotu delta na 0.8 .

Page 67: FUZZY   SQL

Fuzzy SQL dotaz

Fuzzy sql dotaz:

SELECT (0.8) *FROM MODEL, VYROBCEWHERE

(MODEL.jmeno_vyrobce=VYROBCE.jmeno_vyrobce) AND(MODEL.jmeno_vyrobce |sim| `Apple`) AND(MODEL.cena=[stredni]) AND(MODEL.frekvence=[rychly]) AND(MODEL.model_processoru=`Intel`) AND(MODEL.diagonala=[velka])

Page 68: FUZZY   SQL

Po převodu do SQL

SELECT *FROM MODEL,VYROBCEWHERE

(MODEL.jmeno_vyrobce=VYROBCE.jmeno_vyrobce) AND(MODEL.jmeno_vyrobce IN(`Apple`,`Sony`,`Dell`)) AND(MODEL.cena BETWEEN 25300 AND 32000 ) AND(MODEL.model_processoru = `INTEL`) AND(MODEL.diagonala > 22)

Pozn:(Apple, Sony, Dell, jsou vyrobci jejichz podoba Apple je vetsi nez 0.8)

Page 69: FUZZY   SQL

Užitečné funkce pro fuzzy atributy FTYPE(fuzzy_atribute) – vrátí typ hodnoty fuzzy atributů,

například můžeme dozvědět kolik je hodnot je v fuzzy atributů Typu 2 (Galindo,1999) HEIGHT : SELECT COUNT(*) FROM PLAYERS WHERE FTYPE(HEIGHT)=6;

TO_CHAR(fuzzy_atribute) – funkce vrátí text který reprezentují kazdu hodnotu ve fuzzy atributů.

FDEGREE (atribute_list)- funkce vrátí fuzzy stupeň (fuzzy degree) příslušného atributů(z argumentů) SELECT * FROM PLAYERS

WHERE QUALITY FEQ $Good AND FDEGREE(QUALITY) > .5

Page 70: FUZZY   SQL

Pokračování

FDEGROW (table)– tato funkce vrátí fuzzy stupeň pro celý řádek tabulky. Argument je jméno tabulky.

MARGIN(fuzzy_atribute) -vrátí hraniční(margin) hodnotu pro fuzzy atribute.

Tato funkce může být používaná v výrazech s dot notace:

Fuzzy_atribute.MARGIN a td.

Page 71: FUZZY   SQL

Užitečné funkce pro fuzzy hodnoty

Card(fuzzy_value) - funkce vrátí “mohutnost” fuzzy hodnoty. Například , jestli potřebujeme vědět řádky s menší nepřesnosti v atributů než fuzzy konstanta, můžeme do SELECTu dodat takovou podmínku: CARD(QUALITY) < CARD(3+-2) , CARD(3+-2)=2 v tomto pripade.

NORM(fuzzy-value) – normalizuje fuzzy hodnotu.

CONC_DILAT(fuzzy_value,p) – tato funkce vrátí “koncentrovanou verze “ fuzzy hodnoty

Page 72: FUZZY   SQL

Pokračování

MORE_CONTRAST(fuzzy_value,p) – zesiluje kontrast fuzzy hodnoty. Definice:

FUZZIFICATION(fuzzy_value,p) – doplňková funkce k MORE_CONTRAST. Definice:

Page 73: FUZZY   SQL

Pokračování

UNION(fuzzy_values,s_norm) – funkce vrátí sjednocení fuzzy hodnot, spolu s s-normou definovanou ve druhém argumentů.

INTERSECTION(fuzzy_values,s_norm) – funkce vrátí průnik fuzzy hodnot s t-normou definovanou ve druhém argumentů.

Poznamky: Funkce CONC_DILAT,MORE_CONTRAST a FUZZIFICATION

jsou užitečné při implementace linqustickych pojmu Specially, Věry, Slightly, Moře ,Less.

Page 74: FUZZY   SQL

Reference

Galindo, J.; Urrutia, A.; Piattini, M. - ”Fuzzy Databases: Modeling, Design and Implementation” , Idea Group Publishing Hershey, USA, 2006.

Angelica Urrutia and Leopoldo Pavesi -“Extending the capabilities of database queries using fuzzy logic”, Catholic University of Maule (CHILE)

Galindo, J., Medina, J. M., Pons, O., and Cubero, J. C. 1998. -“A Server for Fuzzy SQL Queries ”.

Jay Nathan - “Fuzzy Lookups and Groupings Provide Powerful Data Cleansing Capabilities”


Recommended