dgl.adjusted_homophily

dgl.adjusted_homophily(graph, y)[source]

Characterizing Graph Datasets for Node Classification: Homophily-Heterophily Dichotomy and Beyond中推荐的同质性测量

调整后的同质性是指根据具有相同类别标签的节点之间连接的预期边数进行调整的边同质性(考虑到类别数量、它们的大小以及节点度数的分布)。

数学上定义如下:

\[\frac{h_{edge} - \sum_{k=1}^C \bar{p}(k)^2} {1 - \sum_{k=1}^C \bar{p}(k)^2},\]

其中 \(h_{edge}\) 表示边同质性,\(C\) 表示类别数量,\(\bar{p}(\cdot)\) 是类别的经验度加权分布: \(\bar{p}(k) = \frac{\sum_{v\,:\,y_v = k} d(v)}{2|E|}\), 其中 \(d(v)\) 是节点 \(v\) 的度数。

已经证明,调整后的同质性比其他同质性度量满足更多理想的特性,这使得它适合用于比较具有不同类别数量、不同类别大小和不同类别间度分布的数据集的同质性水平。

调整后的同质性可以为负。如果调整后的同质性为零,则图中的边模式与节点类别标签无关。如果为正,则图中的节点倾向于更频繁地连接到相同类别的节点;如果为负,则图中的节点倾向于更频繁地连接到不同类别的节点(与边与节点类别标签无关的零模型相比)。

Parameters:
  • graph (DGLGraph) – The graph.

  • y (torch.Tensor) – The node labels, which is a tensor of shape (|V|).

Returns:

调整后的同质性值。

Return type:

float

示例

>>> import dgl
>>> import torch
>>> graph = dgl.graph(([1, 2, 0, 4], [0, 1, 2, 3]))
>>> y = torch.tensor([0, 0, 0, 0, 1])
>>> dgl.adjusted_homophily(graph, y)
-0.1428571492433548