obliczenia PageRank
Transkrypt
obliczenia PageRank
Metody numeryczne Wykład nr 4 dr hab. Piotr Fronczak Obliczanie wartości własnych i wektorów własnych Niech M będzie kwadratową macierzą n x n. Wówczas M wyznacza przekształcenie liniowe przestrzeni Rn w siebie. Niech v Rn będzie pewnym niezerowym wektorem oraz niech L będzie prostą wyznaczoną przez ten wektor. Definicja. Jeżeli przekształcenie M przekształca prostą L w siebie, to mówimy, ze v jest wektorem własnym przekształcenia M. Oznacza to, że M·v= ·v dla pewnej liczby rzeczywistej , zwanej wartością własną związaną z wektorem własnym v. Obliczanie wartości własnych i wektorów własnych Chcąc znaleźć wartości i wektory własne musimy rozwiązać równanie: x x M – macierz, λ - skalar Mx y x y M x x M xy xy My x y x 0 yx yx 0 M Przekształcając… M x y x y0 0 M xy xy 00 My x y 0x 0 I x 0 0 yx y M y 0 By móc wyciągnąć wektor przed y M x Ix 0 nawias, musimy zamienić skalar na M xy I x 0 y 0 I yx 00 macierz mnożąc go przez macierz MyM I jednostkową. y x xyy00 00 M I M I xy 00 Wyciągamy wektor… M I y 0 y 0 Obliczanie wartości własnych i wektorów własnych xx 000 x M I M I M I xyy 00 I yx 0 0 M M aI by 0 a bby 0 a Ma b MM cacc ddbd M M c d a b a b b 000 c d a M III M M acc dbd 00 0 I c a db 0 0 M M I ac d b0 c a b 0b d a MMIIIa b M accc ddd b I M M I b c x d 0 a a b b cxxd00 a xy 0 b aac c d c d y 000 d b yx d y 0 cc d y 0 Zapisując M jako macierz dwuwymiarową: Możemy teraz napisać jawnie układ równań: Obliczanie wartości własnych i wektorów własnych Jeśli wyznacznik macierzy (M- λI) nie a b x 0 a b x 0 b x 0jest a równy zero, to możemy pomnożyć cc yy 00 obustronnie to równanie przez macierz d d c d y 0 odwrotną: 11 xx aax abb yy cc dd y c xx 00 x 0 yy 00 y 0 to, że nasz wektor to wektor 00b 1 Oznacza 0 zerowy, nie wyznacza on żadnej 00 prostej. d 0 Zatem, wyznacznik macierzy (M- λI) musi być równy zero. Czyli jest to macierz osobliwa. Obliczanie wartości własnych i wektorów własnych a b Ważne równanie – a b 0 tak szukamy wartości własnych. 0 c d c d a d bc 0 a d bc 0 2 2 a d ad bc 0 a d ad bc 0 Równanie charakterystyczne. Wartości własne określają wielkość przeskalowania położenia punktu (wektora wodzącego) w przestrzeni. Możemy mieć jedną, dwie, lub brak rzeczywistych wartości własnych w macierzy 2x2. 0 Jaka jest wartość własna czerwonego wektora? A niebieskiego? Obliczanie wartości własnych i wektorów własnych Gdy znajdziemy już wartości własne, możemy podstawić je do naszego pierwotnego równania by znaleźć wektory własne. x x M y y To jest wektor własny. Uwaga: nie jest on jednoznaczny. Wyznacza kierunek. Wiele innych wektorów też wyznacza ten sam kierunek. By rozwiązać to równanie, trzeba przyjąć dodatkowy warunek (np. długość wektora, wartość jednej składowej, itp.) Znajdź wartości własne i odpowiadające im wektory własne macierzy A: 11 44 A A 1112 4443 A 2 3 A A 22 33 2I 30 A A I 0 A II 00 A A I 40 11 4 0 1 0 11 444 22 33 0 0 0 222 333 (1 (1 )(3 )(3 )) 88 00 (1 )(3 )(3 2 )) 88 00 (1 (1 )(3 ) 8 0 0 33 44 222 88 0 3 4 8 00 2 33 88 22 4 4 0 22 44 55 00 2 44 55 00 (( 4 0 5)( 5)( 51) 1) 00 5)( 5)( 1) 1) 00 ((( 5)( 1) 11 5, 5, 22 11 0 5, 5, 2 11 11 5, 2 1 1 2 Odpowiada wartości własnej 5 4 x 0 1 5 1 5 2 3 5 y 0 4 4 x 0 2 2 y 0 4 x 4 y 0 2x 2 y 0 1 1 1 1 1 4 4 xxx 0 0 1 1 1 4 0 111 1 11 2 3 1 y 0 22 3311yy 00 2 22 4 44xxx0 00 22 44yy 00 2 4 y 0 2 22xxx 4 44yyy 0 00 2 22xxx 4 44yyy 0 00 2 22 11 1 Odpowiada wartości własnej -1 Zastosowania Równanie Schroedingera: Funkcje falowe elektronów w atomie wodoru mogą być postrzegane jako wektory własne operatora energii i momentu pędu. Wartości własne reprezentują wartość energii (n = 1,2,3,...) i momentu pędu (s, p, d,...). Analiza składowych głównych Metoda statystyczna umożliwiająca zrzutowanie wysokowymiarowego zbioru danych na dwa lub trzy wymiary. Umożliwia ona wybrać te kierunki wersorów, które charakteryzują się największą wariancją danych. Mechanika drgań Wartości własne reprezentują naturalne częstości drgań układu złożonego z kilku elementów. Wektory określają mody tych drgań. Dynamika ruchu obrotowego: Moment bezwładności trójwymiarowego obiektu bez żadnych osi symetrii jest dany macierzą 3x3. Wektory własne – kierunki osi przechodzące przez środek masy, wokół których obiekt może się obracać. Wartości własne – wartości momentu pędu dla danego kierunku. Metoda potęgowa (iteracji wektorów) Można ją stosować dla znajdowania wartości własnej o największym module i odpowiadającego jej wektora własnego. Rozważmy macierz [a], która ma n różnych rzeczywistych wartości własnych 1, 2, …, n i n związanych z nimi wektorów własnych [u]1, [u]2, …, [u]n. Ponumerujmy wartości własne od największej do najmniejszej: |1| > |2| > …> |n| Wspomniane wektory stanowią bazę w tym sensie, iż każdy inny wektor może być przedstawiony jednoznacznie jako ich kombinacja liniowa. [ x]1 c1[u]1 c2 [u]2 ... cn [u]n gdzie ci – stałe skalarne 0. [ x]1 c1[u]1 c2 [u]2 ... cn [u]n Pomnożywszy przez [a]: [a ][ x]1 c1[a ][u ]1 c2 [a ][u ]2 ... cn [a ][u ]n c11[u ]1 c2 2 [u ]2 ... cn n [u ]n cn n c 2 2 c11 [u ]1 [u ]2 ... [u ]n c11 c11 c11[ x]2 cn n c2 2 [ x]2 [u ]1 [u ]2 ... [u ]n c11 c11 [ x]2 [u ]1 c c2 2 [u ]2 ... n n [u ]n c11 c11 Pomnożywszy przez [a]: cn n c2 2 [a][ x]2 [a][u ]1 [a][u ]2 ... [a][u ]n c11 c11 cn n c22 [a][ x]2 1[u ]1 2 [u ]2 ... n [u ]n c11 c11 cn 2n c2 22 1[u ]1 [u ]2 ... [u ]n c11 c11 cn 2n c222 1 [u ]1 [ u ] ... [ u ] 2 n 2 2 c11 c11 1[x]3 cn 2n c2 22 [ x]3 [u ]1 [u ]2 ... [u ]n 2 2 c11 c11 Pomnożywszy przez [a]: cn 2n c2 22 [a][ x]3 [a][u ]1 [a][u ]2 ... [a][u ]n 2 2 c11 c11 cn 2n c2 22 [a][ x]3 1[u ]1 2 [u ]2 ... 2 n [u ]n 2 c11 c11 cn 3n c2 32 1[u ]1 [u ]2 ... [u ]n 2 2 c11 c11 cn 3n c232 1 [u ]1 [ u ] ... [ u ] 2 n 3 3 c11 c11 1[x]4 Widać zatem, że kolejne iteracje dadzą: cn n c2 2 [ x]2 [u ]1 [u ]2 ... [u ]n c11 c11 cn 2n c2 22 [ x]3 [u ]1 [u ]2 ... [u ]n 2 2 c11 c11 cn 3n c232 [ x]4 [u ]1 [u ]2 ... [u ]n 3 3 c11 c11 ... cn kn c2k2 [ x]k 1 [u ]1 k [u ]2 ... [u ]n k c11 c11 Pamiętajmy, że Zatem i 1 dla i 1 1 [ x]k 1 [u]1 dla k [a][ x]1 1c1[ x]2 [a][ x]2 1[ x]3 [a][ x]3 1[ x]4 [a][a][a][ x]1 111c1[ x]4 [a ]k [ x]1 1k c1[ x]k 1 1k c1[u ]1 Przypomnienie: jeśli [x] jest wektorem własnym, to k[x] też jest wektorem własnym. Tylko kierunek wektora własnego ma znaczenie. Jego długość możemy przyjąć dowolnie. My przyjmiemy jego długość równą 1 (znormalizowany wektor własny). Dzięki temu prawa strona ostatniego równania nie urośnie lub nie zmaleje poza zakres liczb zmiennoprzecinkowych. Algorytm: 1. Wybierz wektor początkowy [x0] i znormalizuj go. [y 0 ] [x 0 ] [x 0 ] 2. Pomnóż [y0] przez [a]. Otrzymany wektor znormalizuj. [a][y 0 ] [x1 ], [y1 ] [x1 ] [x1 ] 3. Pomnóż [y1] przez [a]. Otrzymany wektor znormalizuj. [a][y1 ] [x 2 ], [y 2 ] [x 2 ] [x 2 ] Powtórz ostatnią operację m razy. Gdy m jest duże, to [ym] [ym-1]. Wtedy również [ym] [u1] (wektor własny znormalizowany). Zatem z zależności: [a][y m1 ] [a][y m ] [y m ] Znajdziemy wartość własną. Przykład: 1. 2. 1 4 1 0 [a ] 0 2 1 x0 1 1 0 0 1 4 1 0 1 5 1 0 2 1 1 3 0.6 5 0 0 1 1 1 0.2 4 1 0 1 4.6 1 0 2 1 0.6 1 0.217 4 . 6 0 0 1 0.2 0.2 0.0435 Krok [u1] 1 [1 -0.6 -0.2] 5 2 [1 0.217 0.0435] 4.6 3 [1 0.1134 -0.0183] 4.2174 4 [1 0.0526 0.0025] 4.1134 ... ……………………. …….. k 3. 4 1 0 1 4.2174 1 0 2 1 0.217 0.4783 4.2174 0.1134 0 0 1 0.0435 0.0435 0.0183 4. 1 4 1 0 1 4.1134 0 2 1 0.1134 0.2165 4.11340.0526 0.0025 0 0 1 0.0183 0.0103 [1 0 0] 4 Zbieżność metody potęgowej 0.65 0.35 H 0.35 0.65 1 = 1, 2 = 0.3 0.85 0.15 H 0.15 0.85 Zbieżność metody zależy od 1 = 1, 2 = 0.7 1 . 2 cn kn c2k2 [ x]k 1 [u ]1 k [u ]2 ... [u ]n k c11 c11 Przypadek, gdy [x]1 nie ma składowej w kierunku [u]1 (c1 = 0). Przykład: Google PageRank Każdej stronie P w sieci przypiszemy liczbę – miarę jej ważności I(P). Załóżmy, że strona Pj ma lj odnośników. Jeśli jeden z tych odnośników prowadzi do strony Pi, to Pj wniesie wkład do ważności Pi w wysokości I(Pj)/lj. Zatem ważność Pi będzie sumą wszystkich wkładów stron, których odnośniki prowadzą do tej strony. I ( Pi ) I ( Pj ) Pj S ( Pi ) lj Klasyczny przykład problemu o jajku i kurze. Stwórzmy macierz odnośników: H ij 0 1 lj oraz wektor: Zatem: dla Pj S ( Pi ) dla Pj S ( Pi ) I [ I ( Pi )] I HI Suma elementów w każdej kolumnie wynosi 1 (chyba, że strona odpowiadająca tej kolumnie nie ma odnośników do Pi. Wektor ważności stron. I jest wektorem własnym macierzy H o wartości własnej równej 1. Zastosujmy metodę potęgową I k+1 = H I k I0 I1 I2 I3 I4 ... I 60 I 61 1 0 0 0 0.0278 ... 0.06 0.06 0 0.5 0.25 0.1667 0.0833 ... 0.0675 0.0675 0 0.5 0 0 0 ... 0.03 0.03 0 0 0.5 0.25 0.1667 ... 0.0675 0.0675 0 0 0.25 0.1667 0.1111 ... 0.0975 0.0975 0 0 0 0.25 0.1806 ... 0.2025 0.2025 0 0 0 0.0833 0.0972 ... 0.18 0.18 0 0 0 0.0833 0.3333 ... 0.295 0.295 Odpowiedzmy na trzy pytania: • Czy ciąg Ik jest zawsze zbieżny? • Czy wektor końcowy nie zależy od wyboru wektora początkowego? • Czy wynik zawiera informację, o którą nam chodziło? NIE! NIE! NIE! Konieczne modyfikacje. Modyfikacja nr 1 0 0 H 1 0 Rozważmy przykład: I0 I1 I2 I 3=I 1 0 0 0 0 1 0 0 Węzeł bez wyjścia Rozwiązanie: całą kolumnę odpowiadającą takiemu węzłowi wypełniamy liczbami 1/n. (Prawdopodobieństwo przejścia do dowolnej innej strony jest takie samo). 0 H 1 1 2 1 2 13 I 23 Modyfikacja nr 2 0 1 H 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 1 0 0 0 0 I0 I1 I2 I3 I4 I5 1 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 1 = 1, 2 = 1 Co do licha??? Zbieżność metody zależy od 1 . 2 Twierdzenie Frobeniusa-Perrona. Jeżeli macierz nxn jest macierzą pierwotną, to jedna z jej wartości własnych jest dodatnia i większa co do modułu od pozostałych wartości własnych. Macierz A jest macierzą pierwotną, jeśli istnieje takie k, że każdy element macierzy Ak jest dodatni. Zmodyfikujmy naszą macierz H: Macierz, w której wszystkie elementy równe są 1. 1 G H (1 ) 1 n Macierz Google Prawdopodobieństwo, z jakim poruszamy się po sieci zgodnie z macierzą H Prawdopodobieństwo, z jakim wybieramy następny węzeł losowo. Im większe , tym większą wagę przykładamy do macierzy rzeczywistych połączeń H. Dla macierzy Google udowodniono, że |2| = . Zatem powinno być jak najmniejsze. Jako kompromis, twórcy tej metody wybrali = 0.85. Liczba iteracji konieczna do uzyskania zbieżności – 50 100 Rozmiar macierzy 25 * 109 stron. Obliczanie wektora I trwa około tygodnia. Odwrotna metoda potęgowa Służy do określenia najmniejszej wartości własnej. [a][ x] [ x] [a]1[a][ x] [a]1[ x] [ x] [a]1[ x] [a]1[ x] 1 [ x] jest wartością własną macierzy odwrotnej [a] -1. Zatem równanie iterowane ma postać: [ x]k 1 [a]1[ x]k Liczenie macierzy odwrotnej jest nieefektywne obliczeniowo. Lepsza postać tego równania: [a][ x]k 1 [ x]k A to już rozwiązujemy np. metodą LU. Dekompozycja QR Idea: 1. 2. Macierze podobne mają te same wartości własne. Wartości własne macierzy trójkątnej górnej to elementy leżące na przekątnej głównej. Zatem spróbujmy przekształcić naszą macierz, na macierz podobną, która jest macierzą trójkątną górną. Definicja: Dwie macierze kwadratowe A i B nazywamy macierzami podobnymi, jeśli istnieje taka macierz nieosobliwa P, że zachodzi związek: B P 1 AP Definicja: Macierz Q jest ortogonalna, jeśli wektory qi utworzone z jej kolumn mają długość 1 i są wzajemnie prostopadłe. Czyli, Q = [q1, …, qn], dla każdego j mamy |qj| = 1 oraz qi*qj = 0 dla i j. QT Q I QQ T I Q T Q 1 Transformacje ortogonalne nie zniekształcają obrazów (odpowiadają za rotacje i odbicia). Podstawowa idea dekompozycji QR polega na utworzeniu iterowanej sekwencji macierzy {[Ai]} podobnych do pierwotnej macierzy [A], które zbiegają do takiej postaci, której wartości własne są dostępne. Twierdzenie: Niech [A]Rnxn i niech |1| > … > | n| > 0. Wtedy sekwencja {[Ai]} dana poniższym algorytmem zbiega do macierzy trójkątnej górnej. Algorytm [A]1 = [A] for k = 1..kmax [A]k = [Q]k[R]k [A]k+1 = [R]k[Q]k Zwróćmy uwagę, że [A]k = [Q]k[R]k [Q]kT[A]k = [Q]kT [Q]k[R]k [R]k = [Q]kT[A]k [A]k+1 = [R]k[Q]k [A]k+1 = [Q]kT[A]k[Q]k Czyli [A]k+1 i [A]k to macierze podobne. Macierz Householdera Macierz Householdera H zwana również refleksją (odbiciem) symetryczna i ortogonalna macierz przekształcenia wektora, które odbija go względem pewnej płaszczyzny. Metoda Householdera H jest najczęściej używaną metodą dekompozycji QR. 2 [ H ] [ I ] T [v][v]T [v ] [v ] [ H ][ x] [ x]' Schemat dekompozycji przy pomocy macierzy Householdera Wektor odbicia [v] musi zapewnić następujący ciąg przekształceń macierzy [A]: 1. Weźmy pierwszą kolumnę i znajdźmy wektor [v] taki, aby pierwszy wektor (kolumna) macierzy [H]1[A] miał tylko jedną składową. x x x x x x x x x x x x x x x x 0 0 0 x' x' x' x' x' x' x' x' x' x' x' x' [H]1[A] [A] 2. Kolejny wektor [v] powinien zmienić drugą kolumnę macierzy [H]1[A] (tak, by kolumna ta w nowej macierzy [H]2[H]1[A] miała tylko dwie składowe) i jednocześnie zachować postać pierwszej kolumny [H]1[A], x' x' x' 1 x' ' x' ' 0 x' x' x' 0 x' ' x' ' 2 0 0 3. I tak dalej… x' x' x' x' x' x' [H]1[A] 0 0 0 0 x' ' x' ' x' ' x' ' [H]2[H]1[A] Taką transformację zapewnia wektor: [v] [ai ] ai [e] gdzie • wektor [ai] – jest i-tą kolumną aktualnie przekształcanej macierzy z zerami w wierszach od 1 do i-1 • ||ai|| - jest długością (normą) wektora [ai] • wektor [e] – wektor zerowy, którego i-ty element jest równy 1. Przykład 1 2 1 [A] 1 4 5 1 4 1 2.73 [v]T [v] [2.73 1 1] 1 9.46 1 1 1 2.73 [v] 1 3 0 1 1 0 1 2.73 7.46 2.73 2.73 [v][v]T 1 [2.73 1 1] 2.73 1 1 1 2.73 1 1 1 0 0 7.46 2.73 2.73 0.58 0.58 0.58 2 2 0.58 0.79 0.21 [ H ] [ I ] T [v][v]T 0 1 0 2 . 73 1 1 [v ] [v ] 9.46 0 0 1 2.73 1 1 0.58 0.21 0.79 0.58 0.58 0.58 1 2 1 1.73 5.77 2.89 [ H ][ A] 0.58 0.79 0.21 1 4 5 0 1.15 4.31 0.58 0.21 0.79 1 4 1 0 1.15 0.31 [v] [a]1 [H][a]1 1.73 5.77 2.89 [ H ][ A] 0 1.15 4.31 0 1.15 0.31 0 [v]T [v] [0 2.79 1.15]2.79 9.10 1.15 0 0 0 [v] 1.15 2.64 1 2.79 1.15 0 1.15 0 0 0 0 [v][v]T 2.79[0 2.79 1.15] 0 7.77 3.22 1.15 0 3.22 1.33 0 0 1 0 0 1 0 0 0 2 2 0 0.71 0.71 [ H ] [ I ] T [v][v]T 0 1 0 0 7 . 77 3 . 22 [v ] [ v ] 9.10 0 0 1 0 3.22 1.33 0 0.71 0.71 0 0 1.73 5.77 2.89 1.73 5.77 2.89 1 [ H ]2 [ H ]1[ A] 0 0.71 0.71 0 1.15 4.31 0 1.63 3.26 0 0.71 0.71 0 1.15 0.31 0 0 2.83 H n H 2 H1 A R H1H 2 H n H n H 2 H1 A H1H 2 H n R H jest symetryczna zatem Q H n H nT H jest ortogonalna zatem H nT H n1 czyli Hn Hn I Ostatecznie: A QR Zatem rozłożyliśmy macierz A na macierz ortogonalną i macierz trójkątną. [A]1 = [A] for k = 1..kmax [A]k = [Q]k[R]k [A]k+1 = [R]k[Q]k Zatem to właśnie zrobiliśmy. Rzeczywiste wartości własne: 7.464 ; -2 ; 0.535 Przykład: widmo wibracyjne acetylenu kCH 5.92 102 kg / s 2 kCC 15.8 102 kg / s 2 mH 1amu mC 12amu amu 1.6605 10 27 kg x j A j e i t d 2 x1 mH kCH x1 kCH x2 dt 2 d 2 x2 mC kCH x1 (kCH kCC ) x2 kCC x3 dt 2 d 2 x3 mC kCC x2 (kCH kCC ) x3 kCH x4 2 dt d 2 x4 mH kCH x3 kCH x4 2 dt 12 4.05 10 29 3.86 10 Wartości własne : 2 2 29 32 1.39 10 29 1 5.05m 2 2.96m 3 3.03m 2c 42 1.2 1013 Wektory własne : H -- C -- C -- H v1 0.7 0.09 0.09 0.7 3.0 2.5 v2 0.7 0.06 0.06 0.7 2.0 1.5 v3 0.6 0.37 0.37 0.6 1.0 0.5 v4 0.5 0.5 0.5 0.5 0.0 1.0 1.5 2.0 2.5 3.0 3.5 4.0 v1 0.7 0.09 0.09 0.7 v2 0.7 0.06 0.06 0.7 v3 0.6 0.37 0.37 0.6 v4 0.5 0.5 0.5 0.5