003传统图机器学习、图特征工程

文章目录

  • [一. 人工特征工程、连接特征](#一. 人工特征工程、连接特征)
  • [二. 在节点层面对连接特征进行特征提取](#二. 在节点层面对连接特征进行特征提取)
  • [三. 在连接层面对连接特征进行特征提取](#三. 在连接层面对连接特征进行特征提取)
  • [四. 在全图层面对连接特征进行特征提取](#四. 在全图层面对连接特征进行特征提取)

一. 人工特征工程、连接特征

  • 节点、连接、子图、全图都有各自的属性特征, 属性特征一般是多模态的。
  • 除属性特征外,还有连接特征。本讲侧重点为:用人工特征提取的方法对连接特征进行提取。

二. 在节点层面对连接特征进行特征提取

  • 节点的度:只看连接个数,不看连接质量。
  • 节点的中心性:
  1. 特征向量中心性:其原理是某节点周围的节点都很重要,那么它也重要。
  2. 中介中心性:其原理是若某节点处于交通咽喉,那么它很重要。
  3. 邻接中心性:其原理是若一个节点去哪都近,那么它很重要。
  • 节点的聚集系数:衡量节点周围的抱团程度,其实就是查以该节点为端点的三角形个数。
  • Graphlets:聚集系数中的三角形结构可以视为一种子图,那么用其他子图代替三角形结构也是可以的,这就是Graphlets。提取某节点周围不同子图的个数,就可以构成一个向量Graphlet Degree Vector(GDV)。这个向量就可以用于描述节点的邻域拓扑结构信息。
  • 还有其他的衡量方式如:PageRank、Katz中心性等。在NetworkX里包含多种数据挖掘算法可供使用。

三. 在连接层面对连接特征进行特征提取

  • 即提取连接的特征,把连接变成 d 维向量。
  • 基于两节点的距离:
  • 两节点间最短路径长度:只看长度,忽略个数、质量。
  • 基于两节点局部连接信息:
  1. 两节点共同相邻节点个数(交集)
  2. 两节点相邻节点的交并集合个数比
  3. Adamic-Adar index:
  • S a = ∑ u ∈ N ( V 1 ) ∩ N ( V 2 ) 1 l o g ( k u ) S_{a}=\textstyle \sum_{u\in N(V_{1})\cap N(V_{2})}\frac{1}{log(k_{u})} Sa=∑u∈N(V1)∩N(V2)log(ku)1。
  • 可以这样理解,两个人的连接若通过几个公众人物,那么他俩大概率不会很亲近。若通过一个普通人,那大概关系是不错的。
    存在一个问题,如果两个节点没有共同的邻域节点,则以上三个指标都为 0 没有意义,这就需要看全图的信息了。
  • 基于两节点在全图的连接信息------Katz index:
  • 记录两节点间长度为k的路径个数。
  • 其可以通过邻接矩阵的幂来求解。
  • 设图的邻接矩阵为A,则节点u、v之间长度为k的路径个数是 A k A^{k} Ak矩阵的第u行第v列的值。
  • 公式为 S u , v = ∑ l = 1 ∞ β l A u , v l = ( I − β A ) − 1 − I S_{u,v} = \sum_{l=1}^{\infty } \beta ^{l}A^{l}_{u,v}=(I-\beta A)^{-1}-I Su,v=∑l=1∞βlAu,vl=(I−βA)−1−I,其中 β \beta β是缩放因子,得到的是katz系数矩阵。

四. 在全图层面对连接特征进行特征提取

  • 所得的特征应该能反映全图的结构特点。
  • Bag-of-node-degrees:只看节点的度,不看连接结构 。实际上还是数数,数不同度对应的节点个数。
  • Graphlet Kernel:
  • 数 Graphlet 的个数得到 Bag-of-Graphlet,算是 Bag-of-* 的推广。
  • 与节点层面不同从全图的角度 Graphlet 可以有孤立节点。
  • 统计各种 Graphlet 的个数,也可以构成 d 维向量。
  • 对两个图的 Bag-of-Graphlet 做归一化后,再做数量积就得到它俩的 Graphlet Kernel。
  • 然而 Graphlet Kernel 计算复杂度过高,应用空间很小,引出Weisfeiler-Lehman Kernel。
  • Weisfeiler-Lehman Kernel:
  • 其特点是通过迭代不断丰富节点词库。
  • 其用到的是颜色微调的方法。
  • 通过多次迭代,进行节点颜色微调,丰富节点词库,最后统计不同颜色节点出现的次数,得到向量,实现特征提取。
  • 对两个图的向量进行数量积运算,所得即 Weisfeiler-Lehman Kernel 。
  • 一般迭代次数越多,效果越好。
  • 注1:计算两个图的 Weisfeiler-Lehman Kernel 时,迭代计算要同时进行,即节点颜色词库要由两个图同时贡献。
  • 注2:NetwokX 里的 weisfeiler_lehman_graph_hash 实现与上面说的不一样,gklearn.kernels.Weisfeilerlehmankernel 才是一样的。
相关推荐
非著名程序员5 分钟前
阿里云重磅上线 Qoder 专家团模式,AI 编程进入组团作战时代
人工智能
AEIC学术交流中心1 小时前
【快速EI检索 | IEEE出版】2026年人工智能、智能系统与信息安全国际学术会议(AISIS 2026)
人工智能
程序员夏末1 小时前
【LeetCode | 第七篇】算法笔记
笔记·算法·leetcode
火山引擎开发者社区1 小时前
李诞、何同学、小Lin说同台直播,解锁养虾新玩法!
人工智能
剑穗挂着新流苏3122 小时前
117_PyTorch 实战:利用训练好的模型进行单张图片验证
人工智能·python·深度学习
程序员cxuan2 小时前
人麻了,谁把我 ssh 干没了
人工智能·后端·程序员
csdn_aspnet2 小时前
C/C++ 两个凸多边形之间的切线(Tangents between two Convex Polygons)
c语言·c++·算法
数据皮皮侠2 小时前
中国城市间地理距离矩阵(2024)
大数据·数据库·人工智能·算法·制造
枫叶林FYL2 小时前
【乳腺癌早期筛查(钼靶X光图像AI识别)】第一章:钼靶AI核心算法架构演进——从2D全视野到3D断层合成与视觉Transformer
人工智能·深度学习
3GPP仿真实验室2 小时前
深度解析基站接收机核心算法:从 MRC 到 IRC 的空间滤波演进
算法