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

Podobne dokumenty