Ich versuche, ein Problem mit der Theorie der Implementierung des PageRank mit MapReduce zu lösen.
Ich habe das folgende einfache Szenario mit drei Knoten: A B C.
Die Adjazenzmatrix ist hier:
%Vor%Der PageRank für B ist zum Beispiel gleich:
%Vor%Mir geht es gut mit allen Schaltplänen und wie der Mapper und Reducer funktionieren würde, aber ich kann nicht verstehen, wie C (A) zum Zeitpunkt der Berechnung durch den Reducer bekannt sein würde. Wie wird der Reducer bei der Berechnung des PageRank von B durch Zusammenfassung der eingehenden Links zu B die Anzahl der ausgehenden Links von jeder Seite wissen. Benötigt dies eine Suche in einer externen Datenquelle?
Hier ist ein Pseudocode:
%Vor%Es ist wichtig, dass Sie in der Verkleinerung Outlinks und nicht Inlinks ausgeben sollten, wie einige Artikel im Intent vorschlagen. Auf diese Weise haben die aufeinanderfolgenden Iterationen auch Outlinks als Eingabe des Mappers.
Achten Sie darauf, dass mehrere Outlinks mit derselben Adresse von derselben Seite als eins gezählt werden. Zählen Sie auch keine Loops (Seite mit sich selbst verlinken).
Der Dämpfungsfaktor beträgt traditionell 0,85, obwohl Sie auch mit anderen Werten spielen können.
Eine detaillierte Erklärung mit Python-Code , von Michael Nielsen.