Laboratorium 02

Transkrypt

Laboratorium 02
Wstęp do sieci bayesowskich — Lab 03
Piersa Jarosław
2010-03-11
Zadanie 1 Plik umbrella.dne.
Z pewnym prawdopodobieństwem dziś będzie padał deszcz. Prognoza pogody zazwyczaj poprawnie przewiduje ulewę, ale może się dowolnie źle pomylić (patrz system Lorenza). Na podstawie prognozy pogody (bo
faktycznej pogody znać nie może) pan Iksiński rano podejmuje decyzję czy zabrać ze sobą parasol. Oczywiście
najlepiej jest gdy nie pada i parasol został w domu — Pan Iksiński ocenia taką wytuację wysoko +100. Jeżeli
pada to dobrze jest mieć parasol przy sobie +80. Jeżeli nie pada, a Pan Iksiński zabrał parasol to musi go nosić
ze sobą cały dzień, co nie jest wygodne +10. Jeżeli pada, a parasol został w domu to Pan Iksiński przemoknie
0.
Skonstruuj (lub przeanalizuj gotową) sieć bayesowską z wykorzystaniem węzła decyzyjnego (decision node,
action node) do podjęcia decyzji czy zabrać parasol i węzła wypłaty (utility node) do liczenia „zysku” jaką
przyniesie decyzja.
Pan Igerkowski jest zapalonym podróżnikiem i ma inne priorytety. Oczywiście lubi gdy nie pada i nie nosi
parasolki (+100), ale perspektywa zmoknięcia nie przeraża go (+20 jeżeli zmoknie) aż tak bardzo jak dodatkowy
balast (+0 jeżeli nosi parasol i nie pada). Jeżeli pada i ma parasol ocenia sytuację na +40. Jak się zmieniły
oczekiwane wartości decyzji?
Zadanie 2
Węzły:
Skonstruuj sieć wspomagającą decyzje lekarza (rys. 1).
• Zimno — czy panuje zimowa pogoda (ma wpływ na osłabienie organizmu)
• Papierosy — czy pacjent pali papierosy (co może być alternatywną przyczyną kaszlu)
• Grypa — czy pacjent ma grypę
• Angina — czy pacjent ma anginę
• Kaszel — czy pacjent ma kaszel
• CzyLeczyć — Węzeł decyzyjny - czy należy pojąć leczenie?
• Wypłata — węzeł utylitarny określający trafność decyzji
Wybierz „intuicyjnie poprawne” prawdopodobieństwa warunkowe.
Dodaj do sieci dodatkowy węzeł JakWysokoPacjentCeniSwojeZdrowie. Jeżeli nisko to stosowanie leczenia
będzie mniej opłacalne. Jak zmieniają się optymalne decyzje?
Zadanie 3 Plik Car Buyer Neapolitan.dne.
Pan Iksiński zamierza kupić używany samochód. Jeżeli będzie on sprawny sporo zaoszczędzi, jeżeli okaże
się złomem straci na naprawach więcej niż był wart. Ma możliwość wykonać dwa testy pojazdu. Wiązą się
one z dodatkową opłatą, ale dają szansę oceny czy samochód jest sprawny czy też nie. Zbuduj sieć bayesowską
pomagającą dokonać właściwego wyboru. Węzły decyzyjne będą odpowiadały za to czy robić testy (nie, jeden,
oba) oraz czy dokonać zakupu (tak, nie). Węzły wypłaty będą szacowały zysk z danej decyzji.
Zadanie 4 Przebuduj sieci do zadań Monty Halla z poprzedniej listy tak by wykorzystywały węzły decyzyjne
i utylitarne
1
Rysunek 1: Przykładowa sieć do zadania 2.
Rysunek 2: Klasyfikator bayesowski.
Zadanie 5 Naiwny Klasyfikator Bayesowski (NBC — Naive Bayesian Classifier)
Rozważmy sieć na rysunku 2. Węzeł źródłowy jest przyczyną, którą chcemy zdiagnozować. Pozostałe węzły
są symptomami, na których podstawie dokonujemy diagnozy (w tym wypadku możliwe problemy zgłaszane
pomocy technicznej przez użytkowników). Zazwyczaj pytamy tylko o stan węzła przyczynowego. Tablice
prawdopodobieństw są niewielkie gdyż każdy z węzłów (z wyjątkiem korzenia) ma dokładnie jednego rodzica.
Umożliwia to budowanie dość złożonych klasyfikatorów bez popadania w wykładnicze złożoności pamięciowe.
Zbuduj sieć klasyfikator jak na przykładzie (lub własny np. klasyfikujący maile jako spam). Wypełnij CPT
i przeanalizuj działanie sieci.
Jak liczyć prawdopodobieństwo P(Y = y|X1 = x1 ...Xk = xk )?
P(Y = y, X1 = x1 ...Xk = xk )
=
P(X1 = x1 ...Xk = xk )
Q
P(Y = y) i P(Xi = xi |Y = y)
P(X1 = x1 ...Xk = xk |Y = y)P(Y = y)
=
=
P(X1 = x1 ...Xk = xk )
P(X1 = x1 ...Xk = xk )
Q
P(Y = y) i P(Xi = xi |Y = y)
P
=
v P(Y = v)P(X1 = x1 ...Xk = xk |Y = v)
Q
P(Y = y) i P(Xi = xi |Y = y)
Q
P
i P(Xi = xi |Y = v)
v P(Y = v)
P(Y = y|X1 = x1 ...Xk = xk ) =
Zadanie programistyczne
ighted Sampling).
Zaimplementuj algorytm ważonego próbkowania logicznego (LWS — Logic We-
2
Program powinien działać na sieci bayesowskiej ustalonej na stałe, wczytanej z pliku konfiguracyjnego, wylosowanej, wyklikanej w edytorze sieci etc. Wymagana jest możliwość edycji tabel prawdopodobieństw warunkowych (np. poprzez plik konfiguracyjny albo specjalne okno w programie) oraz możliwość wprowadzenia wiedzy
E do sieci. Poprzez wiedzę rozumiemy możliwość ustalenia przyjętego stanu dla każdego węzła, z wyjątkiem
sytuacji gdy ustalane są wszystkie węzły.
Dla określonego przez użytkownika węzła A (lub dla każdego węzła), który nie zawiera wiedzy E, program
obliczy prawdopodobieństwo przyjęcia konkretnego stanu przez A pod waunkiem wiedzy E tj.
∀i P(A = ai |E)
Możliwe podejścia do zadania:
• Tryb piaskownicy oferujący edytor sieci, CPT, połączenie z innymi zadaniami.
• Praktyczne zastosowanie np. wirtualny lekarz pytający się o symptomy (możliwa odpowiedź „nie wiem”)
i wystawiający diagnozę, informatyk rozwiązujący problemy techniczne. W tym wypadku możliwość
wprowadzenia wiedzy można ograniczyć tylko do symptomów.
Punktacja — 1 punkt.
Termin oddawania — 2010.05.13.
Algorytm 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 jest wiedza przypisz wartość wiedzy bez losowania i przemnóż wage przez
prawdopodobieństwo, przyjmie dany stan (wynikający z wiedzy)
• Rekurencyjnie wylosuj wartości węzłów dla kolejnych pokoleń. Jeżeli w danym węźle jest wiedza to
przypisz wartość wynikającą z wiedzy bez losowania i przemnóż wagej przez prawdopodobieńswo,
że węzeł przyjmie stan wynikający z wiedzy pod warunkiem wartości przyjętych przez jego rodziców
(ustaleni w poprzednich krokach). Można odczytać z tabeli prawdopodobieństw warunkowych.
• Zapamiętaj wyniki razem z wagą (aj1 , ..., ajn , wagaj ).
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.
Zadanie programistyczne Napisz program diagnozujący problem za pomocą naiwnego klasyfikatora bayesowskiego (opis powyżej). Sugerowane minimum 5 symptomów + węzeł klasyfikujący. Wymagana jest możliwość edycji wartości CPT, przynajmniej dla części węzłów. Możliwa tematyka: diagnoza medyczna, mechanik
samochodowy, serwis techniczny, filtr antyspamowy, półinteligentna sprawdzarka zadań programistycznych...
Użytkowink powinien móc wprowadzić wiedzę w dowolny z węzłów z symptomami, program zaś wyświetli
jaka jest najbardziej prawdopodobna przyczyna / wszystkie przyczyny z odpowiadającymi im prawdopodobieństwami.
Zadanie można łączyć z innymi zadaniami programistycznymi, ale tak łączone programy są liczone n × 1pt.
Termin oddawania — 2010.05.13
3

Podobne dokumenty