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