当前位置: 首页 > news >正文

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

微信公众号: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诱导子图介绍-论文

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 正交试验法(或PICT)来设计测试用例
  • 如何使用ssm实现在线云音乐系统的设计与实现
  • 探索提示工程 Prompt Engineering的奥妙
  • 通过 OpenAI Embedding 接口计算相似度
  • 四川财谷通,信息科技引领者!
  • GAMES101——作业5 光线与三角形相交(菲涅尔反射率)
  • Java笔试面试题AI答之线程(11)
  • 解决 Navicat 删除唯一键(unique)后保存失败的问题:1-near “)“:syntax error
  • arthas源码刨析:arthas 命令粗谈(3)
  • MySQL数据库锁机制(全面讲解)
  • 七、SPA单页面实现SEO优化之SSR服务器渲染
  • 8.17day bug
  • 国际校企合作|深信服、常州信息职业技术学院、马来西亚汽车工业大学三方国际化人才培养合作签约仪式圆满成功
  • 机器学习辅助复合材料预测,性能管理优化创新材料,这种王炸般的组合,还真是大开眼界!
  • XSS- - - DOM 破坏案例与靶场
  • Android 控件背景颜色处理
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • php面试题 汇集2
  • SpringCloud集成分布式事务LCN (一)
  • vuex 笔记整理
  • 什么软件可以剪辑音乐?
  • 适配mpvue平台的的微信小程序日历组件mpvue-calendar
  • 微信端页面使用-webkit-box和绝对定位时,元素上移的问题
  • 异常机制详解
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • ​一文看懂数据清洗:缺失值、异常值和重复值的处理
  • # 数仓建模:如何构建主题宽表模型?
  • #LLM入门|Prompt#3.3_存储_Memory
  • $ git push -u origin master 推送到远程库出错
  • (LeetCode) T14. Longest Common Prefix
  • (PWM呼吸灯)合泰开发板HT66F2390-----点灯大师
  • (pytorch进阶之路)扩散概率模型
  • (回溯) LeetCode 46. 全排列
  • (十二)Flink Table API
  • (转)nsfocus-绿盟科技笔试题目
  • (转)Oracle存储过程编写经验和优化措施
  • ***测试-HTTP方法
  • .NET Core 中的路径问题
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .NetCore+vue3上传图片 Multipart body length limit 16384 exceeded.
  • .NET框架
  • ::前边啥也没有
  • @Async注解的坑,小心
  • @entity 不限字节长度的类型_一文读懂Redis常见对象类型的底层数据结构
  • @FeignClient 调用另一个服务的test环境,实际上却调用了另一个环境testone的接口,这其中牵扯到k8s容器外容器内的问题,注册到eureka上的是容器外的旧版本...
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ MSF使用实例 ] 利用永恒之蓝(MS17-010)漏洞导致windows靶机蓝屏并获取靶机权限
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码
  • [ 网络通信基础 ]——网络的传输介质(双绞线,光纤,标准,线序)
  • [ABC275A] Find Takahashi 题解
  • [Algorithm][动态规划][01背包问题][目标和][最后一块石头的重量Ⅱ]详细讲解
  • [C++]二叉搜索树
  • [CERC2017]Cumulative Code