Podoba algoritmu je uvedena na Obr. 9. Opakovaně se střídá generování (krok 1.4) a testování (krok1.3) nějaké implikace. Řídícími parametry jsou cílová třída Class, maximální délka předpokladu l max ,minimální četnost předpokladu n min , a minimální platnost (spolehlivost) <strong>pravidla</strong> P min .Algoritmus ESODInicializace1. vytvoř CAT - seznam kategorií A(v) uspořádaný sestupně dle četnosti n(A(v))2. vytvoř OPEN - seznam implikací A(v) ⇒ Class uspořádaný sestupně dle n(A(v))3. přiřaď do KB prázdné pravidlo ∅ ⇒ Class (w), kde w je relativní četnost třídy ClassHlavní cyklus1. dokud OPEN není prázdný seznam1.1. vezmi první implikaci ze seznamu OPEN (označ ji Ant ⇒ Class )1.2. spočítej platnost této implikace P(Class|Ant)1.3. pokud P(Class|Ant) ≥ P min ∨ P(Class|Ant) ≤ (1 - P min ) potom1.3.1. spočítej pomocí kombinační funkce ⊕ váhu w ⊕ (Ant) naskládanou z vah pravidelv bázi KB aplikovatelných na Ant1.3.2. pokud se platnost implikace P(Class|Ant) signifikantně liší (na základě χ 2 testu)od naskládané váhy w ⊕ (Ant) potom1.3.2.1. přidej do KB pravidlo Ant ⇒ Class (w), kde w ⊕ w ⊕ (Ant) = P(Class|Ant)1.4. je-li l(Ant) < l max , pak1.4.1. pro každou kategorii A(v) ze seznamu CAT takovou, že:• atribut A se nevyskytuje v Ant• A(v) je v CAT před všemi kategoriemi z Ant - tedy platí, že četnost n(A(v))je větší nebo rovna četnosti n(Ant)1.4.1.1. generuj novou kombinaci AntA = Ant ∧ A(v)1.4.1.2. je-li n(AntA) > n min přidej AntA do seznamu OPEN za poslední kombinaciComb takovou, že n(Comb) ≥ n(AntA)1.5. odstraň Ant ze seznamu OPENObr. 9 Algoritmus ESOD pro jednu tříduPro rozšíření algoritmu pro více tříd se nabízejí dvě možnosti: vytvářet <strong>pravidla</strong> k jednotlivým třídámsamostatně opakovaným průchodem trénovacími daty (tedy analogicky s vytvářením neuspořádanýchpravidel v algoritmu CN4), nebo vytvořit <strong>pravidla</strong> ke všem třídám současně (tady je analogies vytvořením rozhodovacího seznamu v algoritmu CN4). Byla zvolena druhá varianta, která vedek tomu, že k jednomu předpokladu Ant se vytvoří tolik pravidel, kolik je hodnot cílového atributu.Báze znalostí má tedy podobu „baterií pravidel“Ant ⇒ Class t (w t ),kde Class t =C(v t ), t=1,…,T.Uvedené rozšíření vede ke změnám v algoritmu z Obr. 9. Nejjednodušší změnou je to, že místo jednéimplikace Ant ⇒ Class budeme uvažovat T implikací Ant ⇒ Class t a místo jednoho <strong>pravidla</strong> Ant ⇒Class (w), budeme uvažovat T pravidel Ant ⇒ Class t (w t ),. Zásadnější změna souvisí se způsobemskládání vah. Použitý inferenční mechanismus interpretuje váhu 1 jako „jistě ano“, váhu 0 jako „jistě ne“a váhu 0.5 jako „nevím“. Váha „nevím“ přitom odpovídá situaci, kdy jsou všechny cíle v datechzastoupeny rovnoměrně, tedy kdy platnost je rovna hodnotě 1/T, kde T je počet tříd. Pro více než dvětřídy (resp. pro více než jednu třídu a její protipříklady) tedy musíme mezi sebou převádět váhy a12
platnosti tak, aby při práci s pravděpodobnostmi (χ 2 test) bylo pro „nevím“ použito 1/T, a při prácis vahami (operace ⊕) bylo pro „nevím“ použito 0.5 23 :váha = T 2 × platnostpro platnost ∈ [0, 1/T]váha =TT2∗(T-1) × platnost + (1 - 2∗(T-1)) pro platnost ∈ [1/T, 1]resp.platnost = 2 T × váha pro váhu ∈ [0, 0.5]platnost = 2∗(T-1)T× váha + (1 -2∗(T-1)T ) pro váhu ∈ [0.5, 1]Obr. 10 Převod mezi platností a váhouGraf na Obr. 10 ukazuje způsob převodu. Vytváření pravidel k více třídám tedy znamená následujícízměny v algoritmu pro tvorbu pravidel (Obr. 9):• váha prázdného vztahu je relativní četnost převedená na váhu (krok 3 inicializace),• do χ 2 testu vstupuje platnost implikace a naskládaná váha převedená na platnost (krok1.1.2 hlavního cyklu),• váha w t <strong>pravidla</strong> se spočítá ze vztahu w t ⊕ w t ⊕ (Ant) = P´(Class t |Ant), kde P´(Class t |Ant) jeplatnost převedená na váhu (krok 1.1.2.1 hlavního cyklu).Místo cílové kombinace Class uživatel zadává cílový atribut C.V modifikaci pro více tříd byl algoritmus implementován v systému KEX [Berka, 1993], [Berka,Ivánek, 1994], i v novém systému pro dobývání znalostí z databází nazvaném LISP-Miner.23 Pro T=2 se žádný převod provádět nemusí.13