Wstęp do sieci bayesowskich — Lista 9 — Sieci Gaussowskie
Transkrypt
Wstęp do sieci bayesowskich — Lista 9 — Sieci Gaussowskie
Wstęp do sieci bayesowskich — Lista 9 — Sieci Gaussowskie Piersa Jarosław 23 maja 2010 1 Przypomnienie 1.1 Rozkład normalny Rozkład normalny (rozkład gaussowski) N (µ, σ 2 ), µ ∈ R, σ 2 > 0 jest rozkładem absolutnie ciągłym o gęstości: −(x − µ)2 1 exp f (x) = √ 2σ 2 2πσ Jeżeli X jest zmienną losową o rozkładzie normalnym N (µ, σ 2 ) to wartość oczekiwana X wynosi EX = µ, natomiast wariancja D2 X = σ 2 . Kowariancją zmiennych X i Y nazywamy Cov(X, Y ) = E((X − EX)(Y − EY )) Niech X ∼ N (µ, σ 2 ) i Y ∼ N (ν, ρ2 ) będą niezależnymi zmiennymi losowymi o rozkładzie normalnym, c ∈ R. Wówczas zachodzi: X + c ∼ N (µ + c, σ 2 ) cX ∼ N (cµ, c2 σ 2 ) X + Y ∼ N (µ + ν, σ 2 + ρ2 ) X · Y ∼ N( µρ2 + νσ 2 σ 2 ρ2 , ) σ 2 + ρ2 σ 2 + ρ2 Rozkład normalny o parametrach µ = 0 oraz σ 2 = 1 nazywa się rozkładem standardowym. 1.2 Sieć gaussowska Sieć gaussowska jest grafem skiowanym i acyklicznym. Na wierzchołkach zadane są zmienne pochodzące z rozkładu normalnego modelujące jakąś wielkość fizyczną lub abstrakcyjną. Zmienne bez rodziców mają zadany rozkład aprioryczny, jest to rozkład normalny więc do pełnego opisu wystarczą wartość oczekiwana i wariancja. Krawędzie mają przypisaną wagę. Wartość węzłów, które mają rodziców, jest obliczna jako suma ważona rodziców oraz niezależnej poprawki pochodzącej z rozkładu normalnego. N(a 2 , s 22 ) N(a 1 , s 12 ) X1 Ile Zarabia? X2 Samopoczucie b13 b23 X3 Ile Wydaje? b13 X 1 + b12 X 2 + N(0, s 23 ) Rysunek 1: Sieć gaussowska modelująca możliwości konsumpcyjne klientów. 1 2 Zadania Zadanie 0 Pokaż, że gęstość rozkładu normalnego standardowego całkuje się do 1. Wskazówka: pokaż własność dla rozkładu dwuwymiarowego i zastosuj twierdzenie o zamianie zmiennych (na biegunowe). Z −x2 1 √ exp dx = 1 2 2π R Zadanie 1 (Przykłady 4.1 i 4.2 w [1]) Pan Iksiński podjął pracę, której płaca wynosi 10 zł za godzinę. Ilość przepracowanych godzin tygodniowo nie jest stała, ale można szcować, że pochodzi z rozkładu normalnego o średniej µ1 = 40h i odchyleniu standardowym σ1 = 5h. Do tego Iksiński dolicza „czynniki losowe” takie jak premie, potrącenia, napiwki itp. które dają się modelować rozkładem normalnym o wartości oczekiwanej µ2 = 0zl i odchyleniu sandardowym σ2 = 30zl i są niezależne od ilości przepracowanych w tygodniu godzin. Zbuduj sieć modelującą zarobki Pana Iksińskiego (Graph → PM → IM → Data). Zadanie 2 Oznaczając ilość przepracowanych godzin tygodniowo jako X i sumaryczne zarobki jako Y oblicz: gęstość brzegową Y , gęstość warunkową X|Y , kowariancję X i Y . Iksiński po pierwszym tygodniu zarobił 300zł, nie pamięta dokładnie ile godzin przepracował. Oszacuj tę wartość (Graph → PM → IM → Updater). Zadanie 3 Zadanie 4 Pokaż, że macierz kowariancji Σ jest dodatnio określona (z kryterium Sylvestera). D2 X Cov(X, Y ) 25 250 Σ= = Cov(X, Y ) D2 Y 250 3400 Rozłóż Σ na iloczyn Σ = LLT za pomocą rozkładu Choleskyego (L jest macierzą dolnotrójkątną). Zadanie 5 Wykonaj obliczenia (Maple, Matlab, R, napisz program w C) • Wygeneruj z = (z1 , z2 )T ∼ (N (0, 1), N (0, 1))T • Znajdź rozkład Σ = L · LT , (L macierz z zadania 3) • Oblicz v = Lz • Zwróć v + µ EX 40 gdzie µ = = EY 400 Wygeneruj większą liczbę próbek. Porównaj wyniki z danymi wygenerowanymi przez sieć w zadaniu 1. Zadanie 6. Algorytm Boxa-Mullera Algorytm generuje dwie niezależne zmienne losowe o rozkładzie normalnym standardowym. Zakładamy, że dany jest generator liczb losowych z rozkładu jednostajnego na odcinku (0, 1). Uzasadnij poprawność algorytmu. u1 = r u n i f ( 0 , 1 ) ; u2 = r u n i f ( 0 , 1 ) ; r 2 = −2 ∗ l n ( u1 ) ; t h e t a = 2 ∗ Pi ∗ u2 ; z1 = s q r t ( r 2 ) ∗ c o s ( t h e t a ) ; z2 = s q r t ( r 2 ) ∗ s i n ( t h e t a ) ; return ( z1 , z2 ) ; Wskazówka: #include <time . h> #include < s t d l i b . h> double r u n i f ( double min , double max ){ double a = ( ( double ) rand ( ) ) % RAND MAX; 2 } return ( a ∗ (max − min ) +min ) ; // r u n i f ( ) i n t main ( ) { s r a n d ( time (NULL ) ) ; (...) } Zadanie 7 Przybliżony algorytm gnenerowania liczb z rozkładu normalnego. Uzasadnj jego poprawność (wskazówka: Centralne Twierdzenie Graniczne). suma = 0 ; f o r ( i n t i =0; i <12; i ++) suma += r u n i f ( 0 , 1 ) ; suma −= 6 ; return suma ; Zadanie 8 Wygeneruj próbki z rozkładu normalnego algorytmami z zadań 6 i 7. Sprawdź wyniki testami zgodności Kolmogorova-Smirnova dla różnych wielkości próbek. W pakiecie R (Google: Rproject, test jest szybszy niż w Tetradzie): // wczytujemy p l i k z danymi j a k o t a b l i c e (2 wymiary ) x <− read . table ( f i l e ( ” p l i k . t x t ” ) ) // j a k o x p r z y p i s u j e m y p i e r w s z a kolumne (1 wymiar ) x <− x [ , 1 ] // t e s t Kolmogorova−Smirnova ; //pnorm = d y s tr y b u a n ta r o z k l a d u normalnego N( 0 , 1 ) z ktorym porownujemy p r o b k k s . t e s t ( x , ’ pnorm ’ ) // d l a porownania t e s t z p r o b k wygenerowana p r z e z R // rnorm ( n ) − w y g en er u j n n i e z a l e z n y c h p r b e k z N( 0 , 1 ) k s . t e s t (rnorm ( 1 0 0 0 0 ) , ’ pnorm ’ ) Test można uznać za zdany jeżeli zachodzi α ≤ p-value. 3 Algorytm rozkładu Cholesky’ego Dane: macierz A symetryczna i dodatnio określona. Cel: Znaleźć macierz dolnotrójkątną L, taką że L · LT = A • for i = 1 to n – vj..n = Aj..n,j – for k = 1 to j − 1 ∗ vj..n − = Lj..n,k Lj,k √ – Lj..n,j = vj..n / vj • return L 4 Zadania programistyczne Zadanie 1 — Generowanie danych z sieci gaussowskiej Napisz program, który pozwoli wczytać lub „wyklikać” (ostatecznie może być ustalona w kodzie programu) sieć gaussowską oraz wygenerować próbkę danych z tejże sieci. Zadanie 2 — Konwersja sieci na wielowymiarowy rozkład normalny Zaimplementuj algorytm konwertujący sieć gaussowską (tj. graf, wartości oczekiwane µ i wariancje σ 2 zmiennych oraz wagi b) na wielowymiarowy rozkład normalny (opisany przez wektor wartości oczekiwanych M i macierz precyzji Q). Wejściowy graf powinien być zadany przez użytkownika (w pliku konfiguracyjnym lub skonstruowany w edytorze). Algorytm (w [1], rozdział 7): Oznaczenia: qi = σ12 i 3 bj,i — waga z jaką węzeł i-ty wchodzi do węzła j-tego t bi = [bi,1 ...bi,i−1 ] — wektor wag z jakimi do i wchodzą wszystkie wcześniejsze węzły (0 jeżeli nie wchodzą bezpośrednio) • Posortuj węzły zgodnie z topologią grafu (tj. jeżeli istnieje ścieżka z i do j to i będzie przed j) • Q1 = [q1 ] • for i = 2 ton do Qi−1 + qi bi bti Qi = −qi bti −qi bi qi • return Qn Punktacja — 1p Zadanie 3 — Generowanie próbek z sieci gaussowskiej Zaimplementuj algorytm symulujący wyniki z sieci gaussowskiej opisanej poprzez macierz kowariancji Σ lub precyzji Q i wektor wartości oczekiwanych µ metodą opisaną w zadaniu 5. Dane (tj. wektor, macierz, ilość próbek) powinny być podawane przez użytkownika (np. w postaci pliku, lub do wypełnienia w okienku). Mile widziane rozwinięcia: rysowanie histogramów dla ustalonej zmiennej i wykresów dla pary zmiennych, statystyki opisowe wygenerowanej próbki (średnia z próby, wariancja z próby, dystrybuanta empiryczna etc). Zamiast macierzy kowariancji można korzystać z podanej macierzy precyzji Q = Σ−1 liczonej jak powyżej. Algorytm generowania próbki wygląda wówczas następująco [2]: • Wygeneruj z ∼ N ((0..0)T , In ) — n niezależnych zmiennych losowych z rozkładu normalnego • Oblicz rozkład Choleskyego Q = LLT • Rozwiąż układ równań LT v = z, gdzie szukanym wektorem jest v • Zwróć LT v + µ Punktacja — 1p Literatura [1] R. Neapolitan, Learning Bayesian Networks [2] H. Rue, L. Held, Gaussian Markov Random Fields: Theory and Applications 4