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

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=uN(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βA1I,其中 β \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 才是一样的。
http://www.lryc.cn/news/160820.html

相关文章:

  • Apache Tomcat 漏洞复现
  • Oracle-常用权限-完整版
  • jenkins 发布job切换不同的jdk版本/ maven版本
  • 如何在小程序中给会员设置备注
  • PaddleOCR学习笔记2-初步识别服务
  • 【Opencv】Pyhton 播放上一帧,下一帧,存video,逐帧分析
  • 【关于Java:认识异常】
  • 【C++ • STL • 力扣】详解string相关OJ
  • 【Tomcat服务部署及优化】
  • C++之红黑树
  • Go语言网络编程(socket编程)TCP
  • C语言——局部和全局变量
  • 【Java基础篇 | 类和对象】--- 聊聊什么是内部类
  • 合宙Air724UG LuatOS-Air LVGL API控件-页面 (Page)
  • mongodb数据库操作
  • 第 2 章 线性表 ( 双链循环线性表(链式存储结构)实现)
  • redis在日常开发工作中的常见用法
  • 小程序实现下拉刷新
  • Day 36 贪心算法 part05 : 435. 无重叠区间 763.划分字母区间 56. 合并区间
  • 使用Python将网页数据保存到NoSQL数据库的方法和示例
  • 两个路由器如何连接设置的方法攻略
  • 分类任务评价指标
  • c++静态成员
  • go-zero直连与etcd服务注册中心
  • Kotlin File writeText appendText appendBytes readBytes readText
  • 常见缺少msvcp140.dll问题及解决方法,分享多种方法帮你解决
  • 【K210+ESP8266图传上位机开发】TCP server + JPEG图像解析上位机开发
  • Linux查看当前文件夹的大小
  • YOLO目标检测——密集人群人头数据集+已标注yolo格式标签下载分享
  • 论文精读 —— Gradient Surgery for Multi-Task Learning