dgl.edge_label_informativeness

dgl.edge_label_informativeness(graph, y, eps=1e-08)[source]

标签信息量 (\(\mathrm{LI}\)) 是在 Characterizing Graph Datasets for Node Classification: Homophily-Heterophily Dichotomy and Beyond 这篇论文中提出的带标签图的一个特征。

标签信息量表明了通过了解节点的邻居标签,我们可以获得多少关于该节点标签的信息。形式上,假设我们采样一条边 \((\xi,\eta) \in E\)。节点 \(\xi\)\(\eta\) 的类别标签是随机变量 \(y_\xi\)\(y_\eta\)。我们想度量标签 \(y_\eta\) 在预测 \(y_\xi\) 时提供了多少信息。熵 \(H(y_\xi)\) 度量了在不知道 \(y_\eta\) 的情况下预测 \(y_\xi\) 的标签的“难度”。已知 \(y_\eta\) 后,这个值降至条件熵 \(H(y_\xi|y_\eta)\)。换句话说,\(y_\eta\) 揭示了关于标签的 \(I(y_\xi,y_\eta) = H(y_\xi) - H(y_\xi|y_\eta)\) 信息。为了使所得量在不同数据集之间具有可比性,标签信息量定义为 \(y_{\xi}\)\(y_{\eta}\) 的归一化互信息

\[\mathrm{LI} = \frac{I(y_\xi,y_\eta)}{H(y_\xi)}\]

根据用于采样边 \((\xi, \eta)\) 的分布,可以获得标签信息量的几种变体。其中两种尤其直观:在边标签信息量 (\(\mathrm{LI}_{edge}\)) 中,边是均匀随机采样的;在节点标签信息量 (\(\mathrm{LI}_{node}\)) 中,首先均匀随机采样一个节点,然后均匀随机采样一条与该节点关联的边。这两种标签信息量在如何权衡高/低度节点方面有所不同。在边标签信息量中,平均是基于边的,因此高度节点被赋予更高的权重。在节点标签信息量中,平均是基于节点的,因此所有节点权重相等。

此函数计算边标签信息量。

参数:
  • graph (DGLGraph) – 输入图。

  • y (torch.Tensor) – 节点标签,形状为 (|V|) 的张量。

  • eps (float, optional) – 用于数值稳定性的微小常数。(默认值: 1e-8)

返回值:

边标签信息量值。

返回值类型:

float

示例

>>> import dgl
>>> import torch
>>> graph = dgl.graph(([0, 1, 2, 2, 3, 4], [1, 2, 0, 3, 4, 5]))
>>> y = torch.tensor([0, 0, 0, 0, 1, 1])
>>> dgl.edge_label_informativeness(graph, y)
0.25177597999572754