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

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

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

Podobné prezentace


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

1 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ý” NameGPAAbsences Becky Springston Jeff Williams Leroy Jefferson Mike Salisbury Kevin Costner Shelly Whitman Barry Allen Billy Kidd John Conner4.07.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ý? NameGPAAbsences Mike Salisbury Becky Springston John Conner Billy Kidd Barry Allen Kevin Costner Shelly Whitman Leroy Jefferson Jeff Williams

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 V případě diskrétního ohodnocení {0, 1} tyto operátory odpovídají k nim příslušným operátorům a(p) AND b(q)min(p, q) a(p) OR b(q)max(p, q) NOT a(p)1 - p

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 6.Pravděpodobnostní rozdělení ve číselné doméně (Age={0.4/23,1.0/24,0.8/25}) 7.Reálné číslo z [0,1] vyjadřující míru splňení (Quality=0.9) 8.Unknown 9.Undefined 10.NULL

18 Unknown, Undefined,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é 1.Pro uspořadatelné množiny: Př: Můžeme nadefinovat $Short, $Normal, $Tall, $VeryTall na adtributu Height

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

29 Fuzzy porovnávací operátory PossibilityNecessity FEQNFEQ 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

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

33 Funkce CDEG CDEG( ) Pro daný atribut zobrazí stupeň splňení podmínky v dotazu

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 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í 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 Michal10 Jan25 Pavel27 Tomáš36 Michal10 Jan25 Pavel27 DataVýsledek dotazu

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

44 Fuzzy data & klasické dotazy(2) SELECT * FROM Osoby WHERE Vek = ‘mladý’ Fuzzy atribut Michalmladý0.80 Janmladý0.55 Pavelmladý0.53 Tomášmladý0.40 DataVýsledek dotazu Michalmladý0.80 Janmladý0.55 Pavelmladý0.53 Tomášmladý0.40

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

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

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

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

49 FRDB Architektura FSQL Klient FSQL Server Databáze FMB Standardní Databáze 1. FSQL dotaz3. SQL dotaz4. SQL dotaz5. Výsledek 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( OBJ# NUMBER NOT NULL, COL# NUMBER NOT NULL, 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 Actualiza_FSQL_OPT (Nerrors,TIME_inicial); RETURN Nerrors; 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


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

Podobné prezentace


Reklamy Google