====== Akční pravidlo ====== \\ ===== Úvod ===== Cílem akčních pravidel je navrhovat akce, které mohou být zajímavé z pohledu majitele dat. Východiskem je fakt, že z analyzovaných dat lze zjistit jaké jsou důsledky změny hodnot některých atributů. Dále uvedený [[lm_guha_te_ac_pravidlo#Příklad|příklad]] vychází z toho, že v datech [[https://lispminer.vse.cz/guhadi/doku.php?id=lm_guha_di_hotel_prehled_skupin|Hotel]] jsou k dispozici údaje o hostech - cizincích a o tom, jak hodnotili personál hotelu, viz následující obrázek. {{ :akcni_pravidla_cizinec_personal.png?500 |}} Vidíme mimo jiné, že jsou k dispozici údaje pro 208 cizinců, kteří hodnotili personál čtyřmi hvězdičkami a údaje pro 190 cizinců, kteří hodnotili personál pěti hvězdičkami. Má tedy smysl se ptát, jak se na základě dostupných dat změní hodnoty ostatních atributů. Následující [[lm_guha_te_ac_pravidlo#Příklad|příklad]] ukazuje, že tato změna hodnocení personálu výrazně ovlivní celkové hodnocení pobytu. Tento fakt je vyjádřen akčním pravidlem. Do definice akčního pravidla tedy potřebujeme zahrnout změnu hodnot atributu. K tomu slouží pojem [[lm_guha_te_ac_pravidlo#Změny booleovských atributů|změna boolovského atributu]]. Ta je potom využita při definici akčního pravidla. Dále postupujeme obvyklým způsobem, tedy definujeme [[lm_guha_te_ac_pravidlo#Akční pravidlo|akční pravidlo]], [[lm_guha_te_ac_pravidlo#Ac4ft-tabulka|Ac4ft-tabulku]], [[lm_guha_te_ac_pravidlo#Ac4ft-kvantifikátor|Ac4ft-kvantifikátor]] a nakonec definujeme, [[lm_guha_te_ac_pravidlo#Akční pravidlo je pravdivé v matici dat|kdy je akční pravidlo pravdivé v matici dat]]. Jsou k dispozici i [[lm_guha_te_ac_pravidlo#Podmíněné akční pravidlo|podmíněná akční pravidla]]. ===== Příklad ===== Příkladem akčního pravidla je výraz \\ **HCizinec(//ano//)** ∧ **DPersonal[//* * * *//→//* * * * *//]** ⇒0.15,31;1.0,177 **DHodnoceni(//spokojen//)**, \\ kterému odpovídá následující obrázek vytvořený z výstupu procedury Ac4ft-Miner. {{:akcni_pravidla_priklad.png|}} Platí: * Akční pravidlo P: \\ **HCizinec(//ano//)** ∧ **DPersonal[//* * * *//→//* * * * *//]** ⇒0.15,31;1.0,177 **DHodnoceni(//spokojen//)** \\ říká, že pokud se zajistí, aby cizinci hodnotili personál hotelu jako **DPersonal(//* * * * *//)** místo \\ **DPersonal(//* * * *//)**, tedy pět hvězdiček místo čtyř, tak data naznačují, že se výrazně změní celkové hodnocení. * Počáteční stav je dán pravidlem PInit: \\ **HCizinec(//ano//)** ∧ **DPersonal(//* * * *//)** ⇒0.15,31 **DHodnoceni(//spokojen//)**, \\ což znamená, že 15 procent cizinců kteří hodnotí personál čtyřmi hvězdičkami je s pobytem spokojeno a že takových hostů je 31. * Finální stav je dán pravidlem PFin: \\ **HCizinec(//ano//)** ∧ **DPersonal(//* * * *//)** ⇒1.0,190 **DHodnoceni(//spokojen//)**, \\ což znamená, že 100% procent cizinců kteří hodnotí personál pěti hvězdičkami je s pobytem spokojeno a že takových hostů je 190. ===== Změny booleovských atributů ===== Pro práci s akčními pravidly potřebujeme definovat změnu booleovského atributu a také počáteční a koncový stav změny booleovského atributu. Vycházíme z pojmu změna koeficientu. Potřebné definice jsou uvedeny dále. **Změna koeficientu** * //Změnou koeficientu// rozumíme výraz **A**[λ1→λ2] kde **A** je [[lm_guha_te_matice|atribut]] a λ1 a λ2 jsou [[lm_guha_te_zakl_bool|koeficienty]]. **Změna booleovského atributu** * Každá změna koeficientu je změnou booleovského atributu. * Jestliže τ a ω jsou změny booleovského atributu, pak ¬τ, τ ∧ ω a τ ∨ ω jsou změny booleovského atributu. **Počáteční stav změny booleovského atributu** * Počátečním stavem Init(**A**[λ1→λ2]) změny koeficientu **A**[λ1→λ2] rozumíme základní booleovský atribut **A**(λ1). * Jestliže τ a ω jsou změny booleovského atributu, pak: * počátečním stavem Init(¬τ) změny ¬τ je ¬Init(τ) * počátečním stavem Init(τ ∧ ω) změny τ ∧ ω je Init(τ) ∧ Init(ω) * počátečním stavem Init(τ ∨ ω) změny τ ∨ ω je Init(τ) ∨ Init(ω). **Finální stav změny booleovského atributu** * Finálním stavem Fin(**A**[λ1→λ2]) změny koeficientu **A**[λ1→λ2] rozumíme základní booleovský atribut **A**(λ2). * Jestliže τ a ω jsou změny booleovského atributu, pak: * finálním stavem Fin(¬τ) změny ¬τ je ¬Fin(τ) * finálním stavem Fin(τ ∧ ω) změny τ ∧ ω je Fin(τ) ∧ Fin(ω) * finálním stavem Fin(τ ∨ ω) změny τ ∨ ω je Fin(τ) ∨ Fin(ω). ===== Akční pravidlo ===== Akčním pravidlem rozumíme výraz φ ∧ Φ ≈ ψ ∧ Ψ kde * φ a ψ jsou [[lm_//guha//_te_bool|booleovské atributy]], φ je stabilní antecedent a ψ je stabilní sukcedent * Φ a Ψ jsou [[lm_guha_te_ac_pravidlo#Změny booleovských atributů|změny booleovských atributů]], Φ je změna antecedentu a Ψ je změna sukcedentu * φ, ψ, Φ a Ψ nemají společné atributy * ≈ je [[lm_guha_te_ac_pravidlo#Ac4ft-kvantifikátor|Ac4ft-kvantifikátor]]. Ke každému akčnímu pravidlu φ ∧ Φ ≈ ψ ∧ Ψ je definován počáteční stav Init(φ ∧ Φ ≈ ψ ∧ Ψ) a koncový stav Fin(φ ∧ Φ ≈ ψ ∧ Ψ). Platí * Počáteční stav Init(φ ∧ Φ ≈ ψ ∧ Ψ) je asociační pravidlo φ ∧ Init(Φ) ≈Init ψ ∧ Init(Ψ) kde ≈Init je 4ft-kvantifikátor odvozený z Ac4ft-kvantifikátoru ≈. * Počáteční stav píšeme také ve tvaru φInitInit ψInit kde φInit = φ ∧ Init(Φ) a ψInit = ψ ∧ Init(Ψ). * Koncový stav Fin(φ ∧ Φ ≈ ψ ∧ Ψ) je asociační pravidlo φ ∧ Fin(Φ) ≈Fin ψ ∧ Fin(Ψ) kde ≈Fin je 4ft-kvantifikátor odvozený z Ac4ft-kvantifikátoru ≈. * Koncový stav píšeme také ve tvaru φFinFin ψFin kde φFin = φ ∧ Fin(Φ) a ψFin = ψ ∧ Fin(Ψ). Pro akční pravidlo **HCizinec(//ano//) ∧ DPersonal[//* * * *//→//* * * * *//]** ⇒0.15,31;1.0,177 **DHodnoceni(//spokojen//)** uvedené v [[lm_guha_te_ac_pravidlo#Příklad|příkladu]] platí: * Počátečním stavem akčního pravidla je asociační pravidlo \\ **HCizinec(//ano//)** ∧ **DPersonal(//* * * *//)** ⇒0.15,31 **DHodnoceni(//spokojen//)** * Finálním stavem akčního pravidla je asociační pravidlo \\ H**Cizinec(//ano//)** ∧ **DPersonal(//* * * * *//)** ⇒1.0,177 **DHodnoceni(//spokojen//)** ===== Ac4ft-tabulka ===== Ac4ft-tabulkou Ac4ft(φ ∧ Φ ≈ ψ ∧ Ψ, M) pro akční pravidlo φ ∧ Φ ≈ ψ ∧ Ψ a matici dat M se rozumí dvojice \\ ‹//T//Init, //T//Fin› [[lm_guha_te_pravidlo#4ft-tabulka|4ft-tabulek]] //T//Init = 4ft(φInitInit,M) = ‹//a//I,//b//I,//c//I,//d//I› a //T//Fin = 4ft(φFinFin,M) = ‹//a//F,//b//F,//c//F,//d//F›, viz též následující obrázek. {{ :ac4ft_tabulka.png?600 |}} ===== Ac4ft-kvantifikátor ===== Symbol "≈" v akčním pravidle φ ∧ Φ ≈ ψ ∧ Ψ se nazývá Ac4ft-kvantifikátor. Definuje podmínku týkající se čtveřic celých nezáporných čísel //T//Init = 4ft(φInitInit,M) = ‹//a//I,//b//I,//c//I,//d//I› a //T//Fin = 4ft(φFinFin,M) = ‹//a//F,//b//F,//c//F,//d//F›. Podobně jako pro [[lm_guha_te_pravidlo#4ft-kvantifikátor|4ft-kvantifikátor]], chápeme Ac4ft-kvantifikátor ≈ jako {0,1}-hodnotovou funkci ≈( //T//Init, //T//Fin) týkající se čtveřic celých nezáporných čísel //T//Init, //T//Fin. Platí * ≈(//T//Init, //T//Fin) = 1 pokud je podmínka daná Ac4ft-kvantifikátorem splněna pro čtveřice //T//Init a //T//Fin * ≈(//T//Init, //T//Fin) = 1 pokud podmínka daná Ac4ft-kvantifikátorem pro čtveřice //T//Init a //T//Fin splněna není. Ac4ft-kvantifikátory implementované v GUHA proceduře Ac4ft-Miner jsou popsány [[lm_guha_te_ac4ft_proc|zde]]. ===== Akční pravidlo je pravdivé v matici dat ===== Pravdivost akčního pravidla φ ∧ Φ ≈ ψ ∧ Ψ v matici dat M je definována pomocí Ac4ft-tabulky \\ Ac4ft(φ ∧ Φ ≈ ψ ∧ Ψ, M) = ‹//T//Init, //T//Fin› takto: * φ ∧ Φ ≈ ψ ∧ Ψ je pravdivé v matici dat M pokud ≈(//T//Init, //T//Fin) = 1, formálně zapisujeme \\ Val(φ ∧ Φ ≈ ψ ∧ Ψ, M) = 1 * φ ∧ Φ ≈ ψ ∧ Ψ je nepravdivé v matici dat M pokud ≈(//T//Init, //T//Fin) = 0, formálně zapisujeme \\ Val(φ ∧ Φ ≈ ψ ∧ Ψ, M) = 0. ===== Podmíněné akční pravidlo ===== Podmíněné akční pravidlo je výraz φ ∧ Φ ≈ ψ ∧ Ψ /χ. Jedná se o akční pravidlo φ ∧ Φ ≈ ψ ∧ Ψ vyhodnocované na podmatici dat definované booleovským atributem χ. Platí tedy, že podmíněné akční pravidlo \\ φ ∧ Φ ≈ ψ ∧ Ψ /χ je pravdivé v matici dat M pokud je akční pravidlo φ ∧ Φ ≈ ψ ∧ Ψ pravdivé v matici dat M/χ. To platí, pokud ≈(//T//Init, //T//Fin) = 1 kde //T//Init = 4ft(φInitInit,M/χ) a //T//Fin = 4ft(φFinFin,M/χ).