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