Ich bin neugierig darauf, einen Ansatz zu finden, um einen "vorgeschlagenen Freund" -Algorithmus in Angriff zu nehmen.
Facebook hat eine Funktion, mit der es Ihnen Personen empfiehlt, mit denen Sie möglicherweise vertraut sind. Diese Benutzer haben normalerweise (mit Ausnahme der Randfälle, in denen ein Benutzer einen Freund ausdrücklich empfiehlt ) ein sehr ähnliches Netzwerk wie sich selbst. Das heißt, die Anzahl der gemeinsamen Freunde ist hoch. Ich gehe davon aus, dass Twitter bei seinem "Who To Follow" -Mechanismus einen ähnlichen Weg einschlägt.
Stephen Doyle (Igy) , ein Facebook-Mitarbeiter, schlug vor, dass der verwandte Newsfeed, der die EdgeRank-Formel verwendet , darauf hinzudeuten scheint, dass mehr zu schätzen ist, als Freunde wie das Aussehen ähnliche Beiträge sind. Ein anderer Nutzer schlug das Google Rank-System vor.
Facebook gibt die Optimierung des als where an
= Affinitätswert zwischen dem betrachtenden Benutzer und dem = Gewicht für diese Kante (Erstellen, Kommentieren, Kommentieren, Markieren usw.) = Zeitabklingfaktor basierend darauf, seit wann die Kante erstellt wurde
Das Summieren dieser Elemente soll den Rang eines Objekts ergeben, von dem ich annehme, dass er einen Igy-Hinweis enthält. Dies bedeutet, dass für vorgeschlagene Freunde etwas in einem ähnlichen Format verwendet wird.
Ich vermute also, dass auf diese Weise Verbindungen für alle Typen im Allgemeinen über ein Rangsystem hergestellt werden?
Antworten:
Sie können sich das soziale Diagramm als Matrix . Ein Ansatz für das Problem besteht darin, zuerst zu berechnen , wodurch alle Pfade der Länge zwei zwischen zwei Akteuren im sozialen Netzwerk angegeben werden. Dies kann als das Gewicht der Verbindung zwischen diesen Freunden von Freunden gesehen werden. Der nächste Schritt besteht darin, die Spalten aus der Zeile von auszuwählen , die der interessierenden Person entsprechen, um die besten Kandidaten für neue Freunde zu finden.M M2 M2
quelle
Was Sie suchen, ist eine Heuristik. Kein Algorithmus kann sagen, ob zwei Personen, die nicht direkt verbunden sind, Freunde sind oder nicht. Es ist nicht garantiert, dass die Freundschaft / Bekanntschafts-Beziehung transitiv ist (wir können Symmetrie annehmen, aber das könnte im wirklichen Leben sogar eine Strecke sein). Eine gute Heuristik muss daher auf einem Verständnis der Art und Weise basieren, wie Menschen interagieren, und nicht auf einem mathematischen Verständnis der Art von Beziehungsgraphen (obwohl wir die Heuristik in diesen Begriffen quantifizieren müssen).
Freunde von Freunden mit gleicher Wahrscheinlichkeit vorzuschlagen, ist eine relativ billige, aber ungenaue Heuristik. Zum Beispiel hat mein Vater Freunde, aber ich würde nicht sagen, dass ich mit ihnen befreundet bin (obwohl ich wahrscheinlich sagen würde, dass ich mit meinem Vater befreundet bin, um zum Beispiel ein soziales Netzwerk aufzubauen). Eine Person in relativ geringer Entfernung zu haben, macht sie nicht unbedingt zu einem großartigen Kandidaten.
Es scheint im Allgemeinen auch eine schlechte Wahl zu sein, Menschen mit sehr vielen erweiterten Verbindungen zu empfehlen, da dies zu einem exponentiellen Wachstum von Freunden von Menschen führen wird, die früh weiterkommen (die sieben Grade der Trennung von Kevin Bacon sind ein Problem) Beispiel hierfür).
Sagen wir, wir wollen neue Freunde finden für
a
.a
‚s aktuelle Freunde sindb
,c
undf
. Wir bewerten den Netto-Ersatzwiderstand zwischena
und jedend
,e
,g
,h
, undi
:Nach dieser Heuristik
d
ist der beste Kandidat Freund, dicht gefolgt vonh
.g
ist die nächstbeste Wette, dicht gefolgt vone
.i
kann von dieser Heuristik niemals ein Freund sein. Es ist wichtig, ob die Ergebnisse dieser Heuristik für echte menschliche soziale Interaktionen repräsentativ sind. Aus rechnerischer Sicht müsste dazu ein Subgraph gefunden werden, der alle Pfade zwischen zwei Individuen enthält (oder interessanterweise eine sinnvoll ausgewählte Verkürzung davon), und dann der äquivalente Widerstand zwischen dem Quellen- und dem Senkenknoten ausgewertet werden.EDIT: Also, was ist meine soziale Motivation dafür? Nun, dies könnte ein grobes Modell dafür sein, wie schwierig es ist, mit Vermittlern (Freunden) in Kontakt zu treten und anschließend möglicherweise erhebliche Mengen an Informationen zu kommunizieren. In CS-Begriffen (anstelle von physikalischen Begriffen) kann dies als Bandbreite zwischen zwei Knoten in einem Diagramm ausgelegt werden. Erweiterungen dieses Systems würden verschiedene Arten von Verbindungen zwischen Personen mit unterschiedlichen Gewichten (Widerstand, Bandbreite usw.) ermöglichen und wie oben vorgehen.
quelle
Es wird viel an diesem Problem gearbeitet, da die Beliebtheit von sozialen Netzwerken zugenommen hat. Das Problem wird in der Regel als "Link Prediction" bezeichnet, und hier und hier finden Sie sehr gute und umfassende Umfragen . Die Methoden reichen von sehr einfach (zB Jaccard-Ähnlichkeit zwischen Knoten) bis sehr komplex (zB Erstellung statistischer Modelle des generativen Verbindungsprozesses). Dies hängt in hohem Maße von den spezifischen Funktionen ab, die in Ihrem Dataset verfügbar sind (z. B. Netzwerkstruktur, Knotenattribute, Kantenattribute usw.). Diese Umfragen geben Ihnen jedoch eine gute Vorstellung davon, wo Sie beginnen sollen.
quelle
Haftungsausschluss: Ich rate hier wild; Ich habe keine Genreforschung gelesen.
Sie können sich ansehen, wie viele Verbindungen zu Knoten sich im Verhältnis zur Anzahl der Verbindungen eines Knotens teilen. Dies ist eine sehr naive (als lokale) Idee, aber hier geht.
Eine andere Idee ist globaler: Bestimmen Sie eine Reihe von Knoten , die der vorliegenden ähnlich sind , und schlagen Sie Verbindungen vor, die viele von ihnen gemeinsam haben. Definieren Sie also die Menge ähnlicher Knoten
und die plausiblen Vorschläge von
quelle