¿Cómo se calcula el PageRank? ¿Cuál fue el PageRank inicial? ¿Cómo comienza el algoritmo?

Descargo de responsabilidad: trabajo para Google en la búsqueda web, pero lo siguiente se basa en el documento de PageRank disponible al público.

Esta es una buena pregunta. Una respuesta concisa, “en inglés por favor” es que el algoritmo de PageRank se puede ver como un algoritmo iterativo. El algoritmo comienza en el paso uno con un PageRank inicial asignado a todas las páginas. Luego, el algoritmo se aplica de forma iterativa hasta que llega a un estado estable ; es decir, hasta que se haya distribuido un PageRank a todas las páginas y una iteración posterior del algoritmo proporcione poco o ningún cambio adicional en la distribución de PageRank. El PageRank inicial debe ser una función del número de páginas en el índice; en el documento original de PageRank es 1 / N para N páginas en el índice. Esta es la respuesta a su pregunta: el PageRank de todas las páginas se establece inicialmente en 1 / N.

Ejemplo: suponga que nuestro índice contiene cuatro páginas web; llámalos A , B , C y D. PageRank es una probabilidad, por lo que les asignaremos a cada uno una probabilidad inicial de 0.25 a 100% de probabilidad dividida por cuatro, para cuatro páginas web en nuestro índice. Supongamos que cada uno de B , C y D están vinculados a A. Centrémonos solo en la página A. Comenzaríamos con

[matemáticas] PR (A) = \ frac {1} {N} = 0.25 [/ matemáticas]

Luego, en la segunda iteración del algoritmo, tendríamos,

[matemáticas] PR (A) = PR (B) + PR (C) + PR (D) \, [/ matemáticas]

Cada uno de B , C y D transferiría su PageRank a A , produciendo,

[matemáticas] PR (A) = 0.25 + 0.25 + 0.25 = 0.75 [/ matemáticas]

Ahora consideremos un mundo menos trivial. Suponga que la página B está vinculada a las páginas A y C. Página D vinculada a las tres páginas ( A , B y C ). C no se vincula a A. Luego, en la segunda iteración, tendríamos:

[matemáticas] PR (A) = \ frac {PR (B)} {2} + \ frac {PR (D)} {3} [/ matemáticas]

Es decir, B transfiere la mitad de su PageRank existente a A , ya que se vincula a dos páginas ( A y C ). D transfiere un tercio de su PageRank existente a A , ya que se vincula a tres páginas ( A , B y C ). Así,

[matemáticas] PR (A) = 0.125 + \ frac {1} {12} = 0.20833… [/ matemáticas]

En términos más generales, el PageRank de una página es igual a la suma del PageRank de todas las páginas que enlazan a cada una dividido por el número de enlaces salientes en esas páginas. Es decir, si definimos L (u) como el número de enlaces salientes desde u , entonces,

[matemáticas] PR (A) = \ frac {PR (B)} {L (B)} + \ frac {PR (C)} {L (C)} + \ frac {PR (D)} {L (D )}[/mates]

O, generalizado, para cualquier página v :

[matemáticas] PR (v) = \ sum_ {u \ en O_v} \ frac {PR (u)} {L (u)} [/ matemáticas]

Donde [math] O_v [/ math] es el conjunto de páginas que enlazan con v .

Resumen: el PageRank de una página determinada comienza en algún valor inicial. En el documento público de PageRank, este valor es 1 / N para N páginas en el índice. Lo importante es que el valor es (a) igual para todas las páginas y (b) escala con el tamaño del índice. Ese valor luego se transfiere a otras páginas a través de sucesivas iteraciones del algoritmo PageRank hasta que se alcanza un estado estable.

PageRank puede comenzar con CUALQUIER valor. El algoritmo convergerá siempre con el vector propio principal de la matriz de PageRank y eso no depende de los valores iniciales que le dé a cada página.

Como otra respuesta dice que PageRank tiene que comenzar con valores iguales para cada página, mostraré que no es necesario.

Digamos que [math] A [/ math] es la matriz de PageRank y [math] x_0 [/ math] es un vector aleatorio . Mostraré que iterando [math] x_0 = A * x_0 [/ math] llegamos al mismo valor independientemente de [math] x_0 [/ math]

Como A es una matriz columna-estocástica (todas las columnas suman 1), el valor propio grande es 1 y el segundo valor propio es menor que 1.

Escribamos [math] x_0 [/ math] como una combinación lineal de los vectores propios de A: [math] x_0 = \ alpha_1 v_1 +… + \ alpha_n v_n [/ math]

Las matrices estocásticas se pueden diagonalizar de modo que:

Tenemos que [math] A * x_0 = \ alpha_1 \ lambda_1 v_1 +… + \ alpha_n \ lambda_n v_n [/ math]

Sabemos que el primer valor propio es 1 y es más grande que el segundo, por lo que repitiendo este proceso el primer término domina sobre todos los demás y después de varias iteraciones tenemos:

[math] A * x_0 = \ alpha_1 \ lambda_1 v_1 [/ math] dado que v1 es un vector propio, entonces [math] \ alpha_1 \ lambda_1 v_1 [/ math] también es un vector propio.

Esto se conoce como el “método de potencia” para encontrar el valor propio más grande del valor propio de un vector propio correspondiente de una matriz. En el caso de pagerank sabemos que el valor propio más grande es 1 porque la matriz es columna estocástica.

Conclusión: PageRank puede comenzar con una inicialización aleatoria de los pesos y eventualmente convergerá al vector propio asociado con el gran valor propio de la matriz que es 1 y es único.

Sabemos que existe una distribución estacionaria porque el valor propio más grande es 1, por lo tanto, [math] Av_1 = \ lambda_1 v_1 = v_1 [/ math] esto muestra que existe un vector como [math] Av = v [/ math], lo que significa que la distribución es estacionaria .

Observe que la suma del vector PageRank será constante en cada iteración, si su vector inicial suma 1, entonces el último vector puede tratarse como una distribución de probabilidad. Si su vector inicial suma 48, puede dividir cada pagerank entre 48 para llegar a la probabilidad.

Luis