Wstęp do sieci bayesowskich
Transkrypt
Wstęp do sieci bayesowskich
Wstęp do sieci bayesowskich - Zadania Piersa Jarosław 2009-03-03 Wzór na prawdopodobieństwo warunkowe: Ważne wzory P(A|B) = P(A ∧ B) P(B) Wzór na prawdopodobieństwo całowite: X P(A) = P(A|B = v)P(B = v) v Wzór Bayesa: P(B|A) = P(A|B)P(B) P(A) Zadanie 1 Dana niech będzie sieć bayesowska. Tabele prawdopodobieństw warunkowych wyglądają następująco: P(A = t) 0.4 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 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) 1 Zadanie 2 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. Uczestnik nie wie co kryją bramki. Prowadzący (wie gdzie jest nagroda) odsłania uczestnikowi jedną z bramek, w której nie ma nagrody, a której uczestnik nie wybrał — zawsze jest taka bramka, czasem jest tylko jedna. 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 sieć bayesowską symulującą rozgrywkę (wskazówka: wystarczą trzy węzły). Zadanie 3 Rozważmy uogólnione zadanie 2 w którym mamy n bramek — w jednej jest nagroda w pozostałych nic. 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) w tym jedna uczestnika. Uczestnik otrzymuje możliwość zamiany swojej bramki na jedną z nieodsłoniętych. Czy powinien zamienić, zachować bramkę czy nie ma to wpływu na wygraną. Skonstruuj sieci bayesowskie rozwiązujące ten problem dla kilku różnych par (n, m) np: (3, 1), (4, 1), (4, 2) , (5, 1), (5, 2), (5, 3), (10, 8), (100, 98)... Dla dużych n pomyśl o bardziej kompaktowym rozwiązaniu (tabele prawdopodobieństw dla n = 100 będą miały 10000 pozycji!). Zadanie 4 Na pewną chorobę (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 (2 węzły). Zadanie 5 Do sieci z zadania 3 dodaj węzeł(y) obliczający nagrodę w wypadkach gry ze zmianą bramki i gry bez zmiany (można odobno). Następnie wygeneruj instancje danych na podstawie sieci (Cases ->Simulate Cases) dla obu przypadków. W arkuszu kalkulacyjnym, pakiecie statystycznym lub ręcznie 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 Błądzenie losowe. Niech dane będzie 5 punktów p1 ..p5 . Określamy ciąg zmiennych losowych Xn . X0 zaczyna w losowym z punktów (losowanym z rozkładu jednostajnego). Jeżeli Xn jest w punkcie pj to Xn+1 z prawdopodobieństwem 0.5 przejdzie do pj+1 i z prawdopodobieństwem 0.5 przejdzie do pj−1 dla j = 2, 3, 4. Jeżeli jest to stan brzegowy to z prawdopodobieństwem 0.5 Xn+1 pozostanie w tym samym punkcie i z pradopodobieństwem 0.5 przejdzie do jedynego sąsiada. Skonstruuj sieć bayesowską symulującą ten proces dla pierwszych 10 kroków. Zadanie programisyczne Napisz program pozwalający wygenerować, wczytać lub wylosować sieć bayesowską, a następnie generujący instancje wyników dla tej sieci (patrz zadanie 5). Powinna być możliwość ustawienia struktury sieci i tabel prawdopodobieństw warunkowych przynajmniej na poziomie kodu programu. Ewentualnie można wczytywać pliki z siecią wygenerowaną w innych pakietach (Netica). Mile widziane są dodatkowe opcje np: zapis wyników do pliku tekstowego, edytor sieci i tabel prawdopodobieństw, możliwość podglądu, praktyczne zastosowanie z wizualizacją (np. sieć sterująca robotem w kolejnych iteracjach, na podstawie wygenerowanych wyników robot podejmuje określone działanie). Język programowania — dowolny, ale rozwiązania korzystające z gotowych bibliotek dla sieci bayesowskich nie będą akceptowane. Punktacja — 1 punkt. Termin oddawania — 31.03.2009. 2