图机器学习(消息传递在节点分类使用)
1. 前言
1. 概述
给定网络中部分节点的标签,如何用它们来分配整个网络中节点的标签?已知网络中有一些诈骗网页,有一些可信网页,如何找到其他诈骗和可信的网页节点?
在第三、四章中针对节点分类打标签问题的一种解决方式是node embeddings,本章将采用Message Passing的方式来解决上述的问题
具体步骤如下:
-
局部分类器:用于初始标注分配
- 根据节点的自身属性性对其类型进行标注
- 标准的分类任务
- 不使用任何的网络信息
-
关系分类器:捕获节点之间的相关性
- 学习分类器基于其邻居的标签或属性来标记一个节点
- 这里使用了网络信息的地方
-
集体推理:通过网络结构来传播相关性
- 以迭代方式将关系分类器应用于每个节点
- 一直迭代,直到相邻标签之间的不一致最小化
- 网络结构会影响到最终的预测结果
2. message passing
根据上面的基本概念的了解,message passing的核心思想就是collective classification(集体分类)
1. 网络中存在关系correlations:相似的行为在网络中会互相关联。correlation:相近的节点会具有相同标签。
2. 网络中存在关联的解释
-
homophily:个人影响网络,相似节点会倾向于交流、关联(物以类聚,人以群分)在网络研究中得到了大量观察。
举例:同领域的研究者更容易建立联系,因为他们参加相同的会议、学术演讲……等活动
-
influence:网络影响个人,社交链接会影响个人行为。
举例:用户将喜欢的音乐推荐给朋友。
- confounding:节点的影响是多维度的
举例:环境影响我们的很多维度,说什么语言、听什么歌、有什么政治倾向等
3. 半监督【1】学习
假设网络中存在homophily,根据一部分已知标签(红/绿)的节点预测剩余节点的标签如
【1】训练数据中一部分有标签,剩下的没标签,这种就是半监督学习
4. 在半监督学习下如何预测其他节点的标签的解决思路
collective classification是一个很好的解决半监督学习中问题的一个方法,具体来说collective Classification Model共有三种:
- Relational classifiers:分配节点的初始标签(基于节点特征建立标准分类,不使用网络结构信息)
- Iterative classification:捕获关系(基于邻居节点的标签 和/或 特征,建立预测节点标签的分类器模型)(应用了网络结构信息)
- Loopy belief propagation:传播关系(在每个节点上迭代relational classifier,直至邻居间标签的不一致最小化。网络结构影响最终预测结果)
2. Relational Classification / Probabilistic Relational Classifier
1.基本思路
-
节点v的类概率 Y v Y_v Yv是其邻居类概率的加权平均值。
-
对于有标签节点V,固定 Y v Y_v Yv为真实标签
-
对于无标签节点V,初始化 Y v = 0.5 Y_v=0.5 Yv=0.5
-
最后以随机顺序(不一定要是随机顺序,但实证上发现最好是。这个顺序会影响结果,尤其对小图而言)更新所有无标签节点,直至收敛或到达最大迭代次数
-
更新公式为:
P ( Y v = C ) = 1 ∑ ( v , u ) ∈ E A ( v , u ) ∑ ( v , u ) ∈ E A ( v , u ) P ( Y u = C ) 邻接矩阵 A v , u 可以带权,分母是节点 v 的度数或者入度, P ( Y v = C ) 是节点 v 标签为 c 的概率 , 这里的公式是没有考虑边的权重的,如果有权重可以直接带入邻接矩阵 A 中即可。 P(Y_v=C)=\frac{1}{\sum_{(v,u)\in E}A_{(v,u)}}\sum_{(v,u)\in E}A_{(v,u)}P(Y_u=C)\\ 邻接矩阵A_{v,u}可以带权,分母是节点v的度数或者入度,P(Y_v=C)是节点v标签为c的概率,\\这里的公式是没有考虑边的权重的,如果有权重可以直接带入邻接矩阵A中即可。 P(Yv=C)=∑(v,u)∈EA(v,u)1(v,u)∈E∑A(v,u)P(Yu=C)邻接矩阵Av,u可以带权,分母是节点v的度数或者入度,P(Yv=C)是节点v标签为c的概率,这里的公式是没有考虑边的权重的,如果有权重可以直接带入邻接矩阵A中即可。
2. 该思路出现的问题
- 不一定能收敛
- 模型无法使用节点自身的特征信息
3. 举例
- 初始化:迭代顺序就是node-id的顺序。有标签节点赋原标签,无标签节点赋0.5如
-
第一轮迭代
- 随机顺序,例如从3号节点开始
- 跟新节点4
- 更新节点5
- 更新完所有无标签节点
- 第二轮迭代:结束后发现节点9收敛
(figure 77)
- 第三轮迭代:结束后发现节点8收敛
- 第四轮迭代:完成所有节点,并收敛。收敛后,预测概率>0.5的节点为1,<0.5的为0
3. Iterative Classification
1. 基本思路
1. 由于relational classifiers没有使用节点特征信息,所以我们使用新方法iterative classification。iterative classification主思路:基于节点特征及邻居节点标签对节点进行分类。
2. iterative classification的方法是训练两个分类器:
- ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)基于节点的特征向量 f v f_v fv预测节点标签
- ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)基于节点特征向量 f v f_v fv和邻居节点标签summary z v z_v zv预测节点标签
3. 计算summary z v z_v zv
z v z_v zv是个向量,计算summary z v z_v zv的方法有很多,可以是邻居标签的直方图(个标签数目或比例)、邻居标签中出现次数最多的标签、邻居标签的类数
2. Iterative Classification的结构
-
第一步:基于节点特征建立分类器
在训练集上训练如下分类器(可以用线性分类器、神经网络等算法):
- ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)基于 f v f_v fv预测 Y v Y_v Yv(初始化)
- ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)基于节点特征向量 f v f_v fv和邻居节点 z v z_v zv预测 Y v Y_v Yv(迭代预测)
-
第二步:迭代至收敛
在测试集上,用 ϕ 1 \phi_1 ϕ1预测标签,根据 ϕ 1 \phi_1 ϕ1计算出的标签计算 z v z_v zv并用 ϕ 2 \phi_2 ϕ2预测标签对每个节点重复迭代计算 z v z_v zv、用 ϕ 2 \phi_2 ϕ2预测标签这个过程直至收敛或到达最大迭代次数(模型不一定收敛)
3.举例
1.网页在算法上的定义:
- 输入:网页作为图数据输入
- 节点:网页
- 边:网页之间的超链接(有向边:一个页面指向另一个页面)
- 节点特征:网页上的描述(为了简化,我们只考虑二维二元向量)
- 任务:预测网页的主题
2. 训练过程
- 先训练一个分类器 ϕ 1 \phi_1 ϕ1,基于二维特征 f v f_v fv得到节点的标签,当让这个分类器不用很复杂(eg.线性分类器)
-
由于这里是有向图,用四个维度来表示 z v z_v zv(其中 I I I表示入度、O表示出度), I 0 = 1 I_0=1 I0=1表示至少有一个标签为0的页面指向当前页面,其他维度类似。因此(figure 80)的 z v z_v zv表示为(figure 81)
-
具体步骤:
第一步:在训练集上训练 ϕ 1 和 ϕ 2 \phi_1和\phi_2 ϕ1和ϕ2(绿色圈训练的 f v f_v fv训练 ϕ 1 \phi_1 ϕ1,用红色圈的 f v , z v f_v,z_v fv,zv训练 ϕ 2 \phi_2 ϕ2)(figure 82)
第二步:在测试集上预测标签,因为只是使用了第一个分类器 ϕ 1 \phi_1 ϕ1,所有得到的 Y v Y_v Yv还是很不准确的
第三步:循环迭代
首先利用 Y v 得到 z v Y_v得到z_v Yv得到zv来更新所有的节点的 z v z_v zv
其次 f v , z v f_v,z_v fv,zv训练 ϕ 2 \phi_2 ϕ2,得到新的 Y v Y_v Yv
最后循环直至收敛
基本步骤为
train classifier
apply classifier to test set
iterate
update relational features z_v
updata label Y_v
4.总结
- relational calssification:更新节点归属于基于邻域的标签类的概率
- iterative classification : 更新节点除了领域标签还添加了节点本身的特征,让分类效果更好了。