FUZZY SQL

Post on 04-Feb-2016

74 views 0 download

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

transcript

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

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”

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

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

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

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 sloupec Budget

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

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

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

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

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ří

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

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

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.

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)

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ž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 ≤ δ

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

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>

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)

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:

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ž

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>

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

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"

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

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$

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)

Implementace FSQL databáze

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

Tabulka konstant při dotazech

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

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

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

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.

Architektura, Schéma

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.

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.

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.

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

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

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.

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.

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.

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)

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)

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ý

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

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 .

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

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)

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

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.

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

Pokračování

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

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

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.

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”