Sto giocando con networkx (libreria di grafi in python) e ho trovato la documentazione che dice che l'algoritmo PageRank prende in considerazione i pesi marginali durante il calcolo, ma mi chiedevo se i pesi di bordo più grandi fossero migliori o pesi inferiori migliori?In che modo i bordi ponderati influenzano il PageRank in networkx?
16
A
risposta
23
In breve, i pesi di grandi dimensioni sono migliori per i nodi in ingresso.
PageRank funziona su un grafico ponderato diretto. Se la pagina A ha un link alla pagina B, allora il punteggio per B sale, cioè più input ha la pagina B (nodo), più alto è il suo punteggio.
Wikipedia article on PageRank per ulteriori dettagli.
Modifica: facciamo un esperimento. Crea un grafico diretto con 3 nodi e due bordi diretti con pesi uguali.
import networkx as nx
D=nx.DiGraph()
D.add_weighted_edges_from([('A','B',0.5),('A','C',0.5)])
print nx.pagerank(D)
>> {'A': 0.259740259292235, 'C': 0.3701298703538825, 'B': 0.3701298703538825}
Ora, aumentare il peso del bordo (A, C):
D['A']['C']['weight']=1
print nx.pagerank(D)
>> {'A': 0.259740259292235, 'C': 0.40692640737443164, 'B': 0.3333333333333333}
Come si vede, il nodo C ha ottenuto il punteggio più alto con l'aumento del peso del bordo in arrivo.
Impressionante grazie, Max! – Lostsoul
Non sono sicuro "il PageRank funziona su un grafico ponderato diretto" è corretto. È mia opinione che ordinariamente i bordi usati in PageRank non siano ponderati, che ci sia o meno uno spigolo tra i nodi. Questo ha senso perché non puoi avere mezzo collegamento tra due pagine. Anche se sembra che il metodo pagerank in networkx permetta di pesare i bordi, come possono usare [TextRank] (http://digital.library.unt.edu/ark:/67531/metadc30962/m2/1/high_res_d/Mehalcea-2004-TextRank-Bringing_Order_into_Texts.pdf) (sezione 2.2), che è basato su PageRank. – jksnw
Perché dovresti assegnare un link più pesante? È lasciato alla realizzazione capire come certi link valgono di più? (Come link nel corpo vs link nei commenti?) – Xeoncross