用于图节点分类的标签传播系列算法

Label Propagation for Node Classification

本节是CSW224第一部分的最后一节

标签传播(Label Propagation)或(消息传递Message passing)经常被用作一个Baseline。这也是一种半监督节点分类(semi-supervised node classification),用一部分已知标签的节点去预测剩下的未知标签的节点。
在这里插入图片描述

注意:半监督与监督学习不同,这里没有将已经学到的模型泛化到新来的节点上,仅仅是对原图的剩余节点进行分类,因为在学习模型时,原图的未知标签的节点也可能用于训练。这种被称为直推式学习(Transductive),与之相对应的是归纳式学习(Inductive)

对于图神经网络,是可以做到归纳式学习。
在这里插入图片描述

基本假设:

网络中的节点是 物以类聚,人以群分(Correlation / dependencies)。关与这个基本假设可以从以下两个方面解释。

  1. Homophily同质性:具有相似属性的节点更可能属于同一类或同一群体。“Birds of a feather flock together” 有相同羽毛的鸟可能在一起飞翔

  2. Influence 连接:,物以类聚,人以群分;近朱者赤,近墨者黑。
    在这里插入图片描述

在这里插入图片描述在这里插入图片描述

思路

例如KNN最近邻分类,根据节点连接到的其他节点的标签,对我进行分类。例如不良网站之间总是互相引流。

  • 节点自身特征
  • 节点的邻域节点的特征和属性

collective classification

Label Propagation(Relational classification)

对于带权图,通过迭代方式进行加权平均;对无权图,则进行平均。其中 Y v Y_v Yv表示节点 v v v是类别 c c c的概率

P ( Y v = c ) = 1 ∑ ( v , u ) ∈ E A v , u ∑ ( v , u ) ∈ E A v , u P ( Y u = c ) P\left(Y_{v}=c\right)=\frac{1}{\sum_{(v, u) \in E} A_{v, u}} \sum_{(v, u) \in E} A_{v, u} P\left(Y_{u}=c\right) P(Yv=c)=(v,u)EAv,u1(v,u)EAv,uP(Yu=c)

这种方法有两个缺点:

  1. 不能保证一定收敛
  2. 只用到了连接信息,没有用到节点的特征。

算法运行时,可以为各节点标号,按顺序进行迭代计算灰色节点的类别概率。灰色节点所属类别的概率初始化为0.5

在一轮完成后,发现某些节点的类别概率达到1或者0,或者是某个阈值时,即为收敛。后续按照这个流程进行多轮迭代,直到达到最大次数或者所有灰色节点均已收敛。

在这里插入图片描述在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述在这里插入图片描述

注意:nx.label_propagation_communities算法只适用于无向图

import networkx as nx
from networkx.algorithms import community
G = nx.karate_club_graph()
communities = community.label_propagation_communities(G)
# 获得每个社群的节点
community_list = []
for community in communities:
    community_list.append(list(community))
# 为每个社群的节点分类
node_colors = []
for n in G:
    if n in community_list[0]:
        node_colors.append('blue')
    elif n in community_list[1]:
        node_colors.append('red')
    else:
        node_colors.append('yellow')
# 可视化
nx.draw(G,node_color=node_colors,with_labels=True)

Iterative classification(ICA )

由于之前的算法没有考虑节点的特征,因此本算法构建两个分类器:

  1. base classifier ϕ ( f v ) \phi(f_v) ϕ(fv):使用节点属性特征
  2. relational classifier ϕ ( f v , Z v ) \phi (f_v,Z_v) ϕ(fv,Zv):使用节点属性特征和网络连接特征( z v z_v zv自定义的节点 v v v的相邻节点的特征向量)

对于 Z v Z_v Zv的计算,主要思想是提取节点周围节点类别信息,形成一个向量,有以下思路供参考

  1. 邻居节点各类别的节点数
  2. 邻居节点中最常见的类别
  3. 有多少种不同类别
  4. …开开脑洞吧
流程
Phase1

已标注的训练集上,训练两个分类器。

  1. ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)
  2. ϕ 2 ( f v , Z v ) \phi_2 (f_v,Z_v) ϕ2(fv,Zv)
Phase2:迭代直到收敛
  1. 未标注的节点上,用 ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)预测 Y v Y_v Yv
  2. 使用 Y v Y_v Yv计算 (之后迭代更新) Z v Z_v Zv
  3. 使用 ϕ 2 ( f v , Z v ) \phi_2 (f_v,Z_v) ϕ2(fv,Zv) 计算所有节点类别
  4. 至此,图中所有节点类别均已标注
  5. 返回第二步,直到收敛或者达到最大迭代次数

缺点:不保证收敛

Example

在这里插入图片描述

对于上图数据,如果训练一个线性分类器,有可能会错误地将灰色节点分类为红色。

在这里插入图片描述

所以不仅要考虑节点的属性特征 f v f_v fv,还要考虑连接特征 Z v Z_v Zv

在这里插入图片描述

Correct & Smooth

后处理的思想,类似目标检测中的Softnms

流程

  1. 在已标注的数据集上训练一个基础分类器,任意模型
  2. 使用基础分类器预测所有节点的soft label,即预测结果是一个概率值,各类别均不为0

在这里插入图片描述

  1. 后处理(Post-process)

    1. Correct :对不确定程度进行扩散。认为不确定度在图中也是homophily的。要对不确定性进行分散

      1. 在所有已标注节点计算error = 真实概率 - soft label

      在这里插入图片描述

      1. 得到最初的Error矩阵 E ( 0 ) E^{(0)} E(0),并对其削峰填谷,类似Label Propagation。

      在这里插入图片描述

      1. E ( t + 1 ) = ( 1 − α ) . E ( t ) + α . A ~ E ( t ) E^{(t+1)} = (1-\alpha).E^{(t)} + \alpha .\widetilde{\boldsymbol{A}} E^{(t)} E(t+1)=(1α).E(t)+α.A E(t),其中 A ~ = D − 1 2 A D − 1 2 \widetilde{\boldsymbol{A}} = D^{-\frac{1}{2}}AD^{-\frac{1}{2}} A =D21AD21 α \alpha α为超参数,越大,更倾向于传播的Error;越小,更倾向于上一时刻的Error。 A ~ \widetilde{\boldsymbol{A}} A 表示传播作用。

      在这里插入图片描述

      在这里插入图片描述

      在这里插入图片描述

      1. 最终Correct的结果,需要将最初Soft labels + s.最后的Error。s为超参数

      在这里插入图片描述

    2. Smooth:原理依旧是基于近朱者赤近墨者黑假设,将结果扩展。将已标注节点的概率和未标注节点经过Correct后的概率组成Z矩阵(Corrected Label matrix)

      在这里插入图片描述

      1. Z ( t + 1 ) ← ( 1 − α ) ⋅ Z ( t ) + α ⋅ A ~ Z ( t ) \boldsymbol{Z}^{(t+1)} \leftarrow(1-\alpha) \cdot \mathbf{Z}^{(t)}+\alpha \cdot \widetilde{\boldsymbol{A}} \mathbf{Z}^{(t)} Z(t+1)(1α)Z(t)+αA Z(t)
      2. 在最终的结果,节点所属类别的值并不是概率值,但却能反映概率在这里插入图片描述

Loopy Belief Propagation

思想:节点u认为节点v是类别1的概率是多少,传递消息,当所有节点达到共识时,得到最终结果。

Masked Label Prediction

自监督,收到BERT在NLP领域的启发

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值