Laboratorium 01

Transkrypt

Laboratorium 01
Wstęp do sieci bayesowskich - Lab 01
Piersa Jarosław
2010-02-23
1
Zasady zaliczenia
• Zaliczenie laboratorium na podstawie zadań programistycznych — implementowanie omawianych algorytmów,
• Programy będą punktowane od 1 do 6p maksymalnie za zadanie (w ocenach dopuszczane są oceny ułamkowe),
• Tabela ocen
punkty
ocena
3
dst
4
db
5
bdb
6
bdb+
• Powyżej 5 nieobecności na zajęciach wymagane jest zadanie za co najmniej 3 punkty,
• Programy będą sprawdzane z autorem siędzącym obok, sprawdzanie zaoczne będzie dopuszczane tylko w
wyjątkowych sytuacjach,
• Programy mogą być prezentowane na komputerach w laboratorium, w gabinecie — w wypadku oddawania
programów w trakcie konsultacji, lub na laptopie. Proszę o przygotowanie niezbędnych do działania
bibliotek, środowisk programistycznych, jre, dotnet framework itp.
• Elementem zaliczenia może być pytanie dotyczące jego implementacji, algorytmu lub dopisanie dodatkowej
funkcjonalności.
2
Powtórzenie
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) =
3
P(A|B)P(B)
P(A)
Zadania
Zadanie 1 Dana niech będzie sieć bayesowska rys. 1. Tabele prawdopodobieństw warunkowych wyglądają
następująco:
P(A = t)
0.4
P(A = f )
0.6
1
Rysunek 1: Sieć do zadania 1.
Rysunek 2: Sieć do zadania 2.
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)
Zadanie 2 Dana niech będzie sieć bayesowska rys. 2. Tabele prawdopodobieństw warunkowych wyglądają
następująco:
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 )
2
• 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 3 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, goat, ... — nagroda pocieszenia). 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 4 Rozważmy uogólnione zadanie 3 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 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 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 programisyczne Napisz program pozwalający wygenerować, wczytać lub wylosować sieć bayesowską, a następnie generujący instancje wyników dla tej sieci (patrz zadanie 4). Program może mieć charakter
„piaskownicy”, to jest możliwość ustawienia struktury sieci i tabel prawdopodobieństw warunkowych. Ewentualnie można wczytywać pliki z siecią wygenerowaną w innych pakietach (Netica). Alternatywnie można wybrać
specjalizteczne zastosowanie sieci naciskiem położonym na wizualizację i interakcję z użytkownikiem. W tym
wypadku sieć ma ustaloną strukturę — nadal jednak wskazana jest możliwość edycji CPT. Przykładowe zastosowania: sieć kontrolująca robota w dynamicznym środowisku, klasyfikator spamu, wirtualny informatyk
diagnozujący awarię komputera itp.
W obu wypadkach mile widziane są dodatkowe funkcjonalności: zapis i odczyt wyników do pliku tekstowego,
edytor sieci i tabel prawdopodobieństw, możliwość podglądu sieci, połączenie z przyszłymi zadaniami.
Język programowania — dowolny, ale rozwiązania korzystające z gotowych bibliotek dla sieci bayesowskich
nie będą akceptowane.
Punktacja — 1 punkt.
Termin oddawania — 20.04.2010.
3