Está en la página 1de 5

Algoritmos de Google: El Page Rank

Method for node ranking in a linked database

(Mtodo para la jerarquizacin de nodos en una base de datos enlazada) La patente ms famosa de Google es una de las principales ventajas competitivas que permiti a esta compaia aplastar a sus competidores en el campo de las busquedas en internet y hacerse el gigante que son hoy*. El Page Rank, como todos la conocemos, es una idea genial para hallar el valor o "importancia" que tiene una pgina web determinada. Esta "importancia" se emplea despus para mostrar los resultados de mayor calidad cuando realizamos una bsqueda en Google. La calidad de los resultados de Google empleando este mtodo (combinado, por supuesto, con otros algoritmos) es lo que nos hizo a todos abandonar nuestros antiguos buscadores (Altavista, Metacrawler) y pasarnos al buscador de Larry y Sergei. Aqu en The Smoke Sellers estamos un poco quemados con el hecho haber bajado de Page Rank y hemos estado intentando hincarle el diente estos das. En este post vamos a explicar el algoritmo hasta el final intentando emplear la cantidad mnima de matemticas posibles. (*) goran opina que otra de las principales ventajas competitivas de Google fue llenar una piscina olimpica de sangre de nios no bautizados y ofrecer su buscador a Satan. Si alguna vez te has interesado por el tema, habras leido que: 1. La "importancia" de una pgina web slo depende de las paginas web que la enlazan. Si tienes una pgina web y esta es enlazada desde pginas importantes (de alto Page Rank, pongamos www.microsiervos.com) t recibiras una parte de esa importancia. Todas las pginas que enlaces desde tu pgina web (ese blog de tu colega con solo dos posts, por ejemplo) recibiran, a su vez, una parte de la importancia de TU pgina. Para ser ms exactos: 2. Una pgina web reparte por igual su importancia entre todas las pginas a las que enlaza. Es decir: Si te enlaza una pgina importante que enlaza 3 o 4 pginas a parte de la tuya es mucho mejor que si te enlaza una pgina igual de importante que enlace 30 o 40 (toca ms Page Rank a repartir). Tambien habras oido hablar de los Spiders (araas). Esto no son ms que veloces programas automticos que van recorriendo internet como si fuesen un usuario humano, pulsando todos los enlaces posibles, extendiendose as por la "red" (de ahi el nombre) y creando un mapa de la misma. Asi que tenemos: 3. Los Spiders proporcionan a Google un mapa de la red donde se puede ver qu pgina apunta a que pgina

Esto no significa que sepamos ya el Page Rank. De hecho, todo esto es muy bonito pero como leches calculamos el Page Rank?. Por qu pgina empezamos?. Suponiendo que empezasemos por una, si no tenemos el Page Rank de las que enlazan a esta, como podemos calcular algo?. Y lo que es peor: En internet hay venticincomil millones de pginas apuntandose unas a otras (nmero subiendo rpidamente), cmo crear un algoritmo que sea capaz de lidiar con semejante brutalidad de enlaces. En el peor caso todas las pginas se apuntan entre si y el numero total de enlaces es de venticincomil millones, al cuadrado!!. Aqui es donde realmente llega la artilleria matemtica. Prometemos que si sabes lo que es una matriz, como se suman y como se multiplican (y tienes un poco de fe) ya puedes entender el algoritmo de Larry y Sergei hasta el final. La Matriz de reparto de Page Rank H Vale, no sabemos cual es el page Rank de ninguna pgina antes de empezar, pero si hay una cosa que sabemos: Cuanto de su desconocido Page Rank reparte una pgina entre las pginas que enlaza. Por lo dicho en (2), si una pgina enlaza 5 pginas transmitira un 1/5 de su Page Rank a cada una. Debido a (3) el nmero de pginas que enlaza cada pgina lo sabemos. Es ms, podemos construir una tabla H de veinticinco mil millones de filas por veinticinco mil millones columnas (no, no cabe en un A4), que contenga todos los enlaces posibles. Para dos pginas cualesquiera (una como enlazadora y la otra como enlazada) tenemos un recuadro de la tabla que nos indica que proporcin del Page Rank transfiere la enlazadora a la enlazada. Para orientarnos un poco: La diagonal de esta tabla representara lo que la pgina se transmite a si misma (si se enlazase). Cualquier recuadro por debajo de la diagonal y su simetrico por encima de la diagonal indican respectivamente lo que se transmiten dos pginas cuando una actua como enlazadora y la otra como enlazada y viceversa. Si una pgina no enlaza a otra, se pone un 0 en el recuadro (lgicamente no le puede transmitir nada de Page Rank). Matriz (Vector) Invariante I Lo que viene a continuacin no es idea de Larry Page o Sergei Brin, hace un siglo que se conoce, pero si que requiere la poca de fe que te pedimos reservar. Esta tabla (lease Matriz), que hemos creado con la ayuda de la informacin proporcionada por los Spiders, representa en realidad la dificultad (o facilidad) para el "flujo" de Page Rank de una pgina a otra. Podemos ver el flujo como agua que pasa con menor o mayor dificultad de una pgina a otra de acuerdo al valor correspondiente al recuadro de la tabla H. Este agua/transferencia de Page Rank fluira de una pgina a otra a traves de sus enlaces sin cesar y eventualmente podra llegar a un equilibrio (si no llegase no habria Page Rank alguno). Pues bien las matemticas, concretamente el teorema de Ruelle-PerronFrobenius (ingles) nos garantiza lo siguiente: 4. Bajo determinadas condiciones, que veremos, se acabar alcanzando ese equilibrio. No es que Frobenius (ingles) supiese lo que es una pgina web en 1900, si no que el problema es matemticamente idntico a un conocido problema de dinmica de sistemas (ingles). Luego, hay gente que dice que Larry y Sergei son licenciados en filosofa.

5. El equilibrio queda representado por el vector invariante I. Esto es: Una tabla de una sola columna (una matriz, ms concretamente vector) de venticincomil millones de valores, que cumple que al multiplicarla por la matriz de reparto H nos da otra vez ella misma (I). Lo que expresaramos:

Este vector invariante I de venticincomil millones de valores, que casualidad, uno para cada pgina web, es el Page Rank. Faltar refinarlo, escalandolo de 1 a 10, y discretizarlo para que no de valores intermedios. Intuyo que el valor discretizado (1 a 10 sin decimales), que se muestra en la google toolbar, es solo de cara al publico e internamente emplearan los decimales que salgan tambin. S, muy guay pero y lo de las 25.000.000.000 pginas? Cierto, cierto. La gente que haya sufrido algebra de primero habra reconocido a I como un vector propio de valor propio 1 de la matriz H. Y seguramente recordar con horror que para calcularlo hay que resolver un polinomio que en este caso tendra grado 25.000.000.000. Vamos no lo calculamos asi ni de blas. Afortunadamente, sobre todo para las personas a las que lo anterior les ha sonado a chino, existe un mtodo para calcular I iterativamente (en pasos sucesivos) y muy muy sencillo. Tan sencillo que consiste en que nos inventamos una tabla de 25.000.000.000 valores del Page Rank a voleo (un vector I0 creado aleatoriamente), lo multiplicamos por H y el resultado ser otra tabla de 25.000.000.000 valores I1 pero ms cercanos al valor correcto del vector invariante I. Reptase esto un monton de veces hasta que el resultado de multiplicar por H ya no produzca nigun cambio y ya est. Ya tenemos el vector invariante. Este algoritmo, que se llama el mtodo de las potencias (ingles), se expresara matemticamente asi:

Donde k no es ms de que el ndice que indica cuantas veces hemos multiplicado por la matriz H. El primer vector, que creariamos a boleo sera k = 0, el segundo, procedente de mutiplicar por H sera k =1, etc. Para expresar de forma general que cada trmino se obtiene mediante una transformacion del anterior se emplean los ndices k+1 y k. Hay que tener en cuenta que los mtodos iterativos tienen la ventaja de que no necesitamos acumular demasiados valores, lo cual reduce la cantidad de memoria que necesitamos para computar el Page Rank y acelera todo el proceso de clculo. Siguen siendo una burrada de nmeros pero al menos es factible. Gran problema Que facil, no?. Obviamente falla algo y ese algo es el punto (4). Resulta que no se cumplen las condiciones de convergencia del teorema Ruelle-PerronFrobenius. Es decir que aplicando el mtodo arriba explicado no hay garanta de que lleguemos al vector invariante. No entrar en detalles, no hace falta. Utilizando la analoga del "flujo" de Page Rank se puede entender perfectamente que es lo que falla y como se puede solucionar. Pgina Sumidero:

Qu ocurre cuando el flujo de Page Rank llega a una pgina como la 2 que no tiene enlaces a nign sitio?. Pues simplemente que no sale de ahi. Esa pgina se vuelve un sumidero de Page Rank y el algoritmo dar resultados incorrectos. Como lo resolvemos?. Si hacemos la pgina 2 enlace todas las pginas de la web por igual (imagina millones de pequeas flechas saliendo de 2 hacia todas ls pginas), esto dar salida al flujo de Page Rank pero la influencia en los resultados es minima, puesto que cada pgina recibe solo 1/25.000.000.000 del Page Rank de 2. Matemticamente, esto equivale a sumarle a H una matriz A que tenga todo 0s menos en las columnas de las pginas sumidero que tendrn toda la columna llena de 1/25.000.000.000. De esta forma en vez de la matriz H emplearamos la matriz S=H+A en el mtodo de las potencias. Red-Sumidero:

Un caso similar es el de las sub-redes de pginas dentro de la red, como la 5-7-6-8, que no tienen enlaces de vuelta. Estas redes se convierten en redes-sumidero. El problema es que estas pginas s enlazan otras pginas y no podemos simplemente cargarnos esa informacin y enlazar todas las pginas de la red desde ellas. Para dar salida al flujo de Page Rank, vamos a recurrir a una solucin al ms puro estilo "ingeniero". Gran solucin Necesitamos garantizar la salida del flujo de Page Rank de cualquier pgina o sub-red, es decir, que toda pgina apunte a otra pgina. No nos vale con crear un enlace a cualquier pgina a boleo porque (a parte de estar falseando el Page Rank), si resulta en una red cerrada como 5-7-6-8 no hemos solucionado nada. Ahora, imaginemos un caso ideal en donde todas las pginas apuntasen a todas las pginas. Ahi el Page Rank siempre tendra algn enlace por donde escapar, incluso de las sub-redes, y el algoritmo funcionara. Pero claro, se perdera toda la jerarquia que dan los enlaces, la matriz de reparto tendra todos sus elementos iguales a 1/25.000.000.000 y todas las pginas tendran el mismo Page Rank.

Pues nada, sumo la matriz de reparto real, calculada con la informacin de los Spiders con la ideal en la que todas las pginas se apuntan entre si y lo divido por dos. La matriz resultante tendr siempre enlaces saliedo de cada pgina y tenemos el flujo de Page Rank garantizado. Que al mezclar a partes iguales la matriz real y la ideal me salen los resultados demasiado aleatorios? (por inlfuencia de la ideal). Bueno, pues en vez de mitad y mitad las mezclo con 85% de la matriz real y un 15% de la ideal y pista. Y ya esta seores. Con ustedes la famosa matriz de Google:

Donde recordemos que S=H+A es la matriz real con el problema de los sumideros individuales resuelto, 1/n1, con n = 25.000.000.000 es la matriz ideal y = 0.85 nos da la citada mezcla al 85%. Algn lector avispado puede decir: Pero el meter ahi un 15% de aleatoriedad, no falsea de alguna manera el Page Rank? Bienvenido al mundo de la ingeniera chaval!. Para terminar si empleamos G en vez de H en el mtodo de las potencias y jugamos un poco con los trminos obtenemos la formula que apareca al principio del post. Empleando la frmula a la derecha del igual obtendremos cada nuevo vector Ik+1 en cada iteracin.

Anotaciones finales Este artculo esta confeccionado a partir de esta maravillosa pgina (ingles) (de la que tambin tom "prestadas" las imgenes) y la imprescindible ayuda de la Wikipedia. En la pgina tambien hay enlaces a los pdf originales de Larry y Sergei asi como a algn libro sobre el tema. Si alguien se toma la molestia de echarle un vistazo, ahi van algunas aclaraciones: - El valor ptimo del parmetro se determina experimentalemente y regula tambin la velocidad de convergencia del metodo de las potencias, a mayor porcentaje de matriz real, menor velocidad de convergencia. Google dice que con basta con k=50-100 iteraciones para calcular el Page Rank, cosa que tarda varios das. Imagino que trabajando con varios ordenadores en paralelo. Esto se conoce como Google Dance y en TSS no nos hace ni puta gracia. - Matemticamente, la condicin de convergencia del algoritmo empleado por Google es que todos los elementos de la matriz de reparto de Page Rank sean estictamente mayores que 0, cosa que cumple la chapucilla que acabamos de ver. Esto no es una condicin de convergencia del metodo de las potencias si no una condicin para la existencia del vector invariante segn el teorema de Ruelle-PerronFrobenius.