2016-04-08 10 views
4

Ich habe 1000 Benutzer und die Adjazenzliste ihres Netzwerks. Ich benutze die Bibliothek von igra.Top 10 Freunde auf der Grundlage der Ähnlichkeit in Netzwerk-Grafik

Ich habe Graph mit erstellt:

graph.adjlist(adjlist, mode = c("out", "in", "all", "total"),duplicate = TRUE) 

Dann zwischen den einzelnen Benutzern Ähnlichkeit zu ermitteln:

similarity.jaccard(graph, vids, mode, loops) 

Ähnlich ich invlogweighted, dice etc bin mit der Ähnlichkeit zu erhalten. Das Problem ist, ich will top 10 most close friends (nur basierend auf Netzwerk-Grafik) für jeden Benutzer. Aber ich bekomme keine richtigen Gewichte, d. H. Die meisten Benutzer haben die gleiche Ähnlichkeit miteinander, obwohl ihre Anzahl an Verbindungen unterschiedlich ist.

Ich möchte verschiedene Gewichte zwischen jedem Benutzer, so dass ich die top 10 based on weights auswählen kann. Gibt es etwas, das mir helfen kann, top 10 friends of a user zu bekommen?

Antwort

0

Da Sie Ähnlichkeit nur basierend auf der Netzwerkstruktur wollen, schlage ich vor, Sie verwenden Algorithmus, die globale Struktur wie SIMRANK, P-RANK etc.These werden Ihnen ein weit besseres Ergebnis als lokale Struktur basierte Ähnlichkeit Maßnahmen wie Jaccard und Kosinus.

Dieses Papier ist eine gute Ressource zum Auffrischen. http://delivery.acm.org/10.1145/2780000/2776894/a15-chen.pdf?ip=1.186.134.39&id=2776894&acc=ACTIVE%20SERVICE&key=045416EF4DDA69D9%2E517DE04875AE9835%2E4D4702B0C3E38B35%2E4D4702B0C3E38B35&CFID=820582987&CFTOKEN=27992587&acm=1508403880_47ba9366223f4aba0e4a217dee002e25