Lista zadań 7
Transkrypt
Lista zadań 7
Wstęp do sieci bayesowskich — Lista 7 — Sieci Gaussowskie Piersa Jarosław 2009-05-19 Przypomnienie 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 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 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ą). 1 Zadanie 4 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 5. 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. • wylosuj u1 , u2 ∼ U(0,1) niezależne • R2 = −2 ln(u1 ) • θ = 2πu2 • z1 = R cos(θ) • z2 = R sin(θ) • return z1 , z2 Zadanie 6 Przybliżony algorytm gnenerowania liczb z rozkładu normalnego. Uzasadnj jego poprawność (wskazówka: Centralne Twierdzenie Graniczne). • z=0 • for i = 1 to 12 do z+ = U(0,1) • return z − 6; Zadanie 7 Wygeneruj próbki z rozkładu normalnego algorytmami z zadań 5 i 6. 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 plik z danymi jako tablicę (2 wymiary) x <- read.table(file("plik.txt")) // jako x przypisujemy pierwszą kolumnę (1 wymiar) x <- x[,1] // test Kolmogorova-Smirnova; //pnorm = dystrybuanta rozkładu normalnego N(0,1) z którym porównujemy próbkę ks.test(x, ’pnorm’) // dla porównania test z próbką wygenerowaną przez R // rnorm(n) - wygeneruj n niezależnych próbek z N(0,1) ks.test(rnorm(10000), ’pnorm’) Test można uznać za zdany jeżeli zachodzi D ≪ p-value. Algorytm rozkładu Cholesky’ego Dane: macierz A symetryczna i dodatnio określona: • 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 2 Zadanie programistyczne Zaimplementuj algorytm symulujący wyniki z sieci gaussowskiej opisanej poprzez macierz kowariancji Σ i wektor wartości oczekiwanych µ metodą opisaną w zadaniu 4. 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 . Algorytm generowania 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 Zadanie programistyczne Zaimplementuj algorytm konwertujący sieć gaussowską (tj. graf, wartości oczekiwane µ i wariancje σ 2 zmiennych oraz parametry skalujące 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 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 to n do Qi−1 + qi bi bti Qi = −qi bti −qi bi qi • return Qn Punktacja — 1p Literatura [1] R. Neapolitan, Learning Bayesian Networks [2] H. Rue, L. Held, Gaussian Markov Random Fields: Theory and Applications 3