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\) 的度。
研究表明,调整后的同配性比其他同配性度量具有更理想的性质,这使得它适用于比较具有不同类别数量、不同类别大小以及不同类别间度分布的数据集的同配性水平。
调整后的同配性可以是负值。如果调整后的同配性为零,则图中的边缘模式与节点类别标签无关。如果为正,则图中的节点倾向于更频繁地连接到同一类别的节点;如果为负,则图中的节点倾向于更频繁地连接到不同类别的节点(与边缘独立于节点类别标签的零模型相比)。
示例
>>> 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