图机器学习-图机器学习传统方法

news2025/1/16 3:39:16

图机器学习-图机器学习传统方法

最近在学习一些GNN相关的知识,想写一些笔记记录一下自己的学习过程,主要的学习资料为CS224W课程主页上面的资料和b站同济子豪兄的中文讲解。这篇博客是我2023年的第一篇博客,想以图机器学习中的传统方法作为博客的内容。

在这里插入图片描述

对于图上面的任务,可以分为几类

  • Node-level prediction,比如银行判断一个用户是否借钱之后会按时还钱
  • Link-level prediction,比如推荐算法判断是否一个用户可能会喜欢某个商品
  • Graph-level prediction,比如制药判断整个分子结构是否会有好的药效

参考之前的传统机器学习,图机器学习也一样需要将node,link或者graph用一些features来表示。这篇博客主要讲的就是一些传统的方法来得到这些features。(本文的例子皆为无向图)

Node-level prediction

Node有很多种描述刻画的方式,比如最直观的node degree,即node上面的link数量(邻居的数量)

在这里插入图片描述

但是node degree中没有体现出邻居节点的重要程度,把影响力大的邻居和影响力小的邻居同等对待。node centrality则克服了这一点。当考虑eigenvector centrality时,一个节点的node centrality表示为邻居节点的node centrality相加。

在这里插入图片描述

那么我们该怎么计算node eigenvector centrality呢?我们可以使用矩阵来计算
在这里插入图片描述

以邻接矩阵的第一行与 c \textbf{c} c相乘为例,得到等式 a λ = A 12 b + A 13 c + A 14 d a \lambda = A_{12}b + A_{13}c + A_{14}d =A12b+A13c+A14d。等式的意义是节点1的centrality是它的邻居的centrality相加再除以 λ \lambda λ A i , j A_{i,j} Ai,j用来控制是否是邻居)。

还有别的centrality也可以计算,比如betweenness centrality。这个标准的考量是一个节点是重要的,假如他在很多别的节点的shortest path上。以下面这张图为例。

在这里插入图片描述

假设我们想计算一下节点c的重要度,其它节点有4个,两两组合有6种,其中A到B,A到D,A到E的最短路径都需要经过C。所以 C C C_C CC为3。

还有别的centrality也可以计算,比如closeness centrality。他认为一个节点是重要的,如果他距离所有别的节点都是近的。

在这里插入图片描述

我们还可以考虑别的特征来刻画一个节点,比如使用graphlets

Graphlet Degree Vector(GDV):Graphlet-base features for nodes

GDV计算的是一个节点接触的graphlets数量(需要注意的是node level定义的graphlets和graph level定义的有些不一样,node level里所有节点都是连接的)。
在这里插入图片描述

课程中举了一个例子,我们一起来看一下。

在这里插入图片描述

以节点u为例子,假设我们要计算size到3的graphlets数量我们可以把u节点编码成为[2,1,0,2]的向量。

Link level prediction

Link level features可以分为三种

  • distance based feature
  • local neighborhood overlap
  • global neighborhood overlap

distance based feature

用节点之间的最短距离来判断两个节点之间的关系紧密程度。

在这里插入图片描述

local neighborhood overlap

在这里插入图片描述

可以使用多种overlap,比如共同邻居的个数,jaccard’s coefficient, Adamic-Adar index。local neighborhood overlap同样也存在着一些的局限,比如有的时候两个节点之间的共同邻居可能不存在等等问题。

global neighborhood overlap

我们可以使用katz index来刻画两个节点之间的关系

katz index: count the number of walks of all lengths between a given pair of nodes。

我们可以使用邻接矩阵的幂来求解katz index

P K \mathbf{P}^K PK来表示整个图节点之间的距离为 K K K的路径个数(可证明 P K = A K \mathbf{P}^K=\mathbf{A}^K PK=AK)。用一个例子说明一下

在这里插入图片描述

红色方框框出来的数字代表节点1到节点2的距离为1的路径的个数为1。

P K = A K \mathbf{P}^K=\mathbf{A}^K PK=AK简单证明
在这里插入图片描述
以2次方为例,蓝色方框圈出来的是与node1距离为1的节点,在这里例子中是2和4。绿色方框圈这一列是与node2距离为1的节点,这两个向量相乘,如果一个节点既与node1距离为1又与node2距离为1那么他就可以为 P 12 \mathbf{P_{12}} P12贡献+1。以此类推得到 P K = A K \mathbf{P}^K=\mathbf{A}^K PK=AK

两个节点之间的katz index可以使用下面的式子计算

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

越长的paht认为越不重要,所以增加了折扣系数。这里需要用到一些等比数列求和的知识。

Graph level prediction

核方法核心思想是通过某种非线性映射将原始数据嵌入到合适的高维特征空间,然后再在高维特征空间上做分类等等任务。

我们可以使用以下的kernel来衡量图的相似度

  • graphlet kernel
  • Weisfeiler-Lehman kernel

我们的目标是设计一个graph feature来表示一张图。我们可以联想到NLP里面的bag of words。BoW使用的是一个文档里面词语出现的次数来刻画一个文档。我们也可以在图里面参考这个思想,用节点的个数来刻画图。这个方法存在着一些缺陷,显而易见的是相同节点个数的图很可能完全不一样。如果再改进一些我们可以使用bag of node degree来刻画图。后面要记录的graphlet kernel和Weisfeiler-Lehman kernel都是借鉴了bag of的思想。

graphlet kernel

graphlet features核心思想是寻找一个图中的graphlets个数(这里graphlet中的节点可以孤立)。下面是一个例子

在这里插入图片描述

Weisfeiler-Lehman kernel

计算graphlet总个数的计算复杂度过高,所以又有了新的算法利用Weisfeiler-Lehman kernel。这个算法使用的思想是color refinement。乍一看很抽象,用例子就会好理解不少。

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

需要注意的是这里算出来的颜色的值并不是根据相加而得来的,而是根据hash table得来。我们可以这样子迭代若干次,最终得到一个图的表示。使用Weisfeiler-Lehman kernel的算法复杂度是O(n),相比于graphlet kernel大大降低。

在这里插入图片描述

Reference:

1:Stanford CS224W

2:b站up主同济子豪兄

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

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

相关文章

项目管理工具dhtmlxGantt甘特图入门教程(八):数据加载(三)

dhtmlxGantt是用于跨浏览器和跨平台应用程序的功能齐全的Gantt图表,可满足项目管理控件应用程序的所有需求,是最完善的甘特图图表库。 这篇文章给大家讲解如何利用 dhtmlxGantt正确保存和显示任务的结束日期,本节将给你一个明确答案。 Dht…

异常-捕获业务异常踩坑记录

事情是这样,用了google的一个本地缓存框架,就是在查询数据的时候如果有就取缓存,没有就发http请求调接口,但是http请求也会有查询失败的时候,查询失败就会手动抛一个业务异常,然后我会在外层各种捕获异常&a…

三消游戏查找算法的原理和实现

本文首发于公众号: 小蚂蚁教你做游戏。欢迎关注领取更多学习做游戏的原创教程资料,每天学点儿游戏开发知识。嗨!大家好,我是小蚂蚁。今天这篇文章分享一下三消查找算法的原理和实现,其实三消的机制最早源于《宝石方块》…

无联不成春,2023创宇网安春联展!

春 联 又叫“春贴”“门对”“对联” 它以对仗工整、简洁精巧的文字 描绘美好形象,寄托美好愿望 是中国独特的文学形式 网络安全的列车已驶入2023,癸卯兔年新春将至! 热爱中华优秀传统文化的创宇人,也纷纷以春联为载体&…

大网进阶安全刷题讲解(带答案)(1)

作者简介:一名云计算网络运维人员、每天分享网络与运维的技术与干货。 座右铭:低头赶路,敬事如仪 个人主页:网络豆的主页​​​​​​ 目录 前言 一.大网进阶安全刷题 前言 本章将会讲解大网进阶安全刷题讲解。 一.大网进阶…

测试开发 | AppCrawler 自动遍历测试实践(二):定制化配置

本文为霍格沃兹测试学院学院学员课程 AppCrawler 学习笔记,文末加群一起学习交流。 定制化配置 自动遍历测试技术以及工具该如何选择和快速入门?经过对比和需求,最终选择测试架构师思寒大佬的 AppCrawler 作为自动遍历测试的工具。以下就分享…

LeetCode 112. 路径总和

🌈🌈😄😄 欢迎来到茶色岛独家岛屿,本期将为大家揭晓LeetCode 112. 路径总和,做好准备了么,那么开始吧。 🌲🌲🐴🐴 一、题目名称 LeetCode 112…

Cadence PCB仿真使用Allegro PCB SI按照指定的规则自动创建差分对方法图文教程

⏪《上一篇》   🏡《总目录》   ⏩《下一篇》 目录 1,概述2,配置方法3,总结1,概述 本文简单介绍使用Allegro PCB SI按照指定的规则自动创建差分的方法。 2,配置方法 第1步:打开待仿真的PCB文件,并确认软件为Allegro PCB SI 如果,打开软件不是Allegro PCB SI则可…

在使用示波器时,为什么有些波形感觉一直在晃?

我们可以从三个角度进行分析: 采样分析: 1、示波器采样信号的过程如上图:采样——处理——采样——处理。 2、处理时间也称死区时间,死区时间内示波器不监测输入信号。 3、提高波形刷新率,实质上是减少了死区时间&…

MyBatis-Plus数据安全保护(配置安全)

SpringBootMyBatis-Plus配置安全 1.该功能为了保护数据库配置及数据安全,在一定的程度上控制开发人员流动导致敏感信息泄露2.加密配置 mpw: 开头紧接加密内容( 非数据库配置专用 YML 中其它配置也是可以使用的 )3.随机密钥请负责人妥善保管&a…

设计模式_创建型模式 -《原型模式》

设计模式_创建型模式 -《原型模式》 笔记整理自 黑马程序员Java设计模式详解, 23种Java设计模式(图解框架源码分析实战) 概述 原型模式 (Prototype Pattern) :用一个已经创建的实例作为原型,通过复制该原型对象来创建…

Kafka的相关知识

一. Kafka基本介绍 Kafka是一个分布式、支持分区的(partition)、多副本的(replica),基于zookeeper协调的分布式消息系统。具有:高吞吐量、低延迟、可扩展性、持久性、可靠性、容错性、高并发等特性。常见的…

RabbitMQ(五)常见面试题

目录1. 什么是 RabbitMQ?2.为什么要使用 RabbitMQ?3.使用 RabbitMQ 的场景4.如何确保消息正确地发送至 RabbitMQ?如何确保消息接收方消费了消息?5.如何避免消息重复投递或重复消费?6.消息基于什么传输?7.消…

基于java ssm springboot网上蛋糕商城项目设计和实现

基于java ssm springboot网上蛋糕商城项目设计和实现 博主介绍:5年java开发经验,专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 超级帅帅吴 Java毕设项目精品实战案例《500套》 欢迎点赞 收藏 ⭐留言 文末获取源…

CAD中还能装ArcGIS?还能加载影像?定义坐标系?

时常我们需要CAD中插入影像 需要CAD数据转换GIS数据 需要CAD加载GIS数据 需要将CAD与GIS数据套库 却被坐标系搞蒙了 今天,我们就来解决以上的问题,介绍一款免费的ArcGIS插件——ArcGIS for AutoCAD。 这个模块插件可以直接访问在线地图。直接在CAD中…

Java实验——定义一个表示学生信息的类Student,要求如下:

一、题目要求 定义一个表示学生信息的类Student,要求如下: (1)类Student的成员变量: sNO 表示学号;sName表示姓名;sSex表示性别;sAge表示年龄;sJava:表示…

测试开发 | 如何模拟真实使用场景?mock 技术来帮你

mock 是一种通过代理修改请求与响应,从而辅助构造更多应用场景的工具。比如在工作中,可能需要 mock 第三方的回调给到测试人员测试的环境,从而更顺利的开展测试工作,也使得测试环境更接近真实的使用场景。Charles 修改请求与响应M…

Android自定义时间选择器

效果图 一、添加NumberPicker开源库 需要添加以下控件 仓库地址: https://github.com/ShawnLin013/NumberPicker implementation io.github.ShawnLin013:number-picker:2.4.13 二、 添加弹出框主题样式 在drawable文件夹下新建一个bg_bottom_dialog.xml&…

jenkins结合gitlable企业集成部署实战

简介 Jenkins是一个开源软件项目,起源于Hudson(Hudson是商用的),是基于Java开发的一种持续集成工具,用于监控持续重复的工作,旨在提供一个开放易用的软件平台,使软件项目可以进行持续集成 1.0 …

新的跨平台渲染引擎:Ab3d.DXEngine 5.2 Crack

用于 WPF 和 WinForms 的 DirectX 11 3D 渲染引擎 Ab3d.DXEngine 是一种超快的 3D 渲染引擎,可用于 .Net 桌面应用程序。采集 by Ω578867473 Ab3d.DXEngine采用超快的多线程渲染技术,可以充分利用显卡,提供与使用C时几乎相同的极致性能。 该…