Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do Tetrada

Transkrypt

Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do Tetrada
Wstęp do sieci bayesowskich — Lista 6 — Wprowadzenie do
Tetrada
Piersa Jarosław
2009-04-28
Pakiet TetradIV można pobrać ze strony http://www.phil.cmu.edu/projects/tetrad. Tamże
znajduje się manual w formacie pdf. Oprogramowanie objęte jest licencją GNU/GPL. Tetrad jest zainstalowany na serwerze Aleks na katalogu /opt/tetrad/goTetrad.sh. Można również zainstalować lokalnie.
Do uruchomienia wymagane jest środowisko Javy (wskazana wersja Suna, na OpenJDK nie wszystko
działa).
W przypadku będów w działaniu (dotyczy przede wszystkim przecinków dziesiętnych) należy zmienić ustawienia regionalne na angielskie i zrestatrować aplikację. Na Windowsach: Start → Ustawienia
→ Panel Sterowania → Ustawienia Regionalne. Na Linuxie: wybór ustawień jęzukowych na poziomie
logowania. Można również zmienić na poziomie terminalu env LANG=en US.
W wypadku braku Sunowskiej JRE na Linuxie:
• pobrać ze strony http://www.java.com/en/download/index.jsp. Zalecane jest archiwum samorozpakowujące. RPM wymaga uprawnień roota.
• dodać prawo do uruchomienia pliku chmod +x jre-6u13-linux-i586.bin.
• rozpakować ./jre-6u13-linux-i586.bin.
• uruchomić Tetrad lokalną wersją jre ./jre1.6.0-13/bin/javaws ./Desktop/tetrad-4.3.9-9.jnlp.
Filozofia działania pakietu nieco różni się od Netici czy Hugina. Przypomina budowanie z klocków. W
zależności od konfiguracji i połączeń można uzyskać inne efekty. Nie wszystkie połączenia są dopuszczalne,
program zazwyczaj informuje o podaniu błędnych połączeń.
Rodzaje klocków
• Graph — pozwala na wprowadzenie lub wygenerowanie losowe grafu. Sam węzeł jest ogólny i nie
jest jeszcze gotową siecią bayesowską ani gaussowską.
• Parametric Model — przyjmując jako wejście graf pozwala ustalić jakie będzie przeznaczenie grafu
(np. sieć bayesowska pod warunkiem, że graf jest skierowany i acykliczny). W takiej sytuacji
dodaje szereg parametrów: ilość i nazwy stanów dla każdego węzła i tabele prawdopodobieństw
warunkowych. Uwaga! Wymiary tablic są znane i przechowywane w PM ale wpisy w tablicach już
nie!
• Instantiated Model — pozwala na przypisanie konkretnych parametrów z PM (np. tabel prawdopodobieństw dla sieci bayesowskich, średnich i wariancji dla sieci gaussowskich).
• Data — pozwala wczytać dane z zewnętrznego pliku (bez rodziców) lub wysymulować z sieci (rodzicem będzie IM).
• Manipulated Data — przekształca dane (data) — operacje arytmeryczne, dyskretyzowanie i uciąglanie danych, uzupełnianie braków etc.
• Estimate — estymacja nieznanych parametrów sieci (np. tabel prawdopodobieństw warunkowych,
algorytmy uczenia przy znanej architekturze itp).
• Search — szeroka klasa algorytmów wyszukujących w tym również algorytmy konstrukcyjne dla
sieci na podstawie danych (m. in. algorytm PC)
1
• Classify — porównanie czy dane odpowiadają danej sieci bayesowskiej.
• Updater — uaktualnieanie zmian prawdopodobieństw warunkowych (i łącznych w niektórych przypadkach) po wprowadzeniu wiedzy do sieci. Wymaga IM jako rodzica.
Zadanie 1 Zbuduj dowolną sieć baysowską (można wykorzystać sieci z wcześniejszych list) i wygeneruj
wyniki działania (Graph → PM → IM → Data).
Zadanie 2 Plik z danymi z zadania 1 (lub z innymi danymi np. od osoby siedzącej obok) wykorzystaj
do uczenia sieci przy znanej architekturze. Dane wczytywane z pliku w węźle Data. Struktura grafu i ilość
stanów powinny być określone w węzłach Graph i PM. Węzeł Estimator przyjmuje jako rodziców PM i
Data i zwraca IM. (Graph → PM → Estimator ← Data) Porównaj uzyskane tabele prawdopodobieństw
warunkowych z oryginalnymi.
Zadanie 3 Zbuduj sieć bayesowską (Graph + PM + IM) — dowolną, może być losowa. Wygeneruj
dane z tej sieci do węzła Data1. Wczytaj dane wygenerowane przez inną sieć bayesowską do innego węzła
Data2. Dodaj węzeł porównujący sieć i uzyskane dane (Graph → PM → IM → Classify1 ← Data1) oraz
jeszcze jeden porównujący dane pochodzące z innej sieci (Graph → PM → IM → Classify2 ← Data2).
Porównaj wyniki.
Zadanie 4 Z wyników uzyskanych w zadaniu 1 (lub dowolnym innym) odtwórz sieć algorytmem PC
(Data → Search). Porównaj z siecią wejściową oraz z wynikami uzyskanymi z innych pakietów.
Zadanie 5 Uruchom algorytm PC dla danych z zadania 1 listy 5. Uwaga: ze względu na stabilność
uczenia ilość przykładów należy przemnożyć przez przynajmniej 10.
• (ABC) = (ttt) × 3, (tnt) × 3, (ntt), (nnn) × 3, (tnn) × 9, (ttn) × 3, (nnt), (ntn)
• (ABC) = (tnt), (ttt), (nnt), (ttt), (nnn), (ttn), (nnn)(ttn)
• (ABC) = (tnt) × 9, (ttn) × 2, (tnn) × 1, (nnt) × 2, (ntn) × 4, (nnn) × 2
• (ABC) = (ttt), (ttn), (tnt) × 2, (tnn) × 4, (ntt), (nnt) × 2, (nnn)
Zadanie 6
Porównaj zbiory węzłów d-separowalnych dla sieci z listy 5, zadania 3 lub / i własnych sieci.
Zadanie 7
Dana niech będzie sieć o węzłach A → B → C.
P(A = a1 )
0.4
P(A = a2 )
0.6
war
A = a1
A = a2
P(B = b1 |war)
0.4
0.2
P(B = b2 |war)
0.3
0.5
war
B = b1
B = b2
B = b3
P(C = c1 |war)
0.4
0.4
0.8
P(C = c2 |war)
0.6
0.6
0.2
P(B = b3 |war)
0.3
0.3
Zbuduj tę sieć w Tetradzie i wygeneruj zbiór przykładów. Odtwórz sieć algorytmem PC i porównaj
wyniki. Z konstrukcji sieci wynika, że A i C są niezależne pod warunkiem B. Pokaż, że A i C są również
niezależne (bez warunkowania na B).
Zadanie 8 Do sieci dodaj węzeł Updater (Graph → PM → IM → Updater). Sprawdź jak zmienają się
prawdopodobieństwa przy wprowadzeniu pewnych danych (odpowiednik wnioskowania w sieci).
2
Zadanie programistyczne Zaimplementuj przybliżony algorytm znajdowania szkieletu strukturalnego sieci bayesowskiej na podstawie danych. Może to być algorytm K2, algorytm zachłanny, przeszukiwanie losowe, algorytm genetyczny, symulowane wyżarzanie etc. Algorytmy podane zostały (lub zostaną)
na wykładzie. Wymagają one zaimplementowania dynamicznie modyfikowalnego grafu, szeregu operacji
oraz funkcji oceniającej jakość dopasowania do danych. Ze względu na złożoność można przyjąć ograniczenia na liczbę węzłów, krawędzi, wpisów w tabelach. Dane powinny być podawane przez użytkownika
w formie pliku. Program powinien wyświetlić wynikową sieć bayesowską wraz z tablicami prawdopodobieństw — można skorzystać z algorytmu uczenia Dirichleta mając gotową architekturę. Program można
urozmaicić poprzez wyświetlanie wyników pośrednich, wykres funkcji dostosowania podczas przebiegu
algorytmu, podgląd całej populacji (alg. genetyczny).
Punktacja — 6p (wraz z dopełnieniem do pełnej sieci / uczeniem)
3