Vue d’ensemble
L'algorithme des voisins communs (Common Neighbors) calcule le nombre de voisins communs entre deux nodes comme mesure de leur similarité.
La logique derrière cet algorithme est que si deux nodes ont un nombre élevé de voisins en commun, ils sont probablement similaires ou connectés de manière significative. Il est calculé en utilisant la formule suivante :
où N(x) et N(y) sont les ensembles de nodes adjacents aux nodes x et y respectivement.
Plus il y a de voisins communs, plus la similarité entre les nodes est grande, tandis qu'un nombre de 0 indique aucune similarité entre les deux nodes.
Dans cet exemple, CN(D,E) = |N(D) ∩ N(E)| = |{B, F}| = 2.
Considérations
- L'algorithme des voisins communs ignore la direction des edges mais les calcule comme des edges non dirigées.
Syntaxe
- Commande :
algo(topological_link_prediction)
- Paramètres :
Nom |
Type |
Spécification |
Défaut |
Optionnel |
Description |
---|---|---|---|---|---|
ids / uuids | []_id / []_uuid |
/ | / | Non | ID/UUID du premier ensemble de nodes à calculer ; chaque node dans ids /uuids sera associé à chaque node dans ids2 /uuids2 |
ids2 / uuids2 | []_id / []_uuid |
/ | / | Non | ID/UUID du second ensemble de nodes à calculer ; chaque node dans ids /uuids sera associé à chaque node dans ids2 /uuids2 |
type | string | Common_Neighbors |
Adamic_Adar |
Non | Type de similarité ; pour Common Neighbors, gardez-le comme Common_Neighbors |
limit | int | >=-1 | -1 |
Oui | Nombre de résultats à retourner, -1 pour retourner tous les résultats |
Exemple
Le graphe exemple est le suivant :
File Writeback
Spécification | Contenu |
---|---|
fichier | node1 ,node2 ,num |
algo(topological_link_prediction).params({
uuids: [3],
uuids2: [1,5,7],
type: 'Common_Neighbors'
}).write({
file:{
filename: 'cn'
}
})
Résultats : Fichier cn
C,A,1.000000
C,E,2.000000
C,G,1.000000
Direct Return
Numéro d'Alias | Type | Description |
Colonnes |
---|---|---|---|
0 | []perNodePair | Paire de nodes et leur similarité | node1 , node2 , num |
algo(topological_link_prediction).params({
ids: 'C',
ids2: ['A','C','E','G'],
type: 'Common_Neighbors'
}) as cn
return cn
Résultats : cn
node1 | node2 | num |
---|---|---|
3 | 1 | 1 |
3 | 5 | 2 |
3 | 7 | 1 |
Stream Return
Numéro d'Alias | Type | Description |
Colonnes |
---|---|---|---|
0 | []perNodePair | Paire de nodes et leur similarité | node1 , node2 , num |
find().nodes() as n
with collect(n._id) as nID
algo(topological_link_prediction).params({
ids: 'C',
ids2: nID,
type: 'Common_Neighbors'
}).stream() as cn
where cn.num >= 2
return cn
Résultats : cn
node1 | node2 | num |
---|---|---|
3 | 4 | 2 |
3 | 5 | 2 |