《图机器学习》-Message Passing and Node Classification

news2024/11/19 5:46:18

Message Passing and Node Classification

  • 一、前言
  • 二、How do we leverage node correlation in network?
  • 三、Relational Classification
  • 四、Iterative classification
  • 五、Loopy Belief Propagation

一、前言

现在的主要问题是:
给定一个网络,其中一些节点上有标签,我们如何将标签分配给网络中的所有其他节点?

实际问题:
在网络中,一些节点是欺诈者,而另一些节点是完全可信的。如何发现其他欺诈者和可信赖节点?

这是一个半监督问题:

  • 给定一些节点的标签
  • 让我们预测未标记节点的标签
  • 这被称为semi-supervised node classification

在这里插入图片描述
我们可以使用Node Embedding来解决这个半监督分类问题。但本文讨论另一种框架:消息传递(Message passing)。

该方法的思想是:
网络中存在相关性(依赖关系),即相似节点间存在链接。

  • 节点的行为在网络的各个链路上是相互关联的
  • 相关性:相邻节点颜色相同(属于同一类)
    在这里插入图片描述

为什么网络中节点的行为是相关的有两种解释:

  • 以社交圈为例子,具有相似特征的人倾向于相互联系,这是社会科学的同质性(Homophily)概念。
    在这里插入图片描述
    可以理解成:物以类聚,人以群分。如:专注于同一研究领域的研究人员更有可能建立联系(在会议上见面,在学术讲座上互动等)。

  • 社会关系会影响我们自己的特征或我们自己的行为
    如:我把我喜欢的音乐推荐给我的朋友们,直到他们中的一个越来越喜欢我最喜欢的音乐类型!
    在这里插入图片描述

本文将讲三种实现技术:

  • Relational classification
  • Iterative classification
  • Correct & Smooth

二、How do we leverage node correlation in network?

我们如何利用网络中观察到的这种相关性来帮助预测节点标签?

  • Motivation(1):相似的节点通常紧密相连或在网络中直接连接:
    • Guilt-by-association:
      如果我链接到一个标签为X的节点,那么我可能也有标签X。
    • 例如:恶意/良性网页:
      恶意网页相互链接,以增加可见性,看起来可信,并在搜索引擎中排名更高
  • Motivation(2):网络中节点的分类标签可能依赖于:
    • v节点的features
    • v节点邻居节点的标签
    • v节点邻居节点的features

半监督学习问题描述:

  • 给定:
    • Graph
    • 一些带有标签的节点
  • 任务:
    对剩余节点进行分类
  • 解决问题的主要假设:
    网络中存在同质性(Homophily)

示例任务:

  • 设A为 n × n n\times n n×n邻接矩阵
  • Y = { 0 , 1 } n Y=\{0,1\}^n Y={0,1}n为标签集:
    • Y v = 1 Y_v=1 Yv=1则属于 C l a s s   1 \color{green}{Class\ 1} Class 1
    • Y v = 0 Y_v=0 Yv=0则属于 C l a s s   0 \color{red}{Class\ 0} Class 0
    • 有未标记的节点需要分类
  • 目标:预测哪些未标记的节点可能是 C l a s s   1 \color{green}{Class\ 1} Class 1,哪些可能是 C l a s s   0 \color{red}{Class\ 0} Class 0

如下图;每个节点v都有一个特征向量 f v f_v fv,给出了一些节点的标签。
任务是:考虑到所有的特征和网络,找到 P ( Y v ) P(Y_v) P(Yv)

在这里插入图片描述


实际应用:

  • 文档分类
  • 词性标注
  • 链接预测
  • 光学字符识别
  • 图像/3D数据分割
  • 传感器网络中的实体解析
  • 垃圾邮件和欺诈检测

三、Relational Classification

I d e a Idea Idea
在网络中传播节点标签;如节点 v v v的类概率 Y v Y_v Yv是其邻居类概率的加权平均。

在初始化时:

  • 对于有标签的节点 v v v,初始化 Y v Y_v Yv为ground-truth label Y v ∗ Y^*_v Yv
  • 对于无标签的节点,初始化 Y v = 0.5 Y_v=0.5 Yv=0.5

然后按随机顺序更新所有节点,直到收敛或达到最大迭代次数为止。

节点 v v v的类概率更新公式如下:
在这里插入图片描述

  • 如果边有强度/重量信息, A v , u A_{v,u} Av,u是u和v之间的边的权重。
  • 前面的 1 ∑ \frac{1}{\sum} 1项是归一化,确保 P ( Y v ) P(Y_v) P(Yv)在0-1之间
  • P ( Y v = c ) P(Y_v=c) P(Yv=c)表示节点标签为 c c c的概率

这个方法存在两个问题:

  • 不能保证收敛
  • 模型不能使用节点特征信息

实例:

对下图灰色节点进行分类,红色和绿色节点表示已知标签的节点。 P Y P_Y PY表示其标签为1(绿色)的概率。

在这里插入图片描述

  • 初始化:

    • 有标签的节点初始化为ground truth
    • 没标签的节点初始化为0.5
  • 第一轮迭代:按1-9的次序更新节点

    • 更新节点3:
      在这里插入图片描述

    • 节点3更新完后,更新节点4:
      在这里插入图片描述

    • 以同样的方式顺序更新节点5、2、9:
      在这里插入图片描述

  • 第二轮迭代:按1-9的次序更新节点
    在这里插入图片描述
    节点9的标签未变,即节点9收敛了,将节点9的值固定,后续不做更新。

  • 第三轮迭代:
    在这里插入图片描述
    节点8收敛了,将节点8的值固定,后续不做更新。

  • 第四轮迭代:
    在这里插入图片描述
    节点5、3收敛了,将节点5、3的值固定,后续不做更新。

  • 第五轮迭代:【这轮迭代可省,因为其余顶点都收敛了】
    在这里插入图片描述
    所有节点都收敛了

  • 我们可以预测:

    • 节点4,5,8,9属于class 1( P Y v > 0.5 P_{Y_v}>0.5 PYv>0.5)
    • 节点3属于class 0( P Y v < 0.5 P_{Y_v}<0.5 PYv<0.5)

这个方法没有用到节点的feature,下面介绍一个使用了feature的方法: I t e r a t i v e   c l a s s i f i c a t i o n Iterative\ classification Iterative classification


四、Iterative classification

Relational classifier没有用节点属性。

Iterative classification的主要思想是:
根据节点 v v v的属性 f v f_v fv以及邻居集 N v N_v Nv的标签 z v z_v zv对节点 v v v进行分类。


问题描述

  • 输入:图 G G G
    • 每个节点 v v v都有特征向量 f v f_v fv
    • 部分节点 v v v有标签 Y v Y_v Yv
  • 任务:
    预测未标记节点的标记
  • 方法:训练两个分类器
    • ϕ 1 ( f v ) = \phi_1(f_v)= ϕ1(fv)=根据节点特征向量 f v f_v fv预测节点标签。称为base classifier。
    • ϕ 2 ( f v , z v ) = \phi_2(f_v,z_v)= ϕ2(fv,zv)=根据节点特征向量 f v f_v fv v v v的邻居标签的汇总 z v z_v zv来预测标签。称为relational classifier。

如何计算 z v z_v zv
我们通过节点 v v v的邻居节点的标签来定义 z v z_v zv,即 z v z_v zv=捕获节点 v v v周围标签的向量; z v z_v zv可以定义为:

  • N v N_v Nv中每个标签的数量的直方图(或分数)
  • N v N_v Nv中最常见的标签
  • N v N_v Nv中不同标签的数量

Iterative classification整体框架:

  • 阶段一:仅根据节点属性进行分类

    • 在标记的训练集中,训练两个分类器:
      • Base classifier: ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)根据 f v f_v fv来预测 Y v Y_v Yv
      • Relational classifier: ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)根据 f v f_v fv v v v的邻居标签的汇总 z v z_v zv来预测Y
  • 阶段二:迭代直到收敛

    • 在测试集上,根据分类器 ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)设置标签 Y v Y_v Yv,计算 z v z_v zv,用 ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)预测标签
    • 对每个节点 v v v重复此步骤:
      • 基于 Y u , u ∈ N v Y_{u,u∈N_v} Yu,uNv更新 z v z_v zv
      • 基于 新的 z v 新的z_v 新的zv使用 ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)更新 Y v Y_v Yv
    • 迭代直到类标签稳定或达到最大迭代次数
    • 注意:不保证收敛

实例:网页分类

  • 输入:Graph of web pages

  • 顶点:网页

  • 边:超链接

  • Node feature:网页描述

    • 为了简单描述,我们只考虑两个二进制特征
  • 任务:预测网页的主题

  • 首先,训练分类器 ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)(如线性分类器)根据节点属性对页面进行分类。
    在这里插入图片描述
    当然,仅基于 f v f_v fv预测是不够准确的,所有会出现错误的预测值,如上图的灰色节点。

  • 第二步:每个节点维护邻域标签向量 z v z_v zv:
    这里 z v z_v zv:采用四维向量,四个元素分别为指向该节点的节点中标签为0和1的数目、该节点指向的节点中标签为0和1的数目。
    4维向量分为两个二维的向量 I I I O O O

    • I I I:指向该节点的节点中标签为0和1的数目
    • O O O:该节点指向的节点中标签为0和1的数目
      在这里插入图片描述
  • 第三步:在没有标记的数据集上,使用分类器 ϕ 1 ( f v ) \phi_1(f_v) ϕ1(fv)去设置 Y v Y_v Yv

  • 第四步:迭代以下两个步骤,直到收敛或者达到最大迭代次数

    • 更新所有节点的 z v z_v zv
    • 使用 ϕ 2 ( f v , z v ) \phi_2(f_v,z_v) ϕ2(fv,zv)更新 Y v Y_v Yv
      在这里插入图片描述

五、Loopy Belief Propagation

Belief Propagation是一个用于回答图中的概率问题的动态方法。(如回答节点v属于class 1的概率)
迭代的过程就是邻居节点之间相互“talk”、相互传递信息(passing messages)的过程。

例子1:
以课堂为例子,学生们视为节点,位置相邻的学生可以互相传递消息,告诉对方我认为拟可能是class 1的概率。某个学生获得邻居的信息后,会汇总得出结论,再把消息传递给他的邻居。(就像传字条)
在这里插入图片描述

例子2:计算图中有几个节点
条件:每个节点只能和它的邻居pass message

  • path graph(路径图):
    在这里插入图片描述
    • 算法流程:
      • 定义节点的顺序:1-6
      • 边的方向(消息传递的方向)取决于节点的顺序
      • for node i from 1 to 6:
        • 计算要从i传递到i+1的message
        • 将消息从节点i传递到i+1节点

在这里插入图片描述

  • Tree(树状图):
    将path graph泛化到树结构的图上
    • 算法流程:
      • 节点顺序:从叶子节点到根节点传递信息
      • 子节点向父节点传递信息,父节点汇总子节点信息并更新信息,向其父节点传递信息。
      • 如下图,4节点汇总子节点7、6的信息,并在本地计算更新信息,将更新的信息继续向上传递给父节点3
        在这里插入图片描述
        直到消息传到根节点,消息传递结束
        在这里插入图片描述

Message Passing可总结未4个步骤:

  • 收集
  • 计算
  • 更新
  • 创建new message并传递

符号标识:

  • Label-label potential matrix ψ \psi ψ:节点与它邻居之间的依赖性。
    ψ ( Y i , Y j ) \psi(Y_i,Y_j) ψ(Yi,Yj)表示,在给定 j j j的邻居 i i i是class Y i Y_i Yi的情况下,节点 j j j属于class Y j Y_j Yj的概率
  • Prior belief ϕ \phi ϕ ϕ ( Y i ) \phi(Y_i) ϕ(Yi)表示节点i属于 Y i Y_i Yi的概率
  • m i → j ( Y j ) m_{i→j}(Y_j) mij(Yj):表示节点 i i i的关于评估节点 j j j属于 Y i Y_i Yi的消息
  • L L L:标签集和

L o o p y    B P    A l g o r i t h m Loopy\ \ BP\ \ Algorithm Loopy  BP  Algorithm

以下图为例:
在这里插入图片描述

流程:

  • 初始化所有节点的message为1
  • 对所有节点进行重复计算:
    • 计算需要传递的信息:
      在这里插入图片描述
      k∈Ni\j:除了j以外i的邻居节点
  • 个人对公式的理解:
    • 粉色部分:
      汇总所有的类别信息,即i在不太类别情况下传递的message是不一样的,需要进行汇总。
      如,i节点是class 0的情况下,会告诉j你和我有点像,i节点是class 1的情况下,会告诉j你和我一点都不像,汇总起来就是j是class 0的概率很大。
    • 绿色部分 × \times ×红色部分:
      i节点是calss Y i Y_i Yi的情况下,j节点是 Y j Y_j Yj的概率。这里 Y i Y_i Yi不同,则结果也会不同,就是粉色部分说的message不同的意思。
    • 蓝色部分:
      i的邻居k告诉i:i节点是类别 Y i Y_i Yi这个问题,我向你提供这个信息
  • 公式可以从右向左看:
    • 首先是:i的邻居节点向i提供其类别是 Y i Y_i Yi的证据(证据指邻居节点有多大概率认为是Yi)【蓝色部分】
    • 拿到证据后,再结合自身的情况,判断自己可能是 Y i Y_i Yi的概率【红色部分】
    • 现在i对自己是 Y i Y_i Yi有了一定的判断,通过依赖矩阵 ψ \psi ψ来提供j节点你可能和我一样是 Y i Y_i Yi的证据。【绿色部分】
    • 枚举 Y i ∈ L Y_i∈L YiL,将证据汇总,就是i要传递给j的message【粉色部分】
  • 收敛后,计算 b i ( Y i ) b_i(Y_i) bi(Yi),即节点i输出Yi的置信度
    在这里插入图片描述

上面的例子都是无环图,Loopy BP Algorithm也能运用于有环图中,这也是loopy含义。

  • 现在我们开始考虑有环图
  • 在有环图中,我们不规定节点顺序。而是从随机节点开始,执行Loopy BP Algorithm,沿着边更新邻居节点。

在有环图中:

  1. 从不同子图中传递的信息不再相互独立

    • 如下图:u获得的传递信息可能来自于i或者k,而i和k的信息都是从j处传递过来的。即信息再传递到u时,j已经和“talk”两次了,传递的信息并不似相互独立的。
      在这里插入图片描述
  2. 信息会在圈子里加强

    • 就类似PageRank的spider trap,message不断地在圈子里循环,不断地被加强。
      在这里插入图片描述

    • 实例:
      在这里插入图片描述

上述现象会导致算法不能够收敛,但是在实际应用中,由于现实世界的真实复杂图会更像树,就算有环也会有弱连接,所以还是能用Loopy BP Algorithm。

在这里插入图片描述


Belief Propagation的优点:

  • 易于编程和并行运算
  • 可泛化到任何形式的图模型上

挑战:

  • 不一定能够收敛,特别是含有环的时候
  • ψ ( Y i , Y j ) \psi(Y_i,Y_j) ψ(Yi,Yj)矩阵参数需要去训练和评估

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163514.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

利用idea把项目上传到不同的仓库

前言 以项目已经创建好&#xff0c;并已经和一个远程仓库地址联通的情况下。 由于GitHub经常会出现问题&#xff0c;毕竟国外的东西&#xff0c;时常会不稳定&#xff0c;所以我们有时候也会使用国产Git代码管理工具——码云。 说真的&#xff0c;码云可真的是一个好东西。要…

SpringBoot原理-自动配置-Condition

目录 分析 通过获取 run() 的返回值再获取容器中的bean Conditional() 注解 解说案例 1.导入Jedis坐标后&#xff0c;加载该Bean&#xff0c;没导入&#xff0c;则不加载 思考 spring-boot-autoconfigure condition包 ConditionalOnClass ConditionalOnBean Conditi…

Python【bs4模块】讲解

导入&#xff1a;from bs4 import BeautifulSoup#爬取某豆的电影榜单 import pprint import requests from bs4 import BeautifulSoup class pachong:#pass #这段代码的意思如果暂时没有想好在类中定义任何属性和方法&#xff0c;你可以先写pass Python就会认为这段不会运行直接…

基于GeoDa软件的省级人口经济空间分析

前言本为从地统计学角度&#xff0c;借助空间自相关的方法&#xff0c;从县域尺度&#xff0c;研究江西省各县经济发展水平之间的相关关系&#xff0c;及经济发展与人口之间的相关关系&#xff0c;直观的说明江西省2000年的经济发展状况。通过对各市第一、第二、第三产业的GDP等…

Servlet总结(未完待续)

Servlet总结一. 简介二. Servlet执行流程三. 生命周期四. 体系结构五. urlPattern配置匹配规则六. Request和Response1. Request1.1 Request继承体系1.2 Request获取请求数据API1.3 通用方式获取请求参数1.4 通用方式中文乱码解决1.5 Request请求转发2.1 Response一. 简介 Ser…

轻量级 Java 权限认证框架——Sa-Token

Sa-Token 介绍 Sa-Token 是一个轻量级 Java 权限认证框架&#xff0c;主要解决&#xff1a;登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。 Sa-Token最新开发文档地址&#xff1a;https://sa-token.cc Sa-Token功能结构图…

MySQL最左匹配原则

说到最左匹配原则&#xff0c;我们还得先从组合索引说起。 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS 0;-- ---------------------------- -- Table structure for user -- ---------------------------- DROP TABLE IF EXISTS user; CREATE TABLE user (id int(5) NOT NU…

【Java AWT 图形界面编程】LayoutManager 布局管理器 ⑥ ( BoxLayout 布局 )

文章目录一、BoxLayout 布局二、BoxLayout 布局 API三、BoxLayout 布局代码示例1、BoxLayout 布局垂直排列代码示例2、BoxLayout 布局水平排列代码示例一、BoxLayout 布局 BoxLayout 布局 不是 AWT 中的布局 , 而是 Swing 中引入的 ; 在 BoxLayout 布局 中 , 可以 在 垂直 和 …

[Effective Objective] 对象、消息、运行期

对象&#xff1a;“对象”&#xff08;object&#xff09;就是“基本构造单元”(building block)&#xff0c;开发者可以通过对象来储存并传递数据。 消息&#xff1a;在对象之间传递数据并执行任务的过程就叫做“消息传递”&#xff08;Messaging&#xff09;。 运行期&…

最粗暴的方法实现一个栈

对于栈和队列是一个很简单的知识&#xff0c;用的感觉也不是很多&#xff0c;但是&#xff0c;我们仍然的学习&#xff01;&#xff01;加油&#xff01;&#xff01;在实现最简单的栈之前&#xff0c;我们需要简单了解一下栈是什么&#xff1f;&#xff1f;栈&#xff08;stac…

iplatform平台简介

前置条件&#xff1a;原则规范一&#xff09;统一技术栈1&#xff09;关于JDK统一使用Open JDK&#xff0c;版本最低1.8&#xff0c;几年后可能会升级到17&#xff1b;避免使用Sun JDK&#xff0c;这是商业软件&#xff0c;而且包含部分私有&#xff08;com.sun&#xff09;类库…

pandas 实战:分析三国志人物

简介 背景 Pandas 是 Python 的一个工具库&#xff0c;用于数据分析。由 AQR Capital Management 于 2008 年 4 月开发&#xff0c;2009 年开源&#xff0c;最初被作为金融数据分析工具而开发出来。Pandas 名称来源于 panel data&#xff08;面板数据&#xff09;和 Python d…

基于SEIR模型的传染病预测软件开发(完整代码+数据集+报告)

1 操作页面及用户使用说明(1) 界面说明App页面主要分为4个区域&#xff0c;分别是&#xff1a;曲线显示区、模型初始化和预防参数设定区、传染病特征参数设定区、绘图控制区。① 曲线显示区&#xff1a;显示模型预测的不同人数量随时间的变化曲线。② 模型初始化和预防参数设定…

泛函分析中的向量空间

一、向量空间背景 (1) 具有如下点内积或标量内积的实数域RRR上的欧式空间RNR^NRN&#xff1a; ⟨u,v⟩uTvu0v0u1v1⋯uN−1vN−1∑i0N−1uivi\langle\boldsymbol{u}, \boldsymbol{v}\rangle\boldsymbol{u}^{\mathrm{T}} \boldsymbol{v}u_{0} v_{0}u_{1} v_{1}\cdotsu_{N-1} v_{…

SpringCloud-Netflix学习笔记——微服务和微服务架构

一、什么是微服务&#xff1f; 什么是微服务&#xff1f;微服务&#xff08;Microservice Architecture&#xff09;是近几年流行的一种架构思想&#xff0c;关于它的概念很 难一言以蔽之。究竟什么是微服务呢&#xff1f;我们在此引用 ThoughtWorks 公司的首席科学家 Martin F…

谷粒商城-高级篇-Day11-商城业务

文章目录整合thymeleaf渲染页面页面修改不重启服务器实时更新渲染二三级数据nginx-搭建域名访问环境一nginx-搭建域名访问环境二整合thymeleaf渲染页面 将index放到product的资源下的static目录&#xff0c;index.html放到templates文件夹下 导入thymeleaf <!-- 模板引擎…

【Acwing寒假2023每日一题】4700. 何以包邮?- 01背包dp至少模板

4700. 何以包邮&#xff1f; - AcWing题库 设满x元包邮&#xff0c;题目要求总价值至少x的最小价值 目录 1、一维 01背包-至少模板 至少模板和至多模板的两大区别 2、二分 二维 01背包-至多模板 &#xff08;1&#xff09;二维dp 3、逆向思维 一维 01背包-至多模板 1…

1.环境搭建 创建spring boot 项目(mac)

1.安装maven 首先你需要在maven官网上下载mac专用的二进制maven压缩包。也就是下图的这个&#xff1a; 然后&#xff0c;开始我们的配置。 1、打开终端&#xff0c;输入这个代码&#xff1a; vim ~/.bash_profile 2、然后点击键盘上的“i”&#xff0c;进入vim编辑模式&…

【BBuf的CUDA笔记】五,解读 PyTorch index_add 操作涉及的优化技术

本文把pytorch index_add算子的代码抽取出来放在&#xff1a;https://github.com/BBuf/how-to-optim-algorithm-in-cuda/blob/master/indexing/index_add_cuda_pytorch_impl.cu 。如果不太熟悉PyTorch的话也可以直接看这个.cu文件&#xff0c;有问题请在这个repo提issue。 0x0.…

2022,我感受到了CSDN不平凡

最初注册CSDN&#xff0c;只是因为老师的要求&#xff0c;负责教C课程的老师让同学们注册CSDN&#xff0c;并经常更新自己的博客。虽然注册了CSDN的博客&#xff0c;也写了几篇博客文章&#xff0c;可最初我并不理解老师为什么要让我们注册&#xff0c;可是随着在CSDN驻留时间的…