5.8 Induktivní logické programování Zatím jsme se pohybovali ve světě, kde příklady i hypotézy byly popsány hodnotami atributů 1. Existuje ale ještě jiný, složitější popis a sice popis pomocí predikátové logiky prvního řádu. Jestliže příklady reprezentované pomocí hodnot atributů představují řádky nějaké tabulky, která má pevný počet sloupců (atributů), lze v jazyce predikátové logiky vyjádřit skutečnost, že příklady mohou být tvořeny proměnným počtem objektů, které vstupují do vzájemných relací různého typu. Je tedy tento formalizmus na místě v případě úloh, kde data jsou uložena ve vzájemně propojených tabulkách nebo kde hraje důležitou roli struktura příkladů. Jsou-li tedy např. data uložena ve struktuře dle Obr. 1, je reprezentace příkladů s využitím pouze atributů možná způsobem uvedeným v Obr. 2 (pokud zrušíme tabulku Disposition), nebo způsobem uvedeným v Obr. 3 (pokud sloučíme všechny údaje do jedné tabulky tak, jak to vyžaduje většina algoritmů pracujících v reprezentaci založené na hodnotách atributů). Account acc_id datum zůstatek Disposition acc_id client_id Person client_id Příjmení jméno Obr. 1 Struktura databáze Účet datum založení zůstatek počet osob první osoba druhá osoba třetí osoba. acc1_id 1.1.1999 10000 2 client1_id client2_id X....... Klient příjmení jméno pohlaví věk region client1_id Novák Jan muž 28 Praha client2_id Nováková Alice žena 24 Praha...... Obr. 2 Reprezentace pomocí hodnot atributů, více tabulek Účet datum založení zůstatek počet osob příjmení první osoby jméno první osoby pohlaví první osoby. acc1_id 1.1.1999 10000 2 Novák Jan muž....... Obr. 3 Reprezentace pomocí hodnot atributů, jedna tabulka 1 Někdy se pro tento formalizmus používá označení AVL attribute-value logic. V zásadě se jedná o reprezentaci ve výrokové logice. 1
Reprezentace stejných dat ve formalizmu logiky prvního řádu bude podstatně srozumitelnější: disposition(disp1_id, client1_id, acc1_id), disposition(disp1_id, client2_id, acc1_id), person(client1_id, novak, jan, muz, 28, Praha), person(client2_id, novakova, alice, zena, 24, Praha), account(acc1_id, 1.1.1999, 10000). Jestliže byla ve formalizmu pracujícím pouze s hodnotami atributů k dispozici pravidla 2 IF tvar_hlavy(kulatý) tvar_těla(kulatý) IF tvar_hlavy(hranatý) tvar_těla(hranatý) IF tvar_hlavy(šišatý) tvar_těla(šišatý) THEN přátelský(ano) THEN přátelský(ano) THEN přátelský(ano) lze je v jazyce predikátové logiky vyjádřit jedním (elegantnějším a srozumitelnějším) pravidlem IF tvar_hlavy=tvar_těla THEN přátelský(ano) Kromě popisu příkladů bývají k dispozici i některé dílčí znalosti z dané oblasti (v podobě pravidel). K učení v takto reprezentovaném světě je možno použít techniku, která je nazývána induktivní logické programování (inductive logic programming, ILP). V kontextu dobývání znalostí z databází je cílem tohoto typu učení na základě příkladů a dílčí doménové znalosti odvodit znalosti dokonalejší. Pro řešení takové úlohy se používá programovací jazyk PROLOG. 5.8.1 Základní pojmy Začněme nejprve neformální definicí základních pojmů tak, jak jsou uvedeny v [Mitchell, 1997]: Každá správně utvořená formule je tvořena konstantami (např. zikmund, 23), proměnnými (např. X, Y), predikátovými symboly 3 (např. otec jako ve formuli otec(karel_iv,zikmund)) a funkčními symboly 4 (např. věk ve formuli věk(zikmund)). Základním výrazovým prostředkem predikátové logiky jsou termy. Termy jsou buď jednoduché (konstanty nebo proměnné), nebo složené (vzniklé aplikací funkce na termy, tedy např. věk(x)). Literál 5 je predikát (nebo jeho negace) aplikovaný na množinu termů (např. muž(zikmund), nebo větší_než(věk(zikmund),23))) ). Pozitivní literál neobsahuje negaci (např. muž(zikmund) ), negativní literál obsahuje negaci (např. muž(eliška) ). Klauzule je disjunkce literálů L 1 L 2 L n 2 Uvedená pravidla jsou odvozena z odborníkům v oblasti strojového učení důvěrně známých dat MONK použitých k testování řady algoritmů [Thurn a kol., 1991] 3 Predikáty mohou nabývat pouze hodnot ano (True) nebo ne (False). 4 Funkce mohou nabývat hodnotu libovolné konstanty. 5 Literál tedy (stejně jako predikát) nabývá pouze hodnot ano (True) nebo ne (False). 2
Hornova klauzule je klauzule která obsahuje nejvýše jeden pozitivní literál, tedy např. H L 1 L n tuto klauzuli můžeme ekvivalentně zapsat jako implikaci L 1 L n H. Substituce je funkce, která proměnnou nahradí termem, např. substituce {x/3} znamená náhradu proměnné x konstantou 3. Pro danou substituci θ a term L bude zápis Lθ označovat výsledek substituce. Unifikace pro dva literály L 1 a L 2 je taková substituce, kde L 1 θ = L 2 θ. Úlohu induktivního logického programování je možno definovat takto [Lavrač, Džeroski, 1994]: Nechť je dána množina Hornových klauzulí B (background knoweldege, teorie), množina pozitivních příkladů EX + a množina negativních příkladů EX 6. Potom najdi hypotézu H takovou, že 1. ex EX + H B ex (z teorie a hypotézy lze dokázat všechny pozitivní příklady) 2. ex EX H B ex (z teorie a hypotézy nelze dokázat žádný negativní příklad) 3. H B (hypotéza H je konzistentní s teorií B). Přitom obvykle předpokládáme bezespornost příkladů ex EX B ex (příklady nejsou zatíženy šumem.) a to, že je důvod se učit ex EX + B ex (nějaký pozitivní příklad není pokryt teorií). Důležitým pojmem umožňujícím vyřešení této úlohy je pojem θ-zahrnutí (θ-subsumption). Klauzule c θ-zahrnuje klauzuli c, pokud existuje substituce θ taková, že cθ c, tedy, provedeme-li substituci θ pro klauzuli c, získáme podmnožinu literálů klauzule c. Příkladem takové substituce může být náhrada proměnné konstantou (klauzule muž(x) θ-zahrnuje klauzuli muž(zikmund) ) nebo přidání literálu do klauzule (klauzule vnuk(x,y) θ-zahrnuje klauzuli muž(x) vnuk(x,y) ). Pokud klauzule c θ- zahrnuje klauzuli c, potom klauzule c je logickým důsledkem klauzule c. θ-zahrnutí je reflexivní a tranzitivní relace. Lze tedy pomocí ní definovat uspořádání klauzulí. Přitom relaci θ-zahrnutí můžeme chápat jako relaci vyjadřující vztah generalizace resp. specializace mezi klauzulemi. Klauzule c je obecnější 7 než klauzule c, pokud c θ-zahrnuje c, ale neplatí, že c θ-zahrnuje c. 5.8.2 Systémy ILP To, že klauzule (hypotézy) lze uspořádat podle relace generalizace resp. specializace umožňuje použít postupy pro učení ve smyslu prohledávání prostoru hypotéz původně navržené pro formalizmus pracující pouze s hodnotami atributů. A skutečně. Řada dobře známých algoritmů z této oblasti má své protějšky v oblasti induktivního logického programování (Tab. 1). 6 Příklady jsou zadávány ve formě složených termů. 7 Tím pádem klauzule c je speciálnější než klauzule c 3
Typ algoritmu AVL ILP rozhodovací stromy C4.5 TILDE [Blockeel, De Raedt, 1998] klasifikační a regresní stromy CART SCART rozhodovací pravidla CN2 FOIL [Quinlan, 1990] PROGOL [Muggleton, 1995] asociační pravidla apriori Claudien [De Raedt, Dehaspe, 1997] Warmr [Dehaspe, 1998] nejbližší soused k-nn RIBL [Emde, Wettschereck, 1996] Tab. 1 Přehled systémů ILP Jako příklad algoritmu ILP podrobněji rozebereme Quinlanův algoritmus FOIL (First Order Inductive Learner). FOIL [Quinlan, 1990] rozšiřuje algoritmus pokrývání množin použitý v systému CN2 (a CN4) o schopnost učit se pravidla prvního řádu odpovídající Hornovým klauzulím. Při hledání nějakého pravidla postupuje FOIL metodou specializace tak, že postupně přidává literály do předpokladu. Cílem je nalézt pravidlo, které pokrývá pouze pozitivní příklady 8. Pokryté příklady se pak odstraní z trénovací množiny (Obr. 4). Vhodný literál L se volí na základě kritéria informačního zisku (information gain): FOIL_zisk(L, Ant) = n ++ (log 2 n +(Ant L) n(ant L) log 2 n +(Ant) n(ant) ), kde n + (Comb) je (jako obvykle) počet pozitivních příkladů pokrytých 9 pravidlem Comb C, n(comb) je počet všech příkladů pokrytých pravidlem Comb C a n ++ jr počet pozitivních příkladů pokrytých pravidlem před specializací, které jsou rovněž pokryty pravidlem po specializaci. Pro specializaci pravidla Comb C se vybere takový literál L, který bude maximalizovat uvedenou funkci. Algoritmus FOIL inicializace 1. nechť D + TR je množina pozitivních příkladů 2. nechť D - TR je množina negativních příkladů 3. nechť ListOfRules je prázdný seznam hlavní cyklus 1. dokud D + TR není prázdné 1.1. nechť předpoklad Ant pravidla Ant C je prázdný 1.2. nechť {Ant} - (množina negativních příkladů pokrytých pravidlem) je D - TR 1.3. dokud {Ant} - není prázdné 1.3.1. najdi pomocí funkce FOIL_zisk nejvhodnější literál L a přiřaď Ant:= Ant L 1.3.2. do {Ant} - přiřaď negativní příklady pokryté pravidlem po specializaci 1.4. do ListOfRules přidej pravidlo Ant C 1.5. z D + TR odstraň příklady pokryté pravidlem Ant C Obr. 4 Algoritmus FOIL 8 Novější varianta algoritmu umí pracovat i se šumem. 9 Počet příkladů pokrytých pravidlem se počítá jako počet vazeb (substitucí), které umožní nahradit proměnné v předpokladu pravidla konstantami. 4
vnuk(zikmund,jan_lucemburský) muž(zikmund) otec(karel_iv,zikmund) otec(karel_iv,václav_iv) otec(jan_lucemburský,karel_iv) Obr. 5 Trénovací data pro FOIL Činnost algoritmu si ozřejmíme na příkladě trénovacích dat uvedených na Obr. 5 10. Naším cílem bude naučit se koncept vnuk. V prvním kroku algoritmus zvažuje pravidlo vnuk(x,y). Pro toto pravidlo můžeme provést 16 různých substitucí (náhrad proměnných X a Y konstantami jan_lucembursky, karel_iv, václav_iv, zikmund), z nich ale jen jedna bude pokrývat pozitivní příklad vnuk(zikmund,jan_lucemburský). Pro specializaci tohoto pravidla uvažuje FOIL následující literály: včetně jejich negací rovná_se(x,y) 11, muž(x), muž(y), otec(x,y), otec(y,x), otec(x,z), otec(z,x), otec(y,z), otec(z,y) rovná_se(x,y), muž(x), muž(y), otec(x,y), otec(y,x), otec(x,z), otec(z,x), otec(y,z), otec(z,y). Řekněme, že výsledkem specializace (krok 1.4 algoritmu) bude pravidlo otec(z,x) vnuk(x,y). Tomuto pravidlo odpovídá opět jedna pozitivní substituce {X/zikmund, Y/jan_lucemburský, Z/karel_IV}. V dalším kroku algoritmu se kromě výše uvedených literálů zvažují ještě literály rovná_se(z,y), rovná_se(y,z), muž(z), otec(z,w), otec(w,z), rovná_se(z,y), rovná_se(y,z), muž(z), otec(z,w), otec(w,z). Z použitelných literálů algoritmus vybere literál otec(y,z), takže vznikne pravidlo otec(z,x) otec(y,z) vnuk(x,y). Činnost algoritmu končí nalezením pravidla otec(z,x) otec(y,z) muž(x) vnuk(x,y), které pokrývá pouze pozitivní příklady v trénovacích datech. Výhody reprezentace (a učení) ve formalizmu predikátové logiky spočívají v tom, že je možno se naučit složitější koncepty vyjadřující (obecné) relace mezi objekty. Místo pravidla 10 Přiklad byl převzat a upraven z [Mitchell, 1997]. Predikát P(X,Y) budeme číst X je v relaci P vůči Y. 11 Tento literál je vestavěn do algoritmu jako doplnění k literálům vyskytujícím se v teorie a v příkladech. 5
otec(z,x) otec(y,z) muž(x) vnuk(x,y). bychom ve formalizmu založeném na hodnotách atributů odvodili pravidlo otec 3 (karel_iv) otec 2 (jan_lucemburský) muž 3 (ano) vnuk 1 (zikmund). Trénovací příklad z Obr. 5 by totiž měl v reprezentaci využívající atributy podobu jmeno 1 (jan), vnuk 1 (zikmund), jmeno 2 (karel), otec 2 (jan), jmeno 3 (zikmund), muž 3 (zikmund), otec 3 (karel) Nalezené znalosti mají tedy srozumitelnější a kompaktnější podobu. K dalším výhodám algoritmů ILP patří: možnost řešit úlohy v oblastech vyžadujících reprezentaci více relací sem patří jak úlohy s více vzájemně propojenými jednoduchými tabulkami (viz analýza dat o klientech banky zmíněná v kapitole o metodologii CRISP), tak analýza strukturálních nebo prostorových dat (příkladem může být úloha klasifikace chemických sloučenin na karcinogenní a neškodné), možnost využít doménových znalostí (v podobě předem známých pravidel). Induktivní logické programování je tedy velice silný nástroj pro reálné úlohy dobývání znalostí. Přes uvedené nesporné přednosti nejsou algoritmy ILP v komerčních systémech pro dobývání znalostí z databází příliš využívány (výjimku tvoří systém Kepler), a zůstávají záležitostí spíše výzkumnou. Tato skutečnost je dána nejspíše relativní novostí těchto algoritmů. Literatrura: [Blockeel, De Raedt, 1998] Blockeel, H. - De Raedt,L.: Top-down induction of first-order logical decisin trees. Artificial Intelligence,1998 [Dehaspe, L, 1998] Dehaspe,L.: Frequent Pattern Discovery in First-Order Logic. PhD thesis, Department of Computer Science, Katholieke Universiteit Leuven, 1998. [De Raedt, Dehaspe, 1997] De Raedt,L. Dehaspe, L.: Clausal Discovery. Machine Learning, 26, 1997, 99-146. [Emde, Wettschereck, 1996] Emde,W. - Wettschereck,D.: Relational instance based learning. In Proc: 13 th Int. Conf. on Machine Learning, Morgan Kaufmann, 1996, 122-130. [Lavrač, Džeroski, 1994] Lavrač,N. - Džeroski,S.: Inductive logic programming. Techniques and applications. Ellis Horwood, 1994. [Mitchell, 1997] Mitchell,T.: Machine learning. McGraw-Hill. 1997. ISBN 0-07-042807-7 [Muggleton, 1992] Muggleton,S.: Inductive logic programming. Volume APIC-38, Academic Press, 1992. [Muggleton, 1995] Muggleton,S.: Inverse entailment and Progol. New Generation Computing, Special issue on Inductive Logic Programming, 13(3-4):245-286, 1995. [Quinlan, 1990] Quinlan,J.R. Learning logical definitions from relations. Machine Learning, 5, 1990, 239-266. [Thurn a kol. 1991] Thurn,S.B. a kol: The Monk's problems. A Performance Comparision of Different Learning Algorithms, Carnegie Mellon University 1991, 154p. 6