# Google-Matrix

Die Google-Matrix ist eine quadratische Matrix, die bei der Konstruktion des PageRank-Algorithmus entsteht. Da sie oftmals sehr groß ist (mit vielen Millionen Zeilen und Spalten), sind die numerischen und algebraischen Eigenschaften dieser Matrix für die schnelle und exakte Bestimmbarkeit der PageRanks von großer Bedeutung.

## Definition

Die normierte Google-Matrix eines Netzwerks oder gerichteten Graphen mit $n$ Knoten ist die reelle $n\times n$-Matrix:
    $P:=d\left(L+{\tfrac {1}{n}}\mathbf {w} \!\cdot \!\mathbf {1} ^{T}\right)+(1-d){\tfrac {1}{n}}\mathbf {1} \!\cdot \!\mathbf {1} ^{T}$
Die einzelnen Komponenten der Google-Matrix sind dabei folgendermaßen definiert:
* Die Linkmatrix $L$ ist die zeilenweise auf $1$ normierte Adjazenzmatrix $A=(a_{ij})$ des untersuchten Graphen:
       $l_{ij}:={\begin{cases}{\frac {1}{c_{i}}}&{\text{falls}}\;a_{ij}=1\\0&{\text{sonst}}\end{cases}}$
    wobei $c_{i}$ der Ausgangsgrad des Knotens $i$ ist, also die Anzahl der Kanten, die den Knoten $i$ verlassen.
* Der Vektor $\mathbf {w}$ ist komponentenweise definiert als
       $w_{i}={\begin{cases}1&{\text{falls}}\;c_{i}=0\\0&{\text{sonst}}\end{cases}}$
    Er enthält also genau dann eine Eins, wenn der Ausgangsgrad einer Seite bzw. eines Knotens null ist. Diese Knoten werden auch dangling nodes genannt. In der Literatur gibt es verschiedene Methoden, diese Knoten zu behandeln, die hier behandelte ist die häufigste.
* $d$ ist eine reelle Zahl zwischen $0$ und $1$, die Dämpfungsfaktor genannt wird
* $\mathbf {1}$ ist ein Einsvektor der Länge $n$, also ein Vektor, der nur Einsen als Einträge hat. Damit ist die Matrix $\mathbf {1} \!\cdot \!\mathbf {1} ^{T}$ genau die Einsmatrix.

## Eigenschaften
### PageRank

Zur Berechnung der PageRanks ist man insbesondere an der Existenz und Vielfachheit von Linkseigenvektoren der Matrix $P$ interessiert. Diese entsprechen genau den gewöhnlichen Eigenvektoren der Matrix $P^{T}$ zum Eigenwert $1$. Interpretiert man das Eigenwertproblem
    $P^{T}\!\cdot \!\mathbf {x} =\mathbf {x}$
als Berechnung der stationären Verteilung einer Markow-Kette, so ist der Vektor $x$ ein stochastischer Vektor bestehend aus den PageRanks. Damit reduziert sich das Eigenvektorproblem zu dem linearen Gleichungssystem
    $\left(I-d\left(L+{\tfrac {1}{n}}\mathbf {w} \!\cdot \!\mathbf {1} ^{T}\right)^{T}\right)x=(1-d){\tfrac {1}{n}}\mathbf {1}$.
Um dieses lineare Gleichungssystem effizient lösen zu können, stellt sich die Frage nach der Regularität der Matrix und ihrer Konditionszahl.

### Normen

Sowohl die Matrix $L$ als auch die Matrix ${\tfrac {1}{n}}\mathbf {w} \!\cdot \!\mathbf {1} ^{T}$ sind im Allgemeinen nur substochastisch. Addiert man beide, so erhält man eine zeilenstochastische Matrix, da sich die Nichtnullzeilen der Matrizen ergänzen. Da auch ${\tfrac {1}{n}}\mathbf {1} \!\cdot \!\mathbf {1} ^{T}$ zeilenstochastisch ist (streng genommen sogar doppelt-stochastisch) und durch den Dämpfungsparameter nur Konvexkombinationen gebildet werden (bezüglich derer die stochastischen Matrizen abgeschlossen sind), ist die Google-Matrix ebenfalls eine zeilenstochastische Matrix. Damit gilt für die Zeilensummennorm der Google-Matrix
    $\Vert P\Vert _{\infty }=1$
und damit auch für die Spaltensummennorm der Transponierten
    $\Vert P^{T}\Vert _{1}=1$.

### Eigenvektoren und Eigenwerte

Die Existenz eines Eigenvektors von $P^{T}$ zum Eigenwert $1$ folgt direkt daraus, dass die Matrix eine stochastische Matrix ist. Dass $1$ sogar betragsgrößter positiver Eigenwert ist, zu dem ein einfacher strikt positiver Eigenvektor existiert, folgt aus dem Satz von Perron-Frobenius, da $P^{T}>0$ gilt. Wichtig ist hier, dass erst die Einführung des Dämpfungsparameters die Positivität der Matrix und damit die Lösbarkeit des Eigenwertproblems garantiert.
Des Weiteren lässt sich noch zeigen, dass $|\lambda _{i}|\leq d$ für alle anderen Eigenwerte gilt. Die Separation der Eigenwerte wird also nur durch den Dämpfungsparameter bestimmt. Damit ist für viele der numerischen Verfahren zur Eigenwertberechnung, wie beispielsweise die Potenzmethode, eine gute Konvergenzgeschwindigkeit garantiert, so lange der Dämpfungsfaktor nicht zu nahe an $1$ gewählt wird. Normalerweise gilt $d\approx 0{,}85$.

### Regularität und Kondition

Da
    $\Vert d(L+{\tfrac {1}{n}}\mathbf {w} \!\cdot \!\mathbf {1} ^{T})^{T}\Vert _{1}=d<1$
gilt, liefert die Neumann-Reihe die Invertierbarkeit der Matrix
    $K:=(I-d(L+{\tfrac {1}{n}}\mathbf {w} \!\cdot \!\mathbf {1} ^{T})^{T})$.
Somit ist das Problem als lineares Gleichungssystem lösbar. Gleichzeitig gilt auch für die Norm der Inversen
    $\Vert K^{-1}\Vert _{1}\leq {\frac {1}{1-d}}$
und damit für die Konditionszahl die Abschätzung
    $\kappa _{1}=\Vert K\Vert _{1}\Vert K^{-1}\Vert _{1}\leq {\frac {1+d}{1-d}}$.
Somit ist nur die Wahl des Dämpfungsparameters für die Kondition verantwortlich und sollte wieder nicht zu nahe an $1$ gewählt werden.

## Numerische Berechnung des Eigenvektors

Der betragsgrößte Eigenvektor der Google-Matrix wird normalerweise mittels der Potenzmethode näherungsweise bestimmt. Dabei wird ausgehend von einer Startnäherung $b_{0}$ in jedem Iterationsschritt das Matrix-Vektor-Produkt der Google-Matrix mit der aktuellen Näherung des Eigenvektors $\mathbf {b} _{k}$ gebildet. In jedem Iterationsschritt ist demnach
    $P^{T}b_{k}=dL^{T}\!\cdot \!\mathbf {b} _{k}+d{\tfrac {1}{n}}\mathbf {1} \!\cdot \!\mathbf {w} ^{T}\!\cdot \!\mathbf {b} _{k}+(1-d){\tfrac {1}{n}}\mathbf {1}$
zu berechnen. Ist die Startnäherung ein stochastischer Vektor, dann ist auch jeder folgende Näherungsvektor stochastisch. Nachdem die Eigenwerte der Google-Matrix gut separiert sind, ist eine langsame Konvergenzgeschwindigkeit der Potenzmethode ausgeschlossen.
Bei der Berechnung kann die spezielle Struktur der Google-Matrix ausgenutzt werden. Die Linkmatrix $L^{T}$ ist in der Regel extrem dünn besetzt, das heißt fast alle ihre Einträge sind null. Dadurch kann sie zum einen sehr platzsparend gespeichert werden und zum anderen sehr effizient mit einem Vektor multipliziert werden. Auch der Vektor $w$ ist in der Regel dünn besetzt, wodurch sich der Term $\mathbf {1} w^{T}b_{k}$ ebenfalls sehr schnell berechnen lässt.

## Beispiel

Betrachtet man als Beispiel den rechts stehenden gerichteten Graphen mit 8 Knoten, so sind die Knoten 5 und 6 dangling nodes. Dann ist die zeilenweise normierte Adjazenzmatrix
    $L={\begin{bmatrix}0&0&1&0&0&0&0&0\\0{,}5&0&0&0&0&0{,}5&0&0\\0&0&0&0{,}5&0{,}5&0&0&0\\0&0{,}5&0&0&0&0&0{,}5&0\\0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&0\\0&0&0&0&0&0&0&1\\0&0&0&0&0&0&1&0\\\end{bmatrix}}$
und der Vektor
    $w={\begin{bmatrix}0&0&0&0&1&1&0&0\end{bmatrix}}^{T}$.
Dann ist mit der obigen Konstruktion und einem Dämpfungsparameter von $d=0{,}8$
    $P={\frac {1}{40}}{\begin{bmatrix}1&1&33&1&1&1&1&1\\17&1&1&1&1&17&1&1\\1&1&1&17&17&1&1&1\\1&17&1&1&1&1&17&1\\5&5&5&5&5&5&5&5\\5&5&5&5&5&5&5&5\\1&1&1&1&1&1&1&33\\1&1&1&1&1&1&33&1\end{bmatrix}}$
Der Eigenvektor von $P^{T}$ zum Eigenwert 1 ist dann
    $x=(0{,}0675;0{,}0701;0{,}0934;0{,}0768;0{,}0768;0{,}0675;0{,}2825;0{,}2654)^{T}$.
Damit haben die Knoten 7 und 8 die höchsten PageRanks (0,2825 und 0,2654) und die Knoten 1 und 6 die niedrigsten (je 0,0675). Der betragszweite Eigenwert ist $\lambda _{2}=-0{,}8$, die obige Abschätzung ist also scharf. Des Weiteren ist die Konditionszahl
    $\kappa _{1}=9={\frac {1+0{,}8}{1-0{,}8}}$,
auch diese Abschätzung ist also scharf.