PPR

class dgl.transforms.PPR(alpha=0.15, eweight_name='w', eps=None, avg_degree=5)[source]

基类: BaseTransform

将个性化 PageRank (PPR) 应用于输入图以进行扩散,如 The pagerank citation ranking: Bringing order to the web 中所述。

扩散后,将对加权邻接矩阵进行稀疏化。具体来说,权重低于阈值的边将被丢弃。

此模块仅适用于同构图。

参数:
  • alpha (float, optional) – 重启概率,通常介于 \([0.05, 0.2]\) 之间。

  • eweight_name (str, optional) – 用于获取和存储边权重的 edata 名称。如果输入图中不存在此名称,则此模块会为所有边初始化权重为 1。边权重应为一个形状为 \((E)\) 的张量,其中 E 是边的数量。

  • eps (float, optional) – 扩散后稀疏化中保留边的阈值。权重小于 eps 的边将被丢弃。

  • avg_degree (int, optional) – 结果图的期望平均节点度。这是控制结果图稀疏性的另一种方法,仅在未给定 eps 时有效。

示例

>>> import dgl
>>> import torch
>>> from dgl import PPR
>>> transform = PPR(avg_degree=2)
>>> g = dgl.graph(([0, 1, 2, 3, 4], [2, 3, 4, 5, 3]))
>>> g.edata['w'] = torch.tensor([0.1, 0.2, 0.3, 0.4, 0.5])
>>> new_g = transform(g)
>>> print(new_g.edata['w'])
tensor([0.1500, 0.1500, 0.1500, 0.0255, 0.0163, 0.1500, 0.0638, 0.0383, 0.1500,
        0.0510, 0.0217, 0.1500])