官网文档:https://neo4j.com/docs/graph-data-science/current/algorithms/
1、图中心性算法
中心度算法主要用来判断一个图中不同节点的重要性
(1)PageRank:根据关系随机游走,越多经过的节点得分越高。一个节点,入度越高,则可能被经过的概率越大。
(2)ArticleRank:pagerank的变体,考虑出度对重要性的影响,源自出度低的节点的关系比源自出度高的节点的关系具有更高的影响力。
(3)Eigenvecor Centrality特征向量中心性:高特征向量分数意味着一个节点连接到许多本身具有高分数的节点。PageRank和ArticleRank都是这类中心性算法。那这个是Katz的实现???Katz 中心性通过测量直接邻居(一级节点)以及网络中通过这些直接邻居连接到所考虑节点的所有其他节点的数量来计算网络中节点的相对影响。
(4)Betweenness Centrality中介中心性:经过某个节点的最短路径的数目来刻画节点重要性的指标就称为介数中心性
(5)Degree Centrality度中心性:用实体出边或入边的数量衡量实体在网络中的重要性
(6)Closeness Centrality紧密中心性:计算节点和图中所有其他节点之间最短路径的长度总和的倒数。与所有节点越紧密,中心性越大。
(7)Harmonic Centrality调和中心性:是紧密中心性算法的一种变体,用于解决不连通图的问题

2、社区发现算法
社区检测(community detection)又被称为是社区发现,它是用来揭示网络聚集行为的一种技术。社区检测实际就是一种网络聚类的方法,这里的“社区”,我们可以将其理解为一类具有相同特性的节点的集合。
模块度modularity:对于一张图中所有已经划分的社区而言,每一个社区的内部的边的权重之和减去所有与社区节点相连的边的权重之和。
模块度增益:是针对单个节点(社区)定义的,当某个节点(或者社区A)合并到某个社区B中时,我们计算形成的全图的modularity,然后和合并之前的全图的modularity做对比即可得到改次节点合并时的模块度的增益。
(1)Louvain鲁汶算法:算法为网络的每个节点分配一个不同的社区。然后对于每个节点,从当前社区中删除特定节点并放置在邻居的社区中,评估模块化增益,如果增益为正且最大化,则该节点将被放置在邻居的社区中。如果没有正收益,该节点将留在同一个社区中。
(2)Leiden莱顿算法:该算法将节点分离成不相交的社区,从而最大化每个社区的模块化得分。它通过定期将社区随机分解为较小的连接良好的社区来解决鲁汶算法发现的一些社区联系不紧密的情况。
(3)Label Propagation标签传播算法:标签传播是一种半监督机器学习算法。在算法开始时,数据点的(通常很小的)子集具有标签(或分类)。每次迭代未标记的节点都会将其标签更新为其邻居的最大数量所属的标签。
(4)Weakly Connected Components弱连通组件算法:将图划分为多个连接节点集,有连接作为一个社区,无连接的不在一个社区。
(5)Triangel count三角形计数:三角形计数算法计算图形中每个节点的三角形数。三角形是三个节点的集合,其中每个节点与其他两个节点有关系。在图论术语中,这有时被称为3-clique(3小圈)。GDS库中的三角形计数算法仅查找无向图中的三角形。
(6)Local Clustering Coefficient局部聚类系数:聚类系数是图中节点倾向于聚集在一起的程度的度量。即为节点的一跳邻域内封闭的三角形的比例: C n = 2 T n d n ( d n − 1 ) C{n}=\frac{2T{n}}{d{n}(d{n}-1)} Cn=dn(dn1)2Tn 其中,Tn是三角形数,dn是节点度。

3、路径查找算法
用于找到最短路径,或者评估路径的可用性和质量
(1)Delta-Stepping Single-Source Shortest Path增量步进最短路径算法:计算图中源节点和所有可到达节点之间的所有最短路径。
(2)Delta-Stepping Single-Source Shortest Path Dijkstra单源算法:计算源节点和从该节点可到达的所有节点之间的最短路径。
(3)Dijkstra Source-Target Shortest Path Dijkstra源-目标最短路径算法:计算源节点和目标节点之间的最短路径。该算法支持具有正关系权重的加权图。
(4)A* Shortest Path “A-Star”最短路径算法:计算两个节点之间的最短路径,该算法基于Dijkstra的最短路径算法,将已经计算的距离与启发式函数的结果相结合,在每次迭代中,以最低的组合成本从节点开始继续图遍历。
(5)Yen’s Shortest Path Yen的最短路径算法,算法通常被称为Yen的k最短路径算法,其中k是要计算的最短路径数。对于k=1,该算法的行为与Dijkstra的最短路径算法完全相同,并返回最短路径。对于k=2,算法返回同一源节点和目标节点之间的最短路径和第二短路径。通常,对于k=n,算法最多计算n条路径,这些路径按照其总成本的顺序被发现。
(6)Minimum Weight Spanning Tree最小权重生成树(MST):从给定的节点开始,并找到其所有可到达的节点以及以最小可能权重将节点连接在一起的一组关系。
(7)Breadth First Search广度优先搜索算法是一种图遍历算法
(8)Depth First Search深度优先搜索算法
(9)Random Walk随机行走是一种在图形中提供随机路径的算法。
(10)All Pairs Shortest Path所有对最短路径(APSP)计算所有节点对之间的最短(加权)路径。该算法的优化使其比为图中的每对节点调用单源最短路径算法更快。

4、相似度算法
预测一对节点的紧密程度
(1)Node Similarity节点相似:如果两个节点共享许多相同的邻居,则认为两个节点相似。节点相似度基于Jaccard度量。
(2)K-Nearest Neighbors:K近邻算法计算图中所有节点对的距离值,并在每个节点及其K近邻之间创建新的关系。距离是基于节点属性计算的。该算法基本不考虑节点间的连接关系
5、链接预测算法
(1)Adamic Adar AA 算法是 X, Y 两点每个共同邻居的出度的对数倒数累加得出两个节点关系是否紧密的评分。该算法中,邻居节点的度越大,对紧密关系的贡献越小。
(2)Common Neighbors 公共邻居的个数越多紧密度越大,两个节点邻居的交集的数量
(3)Preferential Attachment择优连接:计算x和y节点的相邻节点数乘积作为紧密度评估分。如果两个节点分别的邻接节点越多,它俩连接的可能性就越大
(4)Resource Allocation资源分配:x和y的所有共同邻居u的邻居的个数倒数之和。与AA算法类似,只是邻居节点的度不取对数了
(5)Same Community(相同社区),确认两个节点是否属于同一个社区;如果两个节点属于同一个社区,这两个节点则可能有关系
(6)Total Neighbors总邻居:两个节点拥有的邻居的并集的数量

6、Node embeddings(节点嵌入)
节点嵌入通常被用作下游机器学习任务的输入,例如节点分类、链接预测和kNN相似性图构建。
(1)Fast Random Projection快速随机投影,简称FastRP:结合图的拓扑结构和图的属性特征,迭代多次将多级邻居节点的特征纳入到当前节点特征中。

Logo

长江两岸老火锅,共聚山城开发者!We Want You!

更多推荐