630 likes | 882 Views
Fuzzy SQL. Petr Jen ček David Šinágl Július Štuller. 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. P říklad 1 Dobří studenti.
E N D
Fuzzy SQL Petr Jenček David Šinágl Július Štuller
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
Příklad 1Dobří 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ý”?
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
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ý”
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ý?
Příklad 2Podobné 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?
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í.
Příklad 3Pá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?
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
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”
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)
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
GEFRED Generalized model of Fuzzy Relational Databases • Rozšíření klasického RDM
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})
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
Zobecněná fuzzy doménaGeneralized 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:
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
Primární klíč R je GFR, Definujme primární klíč K: který splňuje
Manipulace s daty • Zobecněná fuzzy relační algebra • sjednocení, průnik, rozdíl, kartézský součin, projekce, spojení, selekce • operátory
Sjednocení l=1..m, m.. Kardinalita sjednocení
Průnik l=1..m, m.. Kardinalita sjednocení
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
Fuzzy SQL • Lingvistické proměnné • Fuzzy porovnávací operátory • Míra splnění • Funkce CDEG • Znak % • Fuzzy konstanty • Podmínka IS
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
Lingvistické proměnné • Pro neuspořadatelné množiny Je definována míra podobnosti mezi každou dvojicí atributů
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
Funkce CDEG • CDEG(<atribut>) Pro daný atribut zobrazí stupeň splňení podmínky v dotazu
Znak % • Podobný význam jako * v SQL • Ve výsledku bude navíc použita funkce CDEG na každý fuzzy atribut
Fuzzy konstanty • UNKNOWN • UNDEFINED • NULL • $[a,b,c,d] • $label • [n,m] • #n
Podmínka IS <Fuzzy_Atribut> IS [NOT] (UNKNOWN | UNDEFINED | NULL )
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.
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).
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ů
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
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
Fuzzy data & klasické dotazy(1) • SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu
Fuzzy data & klasické dotazy(2) • SELECT * FROM Osoby WHERE Vek = ‘mladý’ Data Výsledek dotazu
Fuzzy data & fuzzy dotazy • SELECT * FROM Osoby WHERE Vek = hodně $mladý Pozn.: hodně je operátor, který definuje mez Data Výsledek dotazu Pozn.: Normální atributy x fuzzy atributy
Příklad Data FA..fuzzy atribut
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.
FRDB Architektura • Data: • standardní databáze • FMB (Fuzzy Meta-knowledge Base) • FSQL Server • FSQL Klient
FRDB Architektura FSQL Klient 1. FSQL dotaz 3. SQL dotaz 4. SQL dotaz 5. Výsledek Databáze Standardní Databáze FMB FSQL Server 2. Informace z FMB
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)