当前,我正在使用一个很棒的python库StellarGraph来实现GraphSAGE(图神经网络),并且对于大多数用途而言,该库运行良好。
我现在遇到的情况是,我的图表的边缘有权重-权重反映了某些关系与其他关系的相对重要性。换句话说,节点之间的某些链接的权重较低(重要性较低),而其他链接的权重较高(重要性较高)。
在图网络训练期间考虑权重的情况下,这对于聚类甚至节点分类非常有用。
有没有办法让GraphSAGE / python StellarGraph考虑到加权边?
答案 0 :(得分:1)
现在version 1.2.0的StellarGraph中通过数据数据生成器的weighted=True
参数支持此功能。
例如,对于GraphSAGE's GraphSAGENodeGenerator
:
G_generator = GraphSAGENodeGenerator(G, 50, [10,10], weighted=True)
有关其含义的详细信息(引用固定pull request #1667的relevant issue #462):
这将扩展GraphSAGE(无向和有向)以支持加权采样,在该采样中,权重较高的边缘会按比例更频繁地获取。
例如,假设节点A有4条边:
从A开始的未称重步行将选择具有相同可支撑性的每个边,因此最终以1:1:2的比例(边数)到达B,C或D。加权步行将选择与权重成比例的边,因此最终以0:1:5(边权重之和)成比例出现在顶点上。 (值得特别强调的是:加权步行永远不会选择A-B边缘,因为它的权重为0。)
支持边缘权重的全套算法通过the table of demos in the documentation中的“边缘权重”列标记。