Preferential Attachment
|
This feature is not available in Aura Graph Analytics. |
Preferential Attachment is a measure used to compute the closeness of nodes, based on their shared neighbors.
History and explanation
Preferential attachment means that the more connected a node is, the more likely it is to receive new links. This algorithm was popularised by Albert-László Barabási and Réka Albert through their work on scale-free networks. It is computed using the following formula:
where N(u) is the set of nodes adjacent to u.
A value of 0 indicates that two nodes are not close, while higher values indicate that nodes are closer.
The library contains a function to calculate closeness between two nodes.
Syntax
RETURN gds.linkprediction.preferentialAttachment(node1:Node, node2:Node, {
relationshipQuery:String,
direction:String
})
| Name | Type | Default | Optional | Description |
|---|---|---|---|---|
|
Node |
null |
no |
A node |
|
Node |
null |
no |
Another node |
|
String |
null |
yes |
The relationship type used to compute similarity between |
|
String |
BOTH |
yes |
The relationship direction used to compute similarity between |
Preferential Attachment algorithm sample
CREATE
(zhen:Person {name: 'Zhen'}),
(praveena:Person {name: 'Praveena'}),
(michael:Person {name: 'Michael'}),
(arya:Person {name: 'Arya'}),
(karin:Person {name: 'Karin'}),
(zhen)-[:FRIENDS]->(arya),
(zhen)-[:FRIENDS]->(praveena),
(praveena)-[:WORKS_WITH]->(karin),
(praveena)-[:FRIENDS]->(michael),
(michael)-[:WORKS_WITH]->(karin),
(arya)-[:FRIENDS]->(karin)
MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.linkprediction.preferentialAttachment(p1, p2) AS score
score |
|---|
6.0 |
We can also compute the score of a pair of nodes based on a specific relationship type.
FRIENDS relationship: MATCH (p1:Person {name: 'Michael'})
MATCH (p2:Person {name: 'Karin'})
RETURN gds.linkprediction.preferentialAttachment(p1, p2, {relationshipQuery: "FRIENDS"}) AS score
score |
|---|
1.0 |