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
2010-04-19
1
Tetrad IV
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-6u20-linux-i586.bin.
• rozpakować ./jre-6u20-linux-i586.bin.
• uruchomić Tetrad lokalną wersją jre ./jre1.6.0 20/bin/javaws ./Desktop/tetrad-4.3.10-0.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ą.
• Graph Manipulation — operacja na grafie: zamiana grafu na szkielet strukturalny, uzupełnienie
szkieletu do pełnej sieci, blanket Markowa; rodzicem jest Graph
• Comparasion — porównanie grafów lub szkieletu strukturalnego i grafu (rodzice Graph + Graph,
Graph + Search)
• 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).
1
• Data Manipulation — przekształca dane (data) — operacje arytmeryczne, dyskretyzowanie i uciąglanie danych, uzupełnianie braków, zmiana liczności etc.
• Estimator — estymacja nieznanych parametrów sieci (np. tabel prawdopodobieństw warunkowych,
algorytmy uczenia przy znanej architekturze itp), wymaga Data lub Data Manipulation.
• Updater — wnioskowanie i możliwość ustalenia wiedzy w sieci, wyświetla rozkłady brzegowe dla
węzłów bez wiedzy i po jej wprowadzeniu, Wymaga IM lub Estimator jako rodzica.
• Classify — porównanie czy dane odpowiadają danej sieci bayesowskiej (Data + IM).
• Knowledge — dodatkowa wiedza o strunkturze grafu jaką możemy wprowadzić przed uruchomieniem algorytmu szukania struktury.
• Search — szeroka klasa algorytmów wyszukujących w tym również algorytmy konstrukcyjne dla
sieci na podstawie danych (m. in. algorytm PC)
2
Zadania
Zadanie 1 Zbuduj dowolną sieć baysowską (można wykorzystać sieci z wcześniejszych list) i wygeneruj
wyniki działania (Graph → PM → IM → Data). Dodaj do sieci Updater ← IM. Jak wygląda wnoskowanie
w Tetradzie?
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
(TODO Przenieść to zadanie do listy 5.) Dana niech będzie sieć o węzłach A → B → C.
P(A = a1 )
0.4
war
A = a1
A = a2
P(A = a2 )
0.6
P(B = b1 |war)
0.4
0.2
P(B = b2 |war)
0.3
0.5
P(B = b3 |war)
0.3
0.3
2
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
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 programistyczne Zaimplementuj algorytm określający niezależność lub zależność strukturalną węzłów w sieci bayesowskiej oraz niezależność lub zależność warunkową. Algorytm powinien jako
wejście przyjąć sieć bayesowską, węzeł A (opcjonalnie cały zbiór węzłów), węzeł B oraz zbiór węzłów
warunkowych C (może być to zbiór pusty) i określić czy A jest d-separowane od B poprzez C (A ⊥ B|C).
Opcjonalnie dla określonego A i C określić zależność / niezależność dla wszystkich pozostałych węzłów
w sieci.
Uwaga: zadanie dotyczy niezależności strukturalnych tj. wynikających z architektury sieci. W zadaniu
nie są uwzglęniane niezależności wynikające z wpisów CPT.
Punktacja — 2p.
Test χ2 Dana jest próbka danych (x, y), pochodząca z rozkładów X i Y . Czy są one niezależne?
Przyjmijmy oznaczenia:
• N — wielkość próbki
• c — liczba wartości (stanów) Y
• r — liczba wartości (stanów) X
• Oij , dla i = 1..r j = 1..c — ilość zaobserwowanych próbek, w których (X = xi , Y = yj )
• Eij , dla i = 1..r j = 1..c — ilość oczekiwanych próbek wynikających z rozkładów brzegowych
Pr
Pc
Elj
k=1 Eik
· l=1
·N
Eij =
N
N
Hipoteza zerowa: nie istnieje zależność między X a Y .
Hipoteza alternatywna: X i Y są zależne.
Statystyka testowa:
r X
c
X
(Eij − Oij )2
T =
Eij
i=1 j=1
• Statystyka testowa zachowuje się jak rozkład χ2 z (r − 1)(c − 1) punktami swobody. Obliczamy 1
- wartość dystrybuanty rozkładu w tym punkcie (lub zczytujemy z tabeli), ang. p-value.
• Poziom istotności — α ∈ (0, 1), zazwyczaj α = 0.05.
• Jeżeli zachodzi p − value ≥ α odrzucamy hipotezę zerową i przyjmujemy istnienie zależności między
X i Y.
• Uwaga! Formalnie p − value < α nie oznacza niezależności, zmienne mogą być zależne w inny
sposób, którego jednak test nie wychwycił.
Alternatywnie:
• Obliczamy obszar krytyczny
K = (F1−α ((r − 1)(c − 1)), +∞)
gdzie F1−α (k) jest kwantylem rzędu 1 − α rozkładu χ2 z k punktami swobody.
• Jeżeli T ∈ K to odrzucamy Hipotezę zerową.
• Jeżeli T ∈
/ K to nie mamy podstaw do jej odrzucenia.
3