martes, 28 de febrero de 2012

Matematicas detras de Google.

Si bien Google no es el único buscador existente para manejar la enorme cantidad de datos de la gran red, sí que parece ser que por unas razones o por otras (no precisamente azarosas) se ha convertido en el más utilizado por los usuarios hasta el punto de ser una de las páginas de inicio más habituales. Pero, ¿por qué Google y no Yahoo por ejemplo? Si bien no trataré de dar razones de por qué uno trabaja de forma más eficiente que otro, sí que trataré de dar una idea de las bases en las que se fundamenta la búsqueda y el algoritmo de ordenación utilizado por el gran líder del mundo de internet.

 


Aunque el contexto de las páginas web parezca bastante familiar, trataré de establecer la analogía con el mundo de las redes sociales. El problema a la hora de ordenar un conjunto de páginas web estriba en saber de qué manera podemos priorizar las páginas web que conforman el resultado; en una red social como puedan ser Facebook o Twitter sería equivalente a ordenar una serie de personas. Si buscamos entre todas las personas que se llamen “Antonio”, lo más lógico es que todos los Antonios aparezcan por orden de influencia dentro de la red. Si la red social estuviese compuesta únicamente por los personajes públicos del país, tristemente, uno de los personajes que se situaría en la zona alta del ranking sería (tristemente) Belén Esteban. La idea de influencia es que si una persona (o una web) está muy relacionada con el resto de usuarios de la red social (análogamente con el resto de páginas web), esto se verá reflejado con un mejor posicionamiento en las búsquedas.

 

Ahora bien, ¿cómo interpreta google si una página web está muy interconectada con el resto de webs? Es tan sencillo como ver cuántas páginas apuntan a dicha web. Sin embargo, podríamos pensar que esto no se ve reflejado si buscamos palabras como Windows o Apple, pues seguramente haya páginas con más enlaces entrantes que las propias de Microsoft y Apple y satisfagan los valores de la búsqueda. Para solucionar esto Google no valora todos los enlaces por igual, sino que valora la calidad del enlace. En el contexto anteriormente utilizado, si tenemos únicamente dos Antonios en nuestra hipotética red social, mostraría como primer resultado a aquel que tuviese a su vez unos amigos más influyentes dentro de la red. Como podemos observar, esta maraña de datos puede resultar realmente inmensa ya que existen muchas relaciones entre los miembros de la red.
Y para solucionar este problema hemos de recurrir a las matemáticas, en concreto a la infinidad de ventajas que nos ofrece trabajar con matrices y con sus múltiples propiedades. Si definimos una matriz cuadrada de dimensión n (donde n es el número total de páginas web), el valor a_{ij} tomará valor 1 si la página web j-ésima enlaza a la página web i-ésima, y tendrá valor 0 en caso de no enlazar. Una vez definida toda la matriz, dividimos cada fila por la suma total de la fila, es decir, si la fila i tiene cinco entradas con valor 1, dividiremos cada entrada de la fila por 5. De esta forma obtenemos una matriz A que tiene la propiedad de ser estocástica (todas sus filas suman 1). Pero no olvidemos qué significado natural tiene esto, al definir de esta manera la matriz, estamos representando la probabilidad de, partiendo de una página web, acabar en otra haciendo click en uno de los hipervínculos de la misma. Esto es lo que se conoce como una matriz de paso, si la multiplicamos por si misma sucesivas veces, conseguimos una nueva matriz de probabilidades que representa la probabilidad de, partiendo de una página web “r”, acabar en la página web “s” después de exactamente tantos pasos como veces hayamos multiplicado por si misma la matriz A.
De esta forma tenemos cubierta la parte en que un navegante vaya pasando de una web a otra únicamente haciendo click en los diferentes links que vaya encontrando. Pero cabe la posibilidad de que el navegante se canse de ir navegando de web en web y acceda directamente a otra fuera de los links que nos muestran en pantalla. Para representar esta situación, definimos una matriz B en la que cada entrada toma el valor \frac{1}{n}. De esta forma la probabilidad de, partiendo de una web, accedamos a otra es siempre la misma, independiente de dónde nos encontremos.
Ahora bien, qué hacemos con las dos matrices, o qué hace google en esta situación. Google le asigna un peso a cada una de ellas, de forma que la suma de ambos pesos sea idénticamente 1. En concreto, el peso de la matriz A es de aproximadamente 0’85 y el de la matriz B 0’15, esto es que en el 85% de los casos el usuario hará caso de los links visibles, mientras que en el otro 15% iniciará una nueva navegación. Esta nueva matriz es estocástica y positiva (todas sus entradas son positivas), con lo que cumple las condiciones del Teorema de Perron-Frobenius:
Si B es una matriz con todas sus entradas no negativas, entonces existe un autovector c de entradas todas positivas de forma que su módulo es 1.
Por no complicar más los conceptos, este vector c nos da la ordenación de las páginas web, si por ejemplo tenemos que c=(0.2,0.5,0.3) la página web número 2 será la primera en aparecer en el buscador, después la número 3 y por último la número 1. Así, cada vez que hacemos una búsqueda, Google accede a este vector c, obtiene el orden de muestreo de las páginas web, a esto le debemos añadir si el término buscado está en el nombre de la propia página, si está en mayúscula, en negrita etc… pero a grandes rasgos, Google ordena las páginas web atendiendo al criterio expuesto anteriormente.
Por volver al ejemplo recurrido al inicio, utilizando este algoritmo para aplicarlo a las redes sociales, sustituyendo los links por los contactos, podemos obtener la ordenación de los contactos según su influencia con el resto de la red social.