Inteligência Artificial - Aula5 - PageRank

download

of 18

  • date post

    05-Dec-2014
  • Category

    Science
  • view

    110
  • download

    7

Embed Size (px)

description

Algoritmo PageRank utilizado pela Google para atribuir uma importncia numrica a cada n de um grafo.

transcript

  • 1. 03/09/14 Inteligncia Artificial PageRank
  • 2. Introduo Continuaremos com grafos, mas o objetivo agora no busca Agora queremos descobrir qual o n mais importante em um grafo, ou ordenar todos os ns por algum critrio de importncia 03/09/14
  • 3. Introduo Este tipo de algoritmo foi desenvolvido h dcadas por outras reas como biblioteconomia (para calcular a importncia de autores em grafos de citaes) Em 1998, foi publicado um artigo com aplicao especfica para ranquear pginas da web, o PageRank 03/09/14
  • 4. Introduo Apesar de ter sido concebido especialmente para pginas web, ele passou a ser aplicado em diversas reas, pois serve para qualquer grafo Ex.: sumarizadores automticos de texto, anlise de redes sociais, anlise de propagao de tumores, informtica forense, ecologia 03/09/14
  • 5. Introduo Nesta aula, veremos uma verso simplificada do PageRank, mais prxima do conceito geral de Cadeias de Markov e sem a necessidade de lgebra linear avanada 03/09/14
  • 6. PageRank 03/09/14
  • 7. PageRank 03/09/14
  • 8. PageRank O algoritmo PageRank consiste em atribuir um valor para um n de um grafo de acordo com quantas arestas chegam at ele (as chamaremos de votos), ponderadas pelo valor dos ns de origem Ex.: Um site X linkado por 1000 sites fracos pode ter um valor menor que o de um site Y linkado por um site Z forte Em outras palavras, ser linkado pelo Terra pode valer mais que ser linkado por 1000 blogs pessoais desconhecidos 03/09/14
  • 9. PageRank Mas se o valor de uma pgina depende do valor das pginas que linkam para ela, como calcular o valor dessas outras pginas? Poderia ser um loop infinito ou at uma recurso, mas felizmente pode ser simplificado 03/09/14
  • 10. PageRank Vamos iniciar todos os ns com o mesmo valor (1) e calcular o valor final dos ns em vrios passos Cada n manda um voto para cada um de seus vizinhos com um peso igual a PR/n, onde n o nmero de vizinhos e PR seu valor atual Cada vizinho recebe seus votos e os redistribui no passo seguinte Repita por um nmero grande de vezes k (ex.: 100) 03/09/14
  • 11. PageRank Inicialize vetor PR com n 1's, onde n o nmero de ns do grafo Repita k vezes //(ex.: k = 100) Para cada n i do grafo PR[i] 0 Para cada n j do grafo com link para i PR[i] PR[i] + PR[j] / numVizinhos(j) //Onde numVizinhos(j) o nmero de links saindo do n j Fim Para PR[i] PR[i] * d + (1 d) //d um parmetro entre 0 e 1, ex.: 0.85 Fim Para Fim Repita 03/09/14
  • 12. PageRank 03/09/14 Ex.: Considere o grafo ao lado Vamos usar um vetor de valores com um elemento para cada n: PR = [1, 1, 1, 1]
  • 13. PageRank 03/09/14 Todos comeam com valor 1 Agora vamos distribuir os votos igualmente entre os vizinhos de cada n e considerando d = 0.85
  • 14. PageRank 03/09/14 PR[A] 0.15 + 0.85 * (1/1) PR[B] 0.15 + 0.85 * () PR[C] 0.15 + 0.85 * ( + 1/1 + 1/1) PR[D] 0.15 + 0.85 * (0) Atualizando... PR = [1, 0.575, 2.275 0.15]
  • 15. PageRank 03/09/14 Repetimos com os novos valores PR[A] 0.15 + 0.85 * (2.275/1) PR[B] 0.15 + 0.85 * () PR[C] 0.15 + 0.85 * ( + 0.575/1 + 0.15/1) PR[D] 0.15 + 0.85 * (0) Atualizando... PR = [2.08375, 0.575, 1.19125, 0.15] 0.575 -------- 2.275 -------- 0.15 --------
  • 16. PageRank 03/09/14 Repetimos k vezes at que os valores estabilizem e obtemos o resultado final: PR = [1.49, 0.783, 1.577, 0.15]
  • 17. PageRank 03/09/14 Logo, a pgina C a mais importante, seguida pela A e depois pela B, sendo a D a menos importante
  • 18. PageRank 03/09/14 Em um grafo pequeno como este podemos at deduzir o ranking apenas olhando Mas apenas contando links no teramos como diferenciar A de B, o que conseguimos com o PR Em grafos maiores (ex.: a web inteira), o PR essencial