Iterativní algoritmy pro Gaussovské grafické modely Implementace do SW Mathematica Vladislav Chýna
Základní pojmy Výpočet varianční matice Interativní algoritmy Implementace do SW Mathematica
Grafické modely Užitečný nástroj statistické analýzy Základní pojmy Užitečný nástroj statistické analýzy Umožňuje zkoumat struktury podmíněných nezávislostí v souborech proměnných Idea: Reprezentovat data pomocí grafu Vrcholy = proměnné Chybějící hrana = proměnné jsou podmíněně nezávislé Omezení příspěvku: Gaussovské grafické modely Hlavní problém: Popsat rozdělení s danými marginály
Definice z teorie grafů Základní pojmy Kompletní graf: Graf nebo podgraf je kompletní, pokud je každý jeho vrchol spojen se všemi ostatními vrcholy. Klika: Klika je množina vrcholů, která indukuje úplný graf, ale která po přidání dalšího vrcholu indukuje graf, který již není kompletní. Matice sousednosti: Matice sousednosti AG = (aij) grafu G = (V,E) je čtvercová matice definovaná: aij = 1 pokud {vi , vj} E. aij = 0 jinak.
Definice z teorie grafů 2 Základní pojmy Komplementární graf: Graf CG je komplementární k grafu G = (V,E), pokud má množinu vrcholů V a množinu hran CE, pro kterou platí {vi , vj} CE pokud vi vj a {vi , vj} E. . Antiklika: Antiklika je klika komplementárního grafu.
Příklad Základní pojmy G CG 4 3 4 3 1 2 1 2
Základní pojmy Výpočet varianční matice Interativní algoritmy Implementace do SW Mathematica
Výpočet varianční matice Bayesovský přístup Věrohodnostní rovnice pro Gaussovské grafické modely X1,X2,...,XN náhodný výběr z mnohorozměrného normálního rozdělení N(0,K), kde D = K-1 pokud vrcholy i a j nejsou spojené v grafu G pokud podmnožina a vrcholů v G tvoří kliku. (S znamená výběrovou varianční matici.).
Jak řešit věrohodnostní rovnice Výpočet varianční matice Přímý výpočet Iterativní algoritmus I – Divergence I-divergence dvou pozitivně definitních matic A a B je definována:
Základní pojmy Výpočet varianční matice Interativní algoritmy Implementace do SW Mathematica
I. algoritmus Probíhá v cyklu po antiklikách ac Iterativní algoritmus Probíhá v cyklu po antiklikách ac Stop pravidlo testuje, zda mimodiagonální prvky K-1ac,ac jsou nulové. K0 = S a = ac1,...,acm, b = V \ {a}, n = n´ mod m
II. algoritmus Probíhá v cyklu po klikách c K0 = I Iterativní algoritmus Probíhá v cyklu po klikách c Stop pravidlo testuje, zda Kc,c = Sc,c K0 = I a = ac1,...,acm, b = V \ {a}, n = n´ mod m
Základní pojmy Výpočet varianční matice Interativní algoritmy Implementace do SW Mathematica
Vstupy Matice sousednosti G Implementace do SW Mathematica Vstup: S Výpočet klik funkce novygraf
novygraf Implementace do SW Mathematica Idea Pokud vynecháme jednu hranu z kliky, dostaneme 2 kliky, v jejichž zápisu chybí vždy jeden vrchol z vynechané hrany Problém Graf má 2 nebo více klik Kliky nemají prázdný průnik {1,2,3} {2,3}, {1,3} {1,3,4} {1,3,4} {1,3,4} 4 3 4 3 1 2 1 2
Kód Implementace do SW Mathematica podmnozina[mnozina_, prvek_] := Module[{vp}, vp = Map[( Intersection[prvek, #]) &, mnozina]; MemberQ[vp, prvek]]; neobsazena[m1_, m2_] := Complement[m2, Select[m2, (submnozina[m1, #]) &]]; novygraf[graf_, hrana_] := Module[{klikys, klikybez, bez1, bez2, bezduplicit}, klikys = Select[graf, MemberQ[#, hrana[[1]]] && MemberQ[#, hrana[[2]]] &]; klikybez = Complement[graf, klikys]; bez1 = DeleteCases[klikys, edge[[1]], 2]; bez2 = DeleteCases[klikys, edge[[2]], 2]; bezduplicit = neobsazena[klikybez, Union[bez1, bez2]]; Union[klikybez, bezduplicit]]; clique = {Range[kk]}; vektorvynechhran = Select[Position[maticesousednosti, 0], (#[[1]] > #[[2]]) &]; Map[(clique = novygraf[clique, vektorvynechhran [[#]]]) &, Range[Length[vektorvynechhran]]];
Generování Kn Matice sousednosti G Implementace do SW Mathematica Vstup: S Matice sousednosti G novygraf Výpočet klik Generování Kn
Generování Kn Implementace do SW Mathematica
Kód a = clique[[Mod[iter, Length[clique]] + 1]]; iter = iter + 1; Implementace do SW Mathematica a = clique[[Mod[iter, Length[clique]] + 1]]; iter = iter + 1; b = Complement[Range[kk], a]; knova[[a, a]] = s[[a, a]]; knova[[a, b]] = s[[a, a]].Inverse[kold[[a, a]]]. kstara[[a, b]]; knova[[b, a]] = kstara[[b, a]].Inverse[ kstara[[a, a]]].s[[a, a]]; knova[[b, b]] = kstara[[b, b]] - kstara[[b, a]]. Inverse[kstara[[a,a]]]. (IdentityMatrix[Length[a]] - s[[a,a]]. Inverse[kstara[[a, a]]]).s[[a, b]]; kstara = knova;
Stop pravidlo Matice sousednosti G Test Kc,c = Sc,c Implementace do SW Mathematica Vstup: S Matice sousednosti G novygraf Výpočet klik ne Generování Kn Test Kc,c = Sc,c ano Tisk výsledků
Kód While[ stop < Length[Flatten[clique]],………………… Implementace do SW Mathematica While[ stop < Length[Flatten[clique]],………………… Map[(If[Max[Abs[Flatten[knova[[clique[[#]], clique[[#]]]] - s[[clique[[#]], clique[[#]]]]]]] < 0.000001 , stop = stop + 1, stop = 0]) &, Range[Length[clique]]];]; Needs["DiscreteMath`Combinatorica`"] ShowLabeledGraph[g = MakeGraph[Range[kk], (MemberQ[Position[mon + Transpose[mon], 1], {#1, #2}]) &]];
Příklad Implementace do SW Mathematica 4 1 3 2 5 5 iterací 0,07 sekund
Otázky ?!? ?