在图谱当中,有一项很重要的任务,节点分类。该任务通常是给定图中某些节点对应的类别,从而预测出生于没有标签的节点属于哪一个类别,该任务也被称为半监督节点分类。

本文主要要解决的问题就是如何做节点分类。

图中的相互关系

在图谱中,存在着两种重要的相互关系

  • homophily亲和性(我自己的翻译成,不一定准确),具体意思就是指人以群分物以类聚,例如在社交网络中,喜欢蔡徐坤的人通常都会有同样的喜好。
  • influence影响性,某节点的行为可能会影响到和他有关系的节点行为,例如有一天你吃起了螺蛳粉,结果你身边的人都跟着你吃了起来。

那么,如何利用这些关系来预测节点的标签呢?

通常,相似的节点都会紧密相连或者直接相连,而相连的节点大概率会有相同的标签。例如非法网站,通常都会有其它非法网站的链接。因此,我们预测节点类别时,通常会注意以下三个方面信息:

  • 目标节点特征
  • 目标节点的邻居节点的labels
  • 目标节点的邻居节点的特征

有了以上的概念,我们就具体来看下有哪些节点分类的方法。注意,以下算法都遵循马尔科夫假设,即节点i的标签只是其邻居节点的标签有关系。

Probabilistic Relational Classifier概率关系分类器

基本思想:某节点的label是其邻居节点的对应的label概率的均值。

首先初始化已经存在label的节点标签概率,正例是1,负例是0,对于没有标签的全部设置为0.5,然后对所有没有标签的节点进行概率更新,直到收敛或者得到最大的迭代次数。(感觉是一个马尔科夫过程)

P(Yi=c)=1(i,j)EW(i,j)(i,j)EW(i,j)P(Yj=c)P(Y_i=c)=\frac{1}{\sum_{(i,j) \in E}W(i,j)}\sum_{(i,j)\in E}W(i,j)P(Y_j=c)

其中W(i,j)W(i,j)表示的是节点ii与节点jj的边的权重。

接下来我们来看一个具体的例子:

初始化所有节点的概率值,没有标签的节点采用均匀分布设置为0.5
图算法之节点分类Node Classification

对节点3进行新的概率更新

图算法之节点分类Node Classification
对节点4进行概率更新
图算法之节点分类Node Classification

迭代一轮

图算法之节点分类Node Classification

迭代五轮

图算法之节点分类Node Classification

五轮迭代后,所有的概率值都趋于稳定,此时节点5、8、9对应的概率值大于0.5,设置为正例,节点3概率值小于0.5设置为负例,节点4概率值趋于0.5则正负都有可能。

图算法之节点分类Node Classification

缺点:

  • 收敛难以得到保障(节点4)
  • 没有利用节点的特征信息

Iterative Classification迭代分类

Iterative classification实际上就是考虑关系的同时也考虑节点的的属性,主要包括三点

  • 对于节点ii,创建一个向量aia_i
  • 使用aia_i来训练分类器(例如LR、SVM等)
  • 如果一个节点有多个邻居节点,做一个聚合操作,计算其数量,众数,比例,均值,是否存在邻居等。

训练过程和上一个算法类似,不停的迭代更新每一个节点的label,注意因为节点的改变,对应的节点的向量aia_i也需要更新。知道label稳定,或者达到最大的迭代次数,训练结束。

缺点:
该算法的收敛依旧没有得到保证。

未完待续…争取6月2日更新完

相关文章:

  • 2022-12-23
  • 2021-07-18
  • 2022-01-12
  • 2021-07-29
  • 2022-01-11
  • 2021-12-25
  • 2022-12-23
猜你喜欢
  • 2021-07-23
  • 2022-12-23
  • 2021-05-23
  • 2021-08-24
  • 2022-12-23
相关资源
相似解决方案