Prezentace se nahrává, počkejte prosím

Prezentace se nahrává, počkejte prosím

Petr Jenček David Šinágl Július Štuller

Podobné prezentace


Prezentace na téma: "Petr Jenček David Šinágl Július Štuller"— Transkript prezentace:

1 Petr Jenček David Šinágl Július Štuller
Fuzzy SQL Petr Jenček David Šinágl Július Štuller

2 Obsah Motivační příklady, řešení pomocí standardního SQL Formalizace
GEFRED, jazyk fuzzy SQL Operátory Funkce Architektura FRDB Vyřešení motivačních příkladů pomocí fuzzy SQL

3 Příklad 1 Dobří studenti
Zadání: Z tabulky studentů, která obsahuje aritmetický průměr známek za uplynulý šk. rok, docházku za uplynulý šk. rok a další informace o studentech, vybrat “dobré” studenty Analýza problému Co je “dobrý” student? Na čem závisí fakt, že je student “dobrý”?

4 Příklad 1 Řešení 1 “Dobrý” student má průměr aspoň 3.5 bodů
SELECT * FROM STUDENTS WHERE GPA >= 3.5 I “flákač”, který do školy skoro nechodí, může být “dobrý” student

5 Příklad 1 Řešení 2 “Dobrý” student má průměr aspoň 3.5 bodů a absenci méně než 10 dní SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) Výsledky nejsou setříděny podle toho, jak je student “dobrý” Name GPA Absences Becky Springston 4.0 3.0 Jeff Williams 3.5 9.75 Leroy Jefferson 3.75 4.5 Mike Salisbury 1.0 Kevin Costner Shelly Whitman Barry Allen 3.9 2.0 Billy Kidd John Conner 7.0

6 Příklad 1 Řešení 3 Setřídíme podle průměru a absencí (v tomto pořadí)
SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC ... Sem přijde dataset Proč by student, který má průměr jen o málo horší než 3,5, ale má velmi málo absencí neměl být dobrý? Name GPA Absences Mike Salisbury 4.0 1.0 Becky Springston 3.0 John Conner 7.0 Billy Kidd 9.75 Barry Allen 3.9 2.0 Kevin Costner 3.75 Shelly Whitman Leroy Jefferson 4.5 Jeff Williams 3.5

7 Příklad 2 Podobné barvy Zadání: Zákazník si vybírá barvu obkladového materiálu. Chce barvu “podobnou” jiné barvě, kterou zná (např. barva již zakoupené kuchyňské linky). Analýza problému: Jak definovat “podobnou” barvu?

8 Příklad 2 Ř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 SELECT * FROM ITEMS WHERE ABS(RED – red1) < 10 AND ABS(GREEN – green1) < 10 AND ABS(BLUE – blue1) < 10 Problém: Pokud se barva liší od barvy zadané uživatelem pouze v 1 složce, ale více než o 10, zákazník ji neuvidí.

9 Příklad 3 Párování nabídky a poptávky
Zadání: Pro realitní kancelář vytvořit skript, který bude párovat nabídku s “odpovídající” poptávkou. Nabídka i poptávka je charakterizována lokalitou, cenou a dalšími atributy. Analýza problému: Které dvojice nabídka/poptávka si ještě odpovídají a které už ne?

10 Příklad 3 Řešení Pro každý atribut zvolit jistou toleranci.
Pokud je rozdíl obou atributů v rámci této tolerance, nabídka a poptávka “si odpovídají”. SELECT o.*, d.* FROM OFFERS o, DEMANDS d WHERE ABS(o.PRICE, d.PRICE) <= price_tol AND DIST(o.LOCATION, d.LOCATION) <= location_tol … Problém: Vyhledávání párování s jinou celkovou tolerancí je obtížné Uživatel typicky řekne, že “tento atribut je hodně důležitý, ale na onom atributu mi zas tolik nezáleží” Obtížně se zohledňují individuální preference klienta

11 Co mají tyto problémy společné?
Hledají se prvky, které náleží do jisté množiny Tato množina NEMÁ přesně definovanou operaci příslušení V předchozích příkladech definována vágními termíny uvedenými v uvozovkách Dobrý Podobná Odpovídající Hodilo by se cosi jako “s pravděpodobností p prvek x náleží do množiny M”

12 Pravděpodobnostní rozdělení
Typicky trapézoidní, lineární, normalizované Uloženy ve Fuzzy Metaknowledge Base (FMB) 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)

13 Fuzzy logika a(p) AND b(q) min(p, q) a(p) OR b(q) max(p, q) NOT a(p)
V případě diskrétního ohodnocení {0, 1} tyto operátory odpovídají k nim příslušným operátorům

14 David Šinágl (2.část)

15 GEFRED Generalized model of Fuzzy Relational Databases
Rozšíření klasického RDM

16 Nepřesná data 1. Jednoduchá skalární hodnota (Size=Big, reprezentovaná pravděpodobnostním rozdělením 1/Big Číselná hodnota (Age=28, reprezentovaná PR 1/28) Množina vzájemně různých skalárních hodnot (Behavior={good,bad}, reprezentovaná {1/good,1/bad} Množina vzájemně různých číselných hodnot (Age={20,21}, reprezentovaná {1/20,1/21} Pravděpodobnostní rozdělení ve skalární doméně (Behavior={0.7/normal,0.6/bad})

17 Nepřesná data Pravděpodobnostní rozdělení ve číselné doméně (Age={0.4/23,1.0/24,0.8/25}) Reálné číslo z [0,1] vyjadřující míru splňení (Quality=0.9) Unknown Undefined NULL

18 Unknown, Undefin ed,NULL

19 Zobecněná fuzzy doména Generalized Fuzzy Domain
Definice: Buď U doména, P(U) množina všech pravděpodobnostních rozdělení pro U. Pak definujme Zobecněnou fuzzy doménu D:

20 Zobecněná fuzzy relace (Generalized Fuzzy Relation)
Zobecněná fuzzy relace R je definována: R=(H,B) H: Množina trojic (atribut,doména,[kompatibilita]) H={(A1:D1[,C1]),..., (An:Dn[,Cn])} B: Množina n-tic, každá n-tice je složena z trojic (atribut,hodnota[,stupeň]) B={(A1:di1 [,ci1]), ... , (An:din [,cin])} i=1..m m..počet n-tic

21 Primární klíč R je GFR, Definujme primární klíč K: který splňuje

22 Manipulace s daty Zobecněná fuzzy relační algebra
sjednocení, průnik, rozdíl, kartézský součin, projekce, spojení, selekce operátory

23 Sjednocení l=1..m, m.. Kardinalita sjednocení

24 Průnik l=1..m, m.. Kardinalita sjednocení

25 Operátory Porovnávací operátory jsou také předefinovány:
Například possibly equal: p,p’ U a jejich funkce příslušnosti jsou f(p) a f(p’) U je univerzum. posEQ(p,p’):=sup min (f(p)(d),f(p’)(d)) d U

26 Fuzzy SQL Lingvistické proměnné Fuzzy porovnávací operátory
Míra splnění Funkce CDEG Znak % Fuzzy konstanty Podmínka IS

27 Lingvistické proměnné
Pro fuzzy atributy před proměnnou je znak $ 2 typy lingvistické proměnné Pro uspořadatelné množiny: Př: Můžeme nadefinovat $Short, $Normal, $Tall, $VeryTall na adtributu Height

28 Lingvistické proměnné
Pro neuspořadatelné množiny Je definována míra podobnosti mezi každou dvojicí atributů

29 Fuzzy porovnávací operátory
Possibility Necessity FEQ NFEQ Fuzzy Equal than FGT FGEQ NFGT NFGEQ Fuzzy Greater Than Fuzzy Greater or Equal then FLT FLEQ NFLT NFLEQ Fuzzy Less Than Fuzzy Less or Equal than MGT MLT NMGT NMLT Much Greater Than Much Less Than

30 Fuzzy porovnávací operátory

31 Fuzzy porovnávací operátory

32 Míra splnění Fulfillment tresholds
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

33 Funkce CDEG CDEG(<atribut>)
Pro daný atribut zobrazí stupeň splňení podmínky v dotazu Select * fro neco where .. And or

34 Znak % Podobný význam jako * v SQL
Ve výsledku bude navíc použita funkce CDEG na každý fuzzy atribut

35 Fuzzy konstanty UNKNOWN UNDEFINED NULL $[a,b,c,d] $label [n,m] #n

36 Podmínka IS <Fuzzy_Atribut> IS [NOT] (UNKNOWN | UNDEFINED | NULL )

37 Július Štuller (3.část)

38 Lingvistické proměnné
Zavedl Zadech (1965) Příklad: Rychlost..lingvistická proměnná Pomalá, střední, rychlá..lingvistická hodnota Používá se 3-5 lingvistických hodnot, více jak 7 není člověk schopen rozlišit.

39 Fuzzy množiny Klasické množiny (známe) x Î A, x Ï A
Fuzzy množin (zobecnění klasické teorie množin). x Î A s mírou náležení 0.40 -pro reprezentaci lingvistických hodnot se používají fuzzy množiny. -obyčejně reprezentované jednoduchými funkcemi trojúhelníkové, lichoběžníkové (kvůli snadné práci s nimi).

40 Fuzzy logika – praktické použití
Pračka, zaostřování ve fotoaparátu (používají fuzzy regulátory – př. koštěte) Brzdný systém ABS v automobilech, automatická převodovka Fuzzy databázový systém pro prohledávání databáze biologických materiálů

41 Architektura - implementace
3 možné typy přístupu: Klasické (tzv. crisp) data & fuzzy dotazy (dotaz obsahuje fuzzy operátory) Fuzzy data & klasické dotazy (v databázi jsou uloženy fuzzy údaje) Fuzzy data & fuzzy dotazy Pozn.: subjektivní pohled vynecháme

42 Klasické data & fuzzy dotazy
SELECT Jmeno, Vek FROM Osoby WHERE Vek = $mladý Pozn.: vrstva nad daty, která interpretuje mladý, snaha příbližit se vyjadřování v běžném jazyce Data Výsledek dotazu Michal 10 Jan 25 Pavel 27 Tomáš 36 Michal 10 Jan 25 Pavel 27

43 Fuzzy data & klasické dotazy(1)
SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš starý 0.30 Michal mladý 0.80 Jan 0.55 Pavel 0.53

44 Fuzzy data & klasické dotazy(2)
SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40 Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40

45 Fuzzy data & fuzzy dotazy
SELECT * FROM Osoby WHERE Vek = hodně $mladý Pozn.: hodně je operátor, který definuje mez Data Výsledek dotazu Fuzzy atribut Michal mladý 0.80 Jan 0.55 Pavel 0.53 Tomáš 0.40 Michal mladý 0.80 Jan 0.55 Pozn.: Normální atributy x fuzzy atributy

46 Příklad 10 25 27 36 Data Věk Vlasy (FA) Věk2 (FA) Michal černé 0.40
mladý 0.80 Jan 25 blond 0.55 Pavel 27 0.50 0.53 Tomáš 36 růžové 0.10 starý 0.30 FA..fuzzy atribut

47 FRDB Architektura FRDB a FSQL Server implementovány pomocí existujícího DBMS. Důsledky: Pomalejší systém Snadná implementace Ponechány veškeré výhody stávajícího DBMS Jako příklad jsme vybrali ORACLE.

48 FRDB Architektura Data: FSQL Server FSQL Klient standardní databáze
FMB (Fuzzy Meta-knowledge Base) FSQL Server FSQL Klient

49 FRDB Architektura FSQL Klient Standardní FMB Databáze Databáze
1. FSQL dotaz 3. SQL dotaz 4. SQL dotaz 5. Výsledek Databáze Standardní Databáze FMB FSQL Server 2. Informace z FMB

50 Data: standardní databáze
relační data + speciální formát pro uložení fuzzy atributu. Typy fuzzy atributů: Typ 1: běžné hodnoty + některé lingvistické proměnné definované nad nimi (pomocí lichoběžníkových značek) => větší flexibilita, lze použít všechny konstanty z tabulky při formulaci dotazu (UNKNOWN, UNDEFINED, NULL, $[a,b,c,d], $label, [n,m], #n)

51 Data: standardní databáze
Typ 2: běžné hodnoty + možnostní rozdělení (possibility distribution) nad setříděnou doménou. => lze uložit a použít v dotazu všechny konstanty z tabulky. Typ 3: Nad příslušnými lingvistickými proměnnými lze definovat podobnost. např. barvy: světle fialová je podobná s koeficientem 0.88 fialové => Lze použít pouze operátor FEQ, nelze používat následující konstanty ($[a,b,c,d], [n,m], #n)

52 Fuzzy Meta-knowledge Base
Jsou zde uloženy meta-data o jednotlivých fuzzy atributech (podle typu atributu).

53 FSQL Server Naprogramován celý v PL/SQL (procedurální rozšíření SQL)
Překladové funkce (FSQL2SQL) Analýza dotazu, vypíše všechny chyby jsou-li jaké, jinak přeloží FSQL do standardního SQL. Výsledný SQL dotaz obsahuje reference na zobrazovací funkce a fuzzy porovnávací funkce. Zobrazovací funkce Slouží k zobrazení fuzzy atributů v přehledné formě uživateli. Fuzzy porovnávací funkce Porovnávání hodnot a stupeň kompatibility (CDEG funkce).

54 FSQL Klient Nezávislý program, který slouží jako rozhraní mezi uživatelem a FSQL Serverem. Uživatel pouze zadá dotaz a program se postará o to, aby dostal konečný výsledek.

55 FSQL – řešení příkladů (1)
SELECT * FROM STUDENTS WHERE (GPA >= 3.5) AND (ABSENCES < 10) ORDER BY GPA DESC, ABSENCES ASC SELECT * FROM STUDENTS WHERE (GPA FEG $’Dobrý prospěch’ AND ABSENCES FEG $’Dobrá absence’) THOLD 0.60

56 FSQL – řešení příkladů (1)
QCIX - Query Compatibility Index, míra toho, jak moc záznam patří do výsledné množiny.

57 FSQL – řešení příkladů (2)
SELECT * FROM ITEMS WHERE ABS(RED – red1) < 10 AND ABS(GREEN – green1) < 10 AND ABS(BLUE – blue1) < 10 SELECT *, CDEG(*) FROM ITEMS WHERE barva FEG barva1 THOLD 0.9 CDEG..QCIX míra toho, jak moc záznam nebo položka patří do výsledné množiny.

58 FSQL – řešení příkladů (3)
SELECT o.*, d.* FROM OFFERS o, DEMANDS d WHERE ABS(o.PRICE, d.PRICE) <= price_tol AND DIST(o.LOCATION, d.LOCATION) <= location_tol … SELECT *, CDEG(Location) FROM OFFERS o, DEMANDS d WHERE o.PRICE FGEG d.PRICE THOLD 0.85 AND o.LOCATION FEG d.LOCATION THOLD 0.70

59 FSQL – instalační skript
CREATE TABLE FUZZY_COL_LIST( OBJ# NUMBER NOT NULL, --ID tabulky (z USER_OBJECTS) COL# NUMBER NOT NULL, --ID sloupce (z USER_TAB_COLUMNS) F_TYPE NUMBER(1) NOT NULL, LEN NUMBER(2) NOT NULL, -- mezi 1 a 10 CREATE TABLE FUZZY_OBJECT_LIST( OBJ# NUMBER NOT NULL, COL# NUMBER NOT NULL, FUZZY_ID NUMBER(3) NOT NULL, --ID objektu v FUZZY_LABEL_DEF FUZZY_NAME VARCHAR2(30) NOT NULL, FUZZY_TYPE NUMBER(1) NOT NULL, CREATE TABLE FUZZY_LABEL_DEF( FUZZY_ID NUMBER(3) NOT NULL, ALFA NUMBER NOT NULL, BETA NUMBER NOT NULL, GAMMA NUMBER NOT NULL, DELTA NUMBER NOT NULL,

60 FSQL – instalační skript
CREATE TABLE FUZZY_NEARNESS_DEF( OBJ# NUMBER NOT NULL, COL# NUMBER NOT NULL, FUZZY_ID1 NUMBER(3) NOT NULL, -- FUZZY_OBJECT_LIST.FUZZY_ID%TYPE FUZZY_ID2 NUMBER(3) NOT NULL, -- FUZZY_OBJECT_LIST.FUZZY_ID%TYPE DEGREE NUMBER (3,2) NOT NULL, CREATE TABLE FUZZY_COMPATIBLE_COL( OBJ#1 NUMBER NOT NULL, COL#1 NUMBER NOT NULL, OBJ#2 NUMBER NOT NULL, COL#2 NUMBER NOT NULL,

61 FSQL – interní funkce FUNCTION FSQL2SQL (consulta IN LONG) RETURN INTEGER IS Nerrors INTEGER; TIME_inicial DATE; BEGIN ... Nerrors:=fsql_pkg.fsql_lexico(consulta); --lex. elementy Nerrors :=fsql_pkg.fsql_sintactico; --odpovídá dané gramatice IF Nerrors<>0 THEN Actualiza_FSQL_OPT (Nerrors,TIME_inicial); RETURN Nerrors; ELSE Nerrors :=FSQL_SEMANTIC.semantico; --má-li to smysl END IF; END FSQL2SQL; Pozn.: consulta..dotaz (id z FSQL_ALL_QUERIES)

62 Závěr Snaha přiblížit tvorbu SQL dotazu lidské řeči, našemu normálnímu myšlení. Fuzzy SQL je silný nástroj pro vyhledávání dat podle nepřesně zadaných kritérií. V příkladě implementován pomocí klasického SQL (PL/SQL). Fuzzy logika je dnes již běžně používána, je možné, že Fuzzy SQL začne časem být také běžně používaný jazyk.

63 Zdroje A Server for Fuzzy SQL Queries – Jose Galindo
Fuzzy koncepty v databázových systémech – Radim Nedbal 2002


Stáhnout ppt "Petr Jenček David Šinágl Július Štuller"

Podobné prezentace


Reklamy Google