Come determinare le probabili connessioni in un social network?


29

Sono curioso di determinare un approccio per affrontare un algoritmo di "amici suggeriti".

Facebook ha una funzione in cui ti consiglierà persone a cui pensi di poter conoscere. Questi utenti normalmente (esclusi i casi limite in cui un utente raccomanda specificamente un amico ) hanno una rete molto simile a se stessi. Cioè, il numero di amici in comune è alto. Suppongo che Twitter segua un percorso simile per il loro meccanismo "Chi seguire".

Stephen Doyle (Igy) , un dipendente di Facebook, ha suggerito che il relativo newsfeed che utilizza la formula EdgeRank che sembra indicare che un valore maggiore rispetto agli amici come l'aspetto è post simili. Un altro utente ha suggerito il sistema di Google Rank.

Facebook afferma la sua ottimizzazione dei feed di notizie come doveuewede

= punteggio di affinità tra la visualizzazione dell'utente e il creatore del bordo w e = peso per questo bordo (creazione, commento, come, tag, ecc.) d e = fattore di decadimento temporale basato su quanto tempo fa è stato creato il bordo ue
we
de

Sommando questi elementi si suppone che dia il rango di un oggetto che presumo come suggerito da Igy, significa che viene usato qualcosa in un formato simile per gli amici suggeriti.

Quindi immagino che questo sia il modo in cui le connessioni per tutti i tipi vengono fatte in generale tramite un sistema di classificazione?


Come semplice punto di partenza, è possibile utilizzare un sistema di raccomandazioni "amici di amici". Cioè, se hai molti amici che sono amici della persona X, allora forse dovresti essere amico della persona X.
Joe

1
ci sono vari modelli di grafici casuali che cercano di catturare la struttura di un vero social network. Il calcolo della probabilità di un vantaggio potenziale dipende dal modello utilizzato e dalle informazioni disponibili.
Kaveh,

Risposte:


7

Si può pensare al grafico sociale come matrice . Un approccio al problema è innanzitutto calcolare M 2 , che fornirà tutti i percorsi di lunghezza due tra due attori nel social network. Questo può essere visto come il peso della connessione tra questi amici di amici. Il prossimo passo è selezionare le colonne dalla riga di M 2 corrispondente alla persona di interesse per ottenere i migliori candidati per i nuovi amici.MM2M2


1
Ciò darebbe il numero di percorsi tra e la persona p , che possono quindi essere utilizzati per classificare gli amici. È rozzo, lo ammetto. fiop
Dave Clarke,

Penso che modellare il problema con un grafico sia sia più semplice che più intuitivo.
MMS,

11

Quello che stai cercando è un euristico. Nessun algoritmo può dire, dato un grafico di amici come unico input, se due individui non direttamente collegati sono amici o no; la relazione di amicizia / conoscenza non è garantita per essere transitiva (possiamo assumere la simmetria, ma potrebbe anche essere un tratto nella vita reale). Qualsiasi buon euristico dovrà quindi basarsi sulla comprensione di come le persone interagiscono, piuttosto che su una comprensione matematica della natura dei grafici delle relazioni (anche se avremo bisogno di quantificare l'euristico in questi termini).

Suggerire amici di amici con uguale probabilità è un'euristica relativamente economica ma imprecisa. Ad esempio, mio ​​padre ha degli amici, ma non direi che sono amico di nessuno di loro (anche se probabilmente direi che sono un amico di mio padre ai fini, ad esempio, di un social network). Avere una persona a una distanza relativamente vicina non lo rende necessariamente un ottimo candidato.

Suggerire alle persone a cui hai molte connessioni estese sembra anche una cattiva scelta in generale, perché questo tenderà a portare a una crescita esponenziale di amici di persone che si spingono avanti presto (i sette gradi di separazione dal gioco Kevin Bacon è un esempio di questo).

R

  _____
 /     \
a---c   f
|   | /
b   d---e
| \ |
g   h   i

Di 'che vogliamo trovare nuovi amici per a. a's amici attuali sono b, ce f. Si valuta la resistenza equivalente netto tra ae ciascuna d, e, g, h, e i:

pair   resistance
(a,d)   6/7
(a,e)  13/7
(a,g)   7/4
(a,h)   1/1
(a,i)   inf

Secondo questa euristica, dè il miglior amico candidato, seguito da vicino h. gè la prossima scommessa migliore, seguita da vicino da e.inon potrà mai essere un candidato amico di questo euristico. Se trovi che i risultati di questa euristica siano rappresentativi di interazioni sociali umane reali è ciò che è importante. Dal punto di vista computazionale, ciò implicherebbe la ricerca di un sottografo che contenga tutti i percorsi tra due individui (o, forse in modo interessante, qualche troncamento significativamente selezionato di questo), quindi la valutazione della resistenza equivalente tra i nodi source e sink.

EDIT: Quindi qual è la mia motivazione sociale per questo? Bene, questo potrebbe essere un modello approssimativo di quanto sia difficile mettersi in contatto con, e successivamente comunicare eventualmente quantità significative di informazioni tramite intermediari (amici). In termini CS (piuttosto che termini fisici), questo potrebbe essere interpretato come larghezza di banda tra due nodi in un grafico. Le estensioni di questo sistema dovrebbero consentire diversi tipi di collegamenti tra persone con pesi diversi (resistenza, larghezza di banda, ecc.) E procedere come sopra.


10

C'è molto lavoro da fare su questo problema poiché la popolarità dei social network è decollata. Il problema è in genere definito "Link Prediction" e sondaggi molto validi e completi possono essere trovati qui e qui . I metodi vanno dal molto semplice (ad es. Somiglianza di Jaccard tra nodi) al molto complesso (ad es. Costruendo modelli statistici del processo di connessione generativa). Dipende molto dalle caratteristiche specifiche che hai a disposizione nel tuo set di dati (ad es. Solo struttura di rete, attributi del nodo?, Attributi del bordo, ...), ma questi sondaggi ti daranno una buona idea da dove iniziare.


4

Disclaimer: sto indovinando selvaggiamente qui; Non ho letto nessuna ricerca di genere.

È possibile esaminare quante connessioni ai nodi condividono relativamente al numero di connessioni di un nodo. Questa è un'idea molto ingenua (come locale), ma qui va.

Ogni nodo N (persona o qualche altro concetto) ha una serie di connessioni CN. Ora, dati due nodiN1 e N2, suggerisci N2 a N1 Se

|CN1CN2||CN1|α

per alcuni ragionevoli α[0,1] (e viceversa).

Un'altra idea è più globale: determinare un insieme di nodi simili a quello attuale e proporre connessioni condivise da molti di essi. Quindi, definire l'insieme di nodi simili

SN={M:|CNCM|Nα}

e i suggerimenti plausibili stabiliti da

{S:ΣMSN[SM]|SN|β}

di nuovo per ragionevole α,β[0,1].

In realtà, vorresti sicuramente ponderare le connessioni individualmente; per esempio, elementi diSN a cui sei già connesso dovrebbe avere un'importazione maggiore di quella che è lontana da te.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.