【图机器学习系列】(二)从传统机器学习角度理解图(一)

2024-08-24 02:28

本文主要是介绍【图机器学习系列】(二)从传统机器学习角度理解图(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

微信公众号:leetcode_algos_life,代码随想随记
小红书:412408155
CSDN:https://blog.csdn.net/woai8339?type=blog ,代码随想随记
GitHub: https://github.com/riverind
抖音【暂未开始,计划开始】:tian72530,代码随想随记
知乎【暂未开始,计划开始】:代码随想随记

传统角度学习图

  • 从机器学习的角度学习图
    • 图的表达
    • 选择合适的图
    • 图的分类
      • 节点度
      • 二部图
    • 如何构建图
  • 图的表示
    • 邻接矩阵
    • 邻接列表
    • 附加属性
    • 强弱连通图
  • 传统机器学习角度理解图
    • 机器学习管道构建图特征
    • 问题定义
    • 适应性函数学习
    • 图的特征构造
      • 节点度
      • 节点中心性
        • 节点度中心性
        • 特征向量中心性
        • 介数中心性
        • 紧密中心性
      • 集聚系数
      • 图元(Graphlet)
  • 总结
  • 参考资料

从机器学习的角度学习图

图的表达

图一般分为顶点和边,整个结构成为图。
在这里插入图片描述

选择合适的图

图的数学表达是节点和边,在不同应用场景下选择不同场景下的图。
在这里插入图片描述

图的分类

图有有向图和无向图,无向图顾名思义没有方向的图,有向图是指有起始点及指向方向的图。
在这里插入图片描述

节点度

(一)无向图中有节点度的概念

针对某一个节点A,该节点的节点度的概念是,链接当前节点的边的数量。
在这里插入图片描述
(二)有向图中节点度的概念
有向图中,节点度有节点入度和出度。
入度是指指向节点的边的个数
出度是指节点发出的边的个数
该节点的度即为该节点的入度和出度之和。
在这里插入图片描述

二部图

二部图是指有两种类型的节点,假设分为类型A和B类型的节点。
该图只有类型之间链接,即A类型的节点链接B类型的节点。
而在同一个类型内部,节点不链接。即:A类型或者B类型各自类型的内部节点不链接。
在这里插入图片描述

如何构建图

构建图需要确定两件事情:
(1)节点如何定义
(2)边如何定义
在这里插入图片描述

图的表示

图有,主要常见的有:邻接矩阵,

邻接矩阵

如果说,Aij表示从节点i到节点j的链接,如果链接存在,表示为1;如果链接不存在,表示为0。
则有向图和无向图的表示如下:
无向图的邻接矩阵是对称的,正定矩阵。
在这里插入图片描述

在这里插入图片描述

邻接列表

邻接列表是用其中一个节点为key,其value表示的是以该节点为输出的节点list。
具体举例如下:
1节点没有以1节点为起始节点的输出节点,因此,为空。
2节点有以2节点为输出指向3/4节点,因此,2: 3,4。
3节点有以3为节点输出指向2和4节点的,因此,3: 2,4
4节点有以4为节点输出指向5节点的,因此,4:5
5节点有以5节点为输出指向1/2节点的,因此,5: 1,2
因此,邻接列表如下:

1:
2:3,4
3:2,4
4:5
5:1,2

在这里插入图片描述

附加属性

图可以加一些属性,比如,权重等。
在这里插入图片描述
权重在邻接矩阵中也可以表示,
在这里插入图片描述

多图结构的表示如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

强弱连通图

强连通图:简单理解,从节点A到节点B能够形成闭环循环。
在这里插入图片描述
在这里插入图片描述

传统机器学习角度理解图

机器学习管道构建图特征

传统机器学习角度来看,主要是通过构造特征来对目标进行训练。其核心思想是,如何对节点、边和图进行特征设计。
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
因此,针对无向图,本文进行详细阐述如何构造图中的节点、边和整个图的特征。
在这里插入图片描述

问题定义

以无向图为例,该问题定义成,给定顶点和边,如何求解一适应性函数,使得其满足给定特征,预测出目标。
具体接下来,就是如何让适应性函数进行学习?
在这里插入图片描述

适应性函数学习

这里用无向图中的节点分类例子进行说明。
场景:
假设有给定一些节点,预测这些节点的类型。
主要看右侧的图。
在这里插入图片描述
从机器学习角度看,该问题需要构造特征,那么图怎么构造特征呢?

图的特征构造

在这里插入图片描述
图中的各个节点中心度概要简介如下:
在这里插入图片描述

节点度

可以将某一个节点的度数看成是其中一个特征。
但该特征无法反映节点的区别。
在这里插入图片描述

节点中心性

节点中心性有节点度中心性(Degrree centrality)、介数中心性(Betweeness centrality)、紧密中心性(Closeness centrality)、特征向量中心性( Eigenvector centrality)。

在这里插入图片描述

节点度中心性

在这里,节点度中心性的理解是,当前节点连接的节点总数。
背后逻辑是说,一个节点度越大,表示其节点越重要。

归一化的节点度中心性,在节点度的中心性上除以<节点总数-1>,这个可以理解成,一个节点最多和n-1个节点产生链接(自环暂不考虑)。具体计算逻辑如下:
在这里插入图片描述

这里分两个大的情况:

  • 无向图
    无向图不加权图其节点边权重看作1。
    无向图权重图其节点边权重是其权重。

  • 有向图
    有向图不加权图其节点边权重看作1,分入度和出度,总的度数是入度和出度之和。
    有向权重图其节点边权重是其权重,分入度和出度,总的度数是入度和出度之和。

优缺点:
优点:简单,直观,计算复杂度低
缺点:仅考虑节点最局部信息,没有对节点周围环境进行探讨。一个典型例子是微博中的僵尸粉。

特征向量中心性

特征向量中心性数学含义上就是特征向量。作用是为了衡量节点在整个网络中的重要性。
为了解决节点度中的缺点问题,考虑周围节点的向量,但其计算复杂度有所增加。因此,在求解的时候,采用幂代法进行高效求解。后续介绍幂代法。
(一)特征向量中心性介绍
假设邻接矩阵为A,存在一个向量x,则其特征向量中心性为A*x。
在这里插入图片描述
在这里插入图片描述

(二)幂代法求解
整体思路:假设邻接矩阵A(具有特征值和特征向量),给定非零向量x0,则:
x1 = Ax0
x2 = A
x1
x3 = Ax2

xn = A
x(n-1)

考虑到数值可能越界,因此,需要归一化,即:
在这里插入图片描述
其中,
在这里插入图片描述
表示一个向量的2范数,其数值等于向量中各个元素的平方和开根号。

作为代码化,伪代码如下:

for i in range(1, n, 1):x = A*xx = x / sqrt(x*x)

(三)举例
假设一邻接矩阵A和初始向量x0,数值如下图片里数值。
采用幂代法求解特征向量过程如下:
在这里插入图片描述
(四)优缺点
优点:
考虑到不同节点的不同重要程度。比如,院士节点和杰青节点的重要程度肯定不一样。

缺点:
计算复杂度相对较高

介数中心性

介数中心性(Betweenness centrality,BC)度量节点在最短路径中的重要程度。通常认为是最短路径介数中心性(BC),认为网络中所有节点对的最短路径中(一般情况下,一对节点之间存在多条最短路径),经过一个节点的最短路径数越多,这个节点就越重要。
在这里插入图片描述

紧密中心性

紧密度中心性计算的是某一个结点到当前网络内其他所有结点的平均距离,该距离的倒数值称为紧密中心性。
紧密度中心性也叫接近中心性,用于评价一个结点到其他所有结点的紧密程度,适合发掘关键节点。

紧密中心性计算公式如下:
在这里插入图片描述

集聚系数

集聚系数(也称群聚系数、集群系数)是用来描述一个图中的顶点之间结集成团的程度的系数。具体来说,是一个点的邻接点之间相互连接的程度。集聚系数分为整体和局部的,局部是单一节点的,整体为整个图的所有节点的平均值。

在这里插入图片描述

假设当前节点为V,与之连接的节点个数计作 K。
与节点V连接的节点间连接的个数计作 N,
那么 该节点V的集聚系数是:
CC(V) = 2N/(K(K-1))

举例如下:
在这里插入图片描述

在这里插入图片描述

图元(Graphlet)

(一)Graphlet介绍
首先,介绍下连通诱导子图。
所谓,连通诱导子图是指该图中的顶点和边都是从图(Graph)中顶点和边的真子集。
graphlets是指大图(Graph)中节点数目相对较少的连通诱导子图。
即:graphlets指的是连通的非同构子图。

举例如下:

在这里插入图片描述
(二)k节点Graphlets
含 k 个节点的 graphlet记为 k-graphlets.
在这里插入图片描述

在这里插入图片描述
(三)Graphlet度向量
节点的graphlet degree 为包含节点的 graphlet 的个数。
Graphlet Degree Vector指的是各种子图出现的次数(必须包含v,并且必须是完全符合子图,子图包含的节点之间不能有多余的边)。
在这里插入图片描述
上图中,以节点v为参考,

  • a类型的graphlet有两种情况,
  • b类型有1种情况,
  • c类型没有(因为和b的情况,差了一个竖着的边连接),
  • d类型有两种情况,即d旁边的灰色节点当作是节点v。
    这种情况下,组成当前节点的 graphlet degree 为[2,1,0,2]。
    在这里插入图片描述
    在这里插入图片描述

总结

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

参考资料

1、cs224w
2、bilibili图机器学习网址
3、图表示学习书籍
4、图深度学习
5、GNN介绍
6、网络重要节点排序方法综述
7、幂代法样例
8、特征向量中心度及scala源码解析
9、紧密中心性
10、聚类系数视频解释
11、聚类系数论文
12、graphlets诱导子图介绍-论文

这篇关于【图机器学习系列】(二)从传统机器学习角度理解图(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1101189

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

认识、理解、分类——acm之搜索

普通搜索方法有两种:1、广度优先搜索;2、深度优先搜索; 更多搜索方法: 3、双向广度优先搜索; 4、启发式搜索(包括A*算法等); 搜索通常会用到的知识点:状态压缩(位压缩,利用hash思想压缩)。

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

科研绘图系列:R语言扩展物种堆积图(Extended Stacked Barplot)

介绍 R语言的扩展物种堆积图是一种数据可视化工具,它不仅展示了物种的堆积结果,还整合了不同样本分组之间的差异性分析结果。这种图形表示方法能够直观地比较不同物种在各个分组中的显著性差异,为研究者提供了一种有效的数据解读方式。 加载R包 knitr::opts_chunk$set(warning = F, message = F)library(tidyverse)library(phyl

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言