Algorytmy stochastyczne — laboratorium 08
Transkrypt
Algorytmy stochastyczne — laboratorium 08
Algorytmy stochastyczne — laboratorium 08 Jarosław Piersa 2014-04-11 1 Ważniejsze wzory Wzór na prawdopodobieństwo warunkowe: P(A|B) = P(A ∧ B) P(B) Wzór na prawdopodobieństwo całowite: P(A) = X P(A|B = v)P(B = v) v Wzór Bayesa: P(B|A) = 2 P(A|B)P(B) P(A) Pakiety do sieci bayesowskich • Tetrad IV / V (GNU GPL, Java): 2014-03 http://www.phil.cmu.edu/projects/tetrad/ • SMILE (C++/Java) i GeNIe (freeware, własnościowy, Windows): 2013-11 http://genie.sis.pitt.edu/ • OpenBUGS (GNU GPL, Windows, Linux, wersja tekstowa): 2013-03 http://www.openbugs.net • BUGS (= Bayesian inference Using Gibbs Sampler) (freeware, Windows, UNIX, wersja okienkowa tylko na Windows): porzucony w 2008 http://www.mrc-bsu.cam.ac.uk/software/bugs/ • Netica (copyrighted, komercyjny, darmowa wersja z ograniczeniami, Windows): 2014? https://norsys.com/netica.html • Hugin Expert (copyrighted, komercyjny): 2014? http://www.hugin.com • Twój własny napisany w trakcie zajęć :) 3 Zadania Zadanie 1 Dana niech będzie sieć bayesowska. Tabele prawdopodobieństw warunkowych wyglądają następująco: A B P(A = t) 0.4 C P(A = f ) 0.6 war A=t A=f P(B = t|war) 0.25 1.0 P(B = f |war) 0.75 0.0 war A=t A=f P(C = t|war) 0.75 0.5 P(C = f |war) 0.25 0.5 1 Skonstruuj tę sieć bayesowską. Oblicz prawdopodobieństwa: • P(B = t), P(B = f ) • P(C = t), P(C = f ) • P(A = t|C = t), P(A = f |C = t) • P(A = t|B = t), P(A = t|B = f ) • P(C = t|B = t) • P(B = t|C = t) Zadanie 2 Dana niech będzie sieć bayesowska o następujących tabelach prawdopodobieństw warunkowych: A B C P(A = t) 0.1 P(A = f ) 0.9 P(B = t) 0.3 P(B = f ) 0.7 war A = t, B = t A = t, B = f A = f, B = t A = f, B = f P(C = t|war) 1.0 0.5 0.75 0.25 P(C = f |war) 0.0 0.5 0.25 0.75 Oblicz prawdopodobieństwa: • P(B = t), P(B = f ) • P(C = t), P(C = f ) • P(C = t|A = t), P(C = t|A = f ) • P(C = t|B = t), P(C = t|B = f ) • P(A = t|C = t) • P(A = t|C = t, B = t) • P(B = t|C = t) • P(B = t|C = t, A = t) Zadanie 2* Zadanie 3 Dla zainteresowanych: oblicz prawdopodobieństwa z zadań 1 i 2 analitycznie (tzn. kartka + ołówek). Problem Monty Hall, „Idź na całość”, „Let’s make a deal”... • Uczestnik konkursu wybiera jedną z trzech bramek, za jedną z niech jest nagroda, za dwiema nie ma nic (jest zonk, w wersji angielskiej: koza (goat), nagroda pocieszenia). • Uczestnik nie wie co kryją bramki. • Prowadzący wie gdzie jest nagroda. Prowadzący odsłania uczestnikowi jedną z bramek, w której nie ma nagrody i której uczestnik nie wybrał — zawsze jest taka bramka, czasem jest tylko jedna. • Pozostają dwie bramki: uczestnika i nieodsłonięta, w którejś z nich jest nagroda. • Uczestnik otrzymuje możliwość zamiany „swojej bramki” na tę drugą nieodsłoniętą. • Czy największe prawdopodobieństwo wygranej jest gdy zamieni bramkę, gdy zachowa swoją bramkę, czy być może nie ma to wpływu na wygraną? Skonstruuj w Genie / Tetradzie sieć bayesowską symulującą rozgrywkę. Wskazówka: wystarczą trzy węzły: gdzie jest nagroda, którą bramkę wybiera uczestnik, którą bramkę odsłania prowadzący. 2 Zadanie 4 Rozważmy uogólnione zadanie 3. • bramek jest n ≥ 3, nagroda jest tylko w jednej, w n − 1 pozostałych są zonki • uczestnik wybiera jedną z bramek, a prowadzący odsłania mu m z pozostałych, w których nie ma nagrody (m = 1..n−2). • Pozostają przynajmniej dwie bramki (dokładniej n − m bramek) w tym jedna uczestnika, w którejś z nich jest nagroda. • Uczestnik otrzymuje możliwość zamiany swojej bramki na jedną z nieodsłoniętych, lub pozostania przy swojej. • Czy powinien zamienić, zachować bramkę czy nie ma to wpływu na wygraną? Skonstruuj siec(i) bayesowską(ie) rozwiązującą ten problem dla ogólnego przypadku; różnych par (n, m) np: (3, 1), (4, 1), (4, 2) , (5, 1), (5, 2), (5, 3), (10, 8), (100, 98)... Tabele prawdopodobieństw dla n = 100 będą miały 10000 pozycji! Pomyśl o bardziej kompaktowym rozwiązaniu. Wsk. rozważ sieć z węzłami: czy zgadł przy pierwszym wyborze? czy wygra jeśli zamieni bramkę? Czy wygra jeśli nie zamieni bramki? Zadanie 5 Do sieci z zadania 3 dodaj węzeł(y) opisujące: zmianę bramki, gry bez zmiany i wygranej (w obu wypadkach). Następnie wygeneruj instancje danych na podstawie sieci (Netica: Cases → Simulate Cases, Tedrad: Data, Genie: Learning → generate data file. W arkuszu kalkulacyjnym lub pakiecie statystycznym policz jaki jest odsetek wyników, w których uczestnik wygrał, wśród wszystkich wyników, w których grał tą samą taktyką. Czy zgadza się ze wskazaniami sieci? Wykonaj podobne symulacje dla sieci z innych zadań. Zadanie 6 Na pewną chorobę (XYZ — Iksodalna Igrekoskoza Zetocyny) choruje 2% populacji. Istnieje na nią test, który daje odpowiedź poprawną w 95 przypadkach na 100 (zarówno pozytywną jak i negatywną). U losowego badanego test wykazał wynik pozytywny. Czy faktycznie jest powód do niepokoju? Skonstruuj sieć bayesowską rozwiązującą ten problem. Wsk.: Czy pacjent jest faktycznie chory? Wynik testu? Zadanie programisyczne (zalążek) Napisz program pozwalający wygenerować, wczytać lub wylosować sieć bayesowską, a następnie generujący instancje wyników dla tej sieci (patrz zadanie 4). • np. charakter „piaskownicy” • można ustawić strukturę sieci • można ustawić tabele prawdopodobieństw warunkowych • można wprowadzić wiedzę • można wygenerować dane z sieci i zapisać je do pliku • w przyszłości będzie można dopisać wnioskowanie i uczenie sieci • inna możliwość — sieć ustalona, która modeluje wnioskowanie np. przy klasyfikacji spamu / diagnozowaniu medycznym etc. Przybliżony algorytm wnioskowania Ważone próbkowanie logiczne (weighted logic sampling) 1 punkt. Dane: sieć bayesowska, wiedza E (może być pusta), węzeł sieci X ∈ / E. Wynik: rozkład prawdopodobieństwa P(X = xi |E) 1. Powtarzaj dla j = 1..m razy: • Przypisz wagaj := 1; • Umieść w węzłach startowych (bez rodziców) losowe wartości zgdnie z prawdopodobieństwami apriori. Jeżeli w danym węźle Y jest wiedza, to wymuś w Y wiedzę bez losowania i przemnóż wagej przez prawdopodobieństwo, przyjmie ten stan. wagaj := wagaj ∗ P(Y = yi ) • Rekurencyjnie wylosuj wartości węzłów dla kolejnych pokoleń. Jeżeli w danym węźle Y jest wiedza to wymuś wartość wynikającą z wiedzy bez losowania i przemnóż wagej przez prawdopodobieńswo, że węzeł przyjmie stan wynikający z wiedzy pod warunkiem jego rodziców (ustaleni w poprzednich krokach). Można odczytać z tabeli prawdopodobieństw warunkowych. wagaj := wagaj ∗ P(Y = yi |Rodzice(Y )) • Zapamiętaj wyniki razem z wagą (aj1 , ..., ajn , wagaj ). 3 2. Dla danego węzła X, który nie zawiera wiedzy E prawdopodobieństwo, że X przyjmuje stan xi jest średnią ważoną przypadków, w których wartość węzła X została przyjęta jako xi z wagą w Pm j j=1 1ajk =xi · waga Pm P(X = xi |E) = j j=1 waga jeżeli ak opisuje stan węzła X. UWAGA: jeżeli wiedza jest sprzeczna to mianownik będzie zerowy. Literatura [1] R. Neapolitan, Learning bayesian networks, [2] P. Judea, Probabilistic reasoning and intelligent systems. Networks of plausible inference, Morgan Kaufman Inc. 1998. [3] GeNIe, http://genie.sis.pitt.edu/, Decision Systems Laboratory of the University of Pittsburgh, dostęp 2014-04. [4] Tetrad IV, http://www.phil.cmu.edu/projects/tetrad/, Carnegie Mellon University, dostęp 2014-04. 4