图神经网络_图嵌入_Struc2Vec

news2025/2/7 20:23:07

0 背景

之前的node embedding方式,都是基于近邻关系,但是有些节点没有近邻,也有结构相似性。如图中的u、v节点。
struc2vec算法适用于捕获结构相似性。
在这里插入图片描述

1 相似度(距离)计算

1.1 公式

f k ( u , v ) = f k − 1 ( u , v ) + g ( s ( R k ( u ) , s R k ( v ) ) ) , k ≥ 0   a n d   ∣ R k ( u ) ∣ , ∣ R k ( v ) ∣ > 0 f_k(u,v) = f_{k-1}(u,v)+g(s(R_k(u),sR_k(v))),k\ge 0 \space and \space |R_k(u)|,|R_k(v)|>0 fk(u,v)=fk1(u,v)+g(s(Rk(u),sRk(v))),k0 and Rk(u),Rk(v)>0

f k ( u , v )  表示 u 、 v 节点的 k 跳邻居相似性; R k ( u )  表示节点 u 的 k 跳邻居节点集合; S ( s )  表示集合 s 度的有序集合; g ( D 1 , D 2 )  是度量两个序列的函数,比较常用的有 D T W 算法 \begin{aligned} & f_k(u,v) \ 表示u、v节点的k跳邻居相似性; \\ & R_k(u) \ 表示节点u的k跳邻居节点集合; \\ & S(s) \ 表示集合s度的有序集合;\\ & g(D_1,D_2) \ 是度量两个序列的函数,比较常用的有DTW算法 \end{aligned} fk(u,v) 表示uv节点的k跳邻居相似性;Rk(u) 表示节点uk跳邻居节点集合;S(s) 表示集合s度的有序集合;g(D1,D2) 是度量两个序列的函数,比较常用的有DTW算法

1.2 示例

在这里插入图片描述
在这里插入图片描述
其中距离函数 g 的计算方法为:

2 DTW动态时间规整算法

2.1 应用

DTW最初用于识别语音的相似性。

2.2 举个栗子

我们用数字表示音调高低。例如:某个单词发音的音调为1-3-2-4。现在有两个人说这个单词,一个人在前半部分拖长,其发音为1-1-3-3-2-4;另一个人在后半部分拖长,其发音为1-3-2-2-4-4。

因为两个序列代表同一个单词,so we hope 1-1-3-3-2-4 和 1-3-2-2-4-4 两个序列的距离距离小,相似度高,识别为同一单词的概率大。

2.3 传统算法——欧氏距离

S = |A(1)-B(1)| + |A(2)-B(2)| + |A(3)-B(3)| + |A(4)-B(4)| + |A(5)-B(5)| + |A(6)-B(6)|
= |1-1| + |1-3| + |3-2| + |3-2| + |2-4| + |4-4|
= 6

在这里插入图片描述

2.4 DTW动态时间规整算法

核心思想:允许序列的点与另一序列的多个连续的点相对应

如下图:B(1)与A(1)、A(2)相对应,B(2)与A(3)、A(4)相对应,A(5)与B(3)、B(4)相对应,A(6)与B(5)、B(6)相对应。

在这里插入图片描述

S = |A(1)-B(1)| + |A(2)-B(1)| + |A(3)-B(2)| + |A(4)-B(2)| + |A(5)-B(3)| + |A(5)-B(4)| + |A(6)-B(5)| + |A(6)-B(6)| 
= |1-1| + |1-1| + |3-3| + |3-3| + |2-2| + |2-2| + |4-4| + |4-4|
= 0

2.5 图示

在这里插入图片描述

  • 灰色线表示传统的欧氏距离
  • 红色线表示DTW算法距离

2.6 步骤

  1. 计算两个序列各个点之间的距离矩阵。
  2. 寻找一条从矩阵左上角到右下角的路径,使得路径上的元素和最小。

2.7 特点

  • 非线性对齐:DTW 允许序列在时间轴上进行不同速率的对齐,能够处理局部时间伸缩。
  • 适应性强:DTW 不要求输入序列长度相同,且能够容忍输入序列的平移、缩放和局部错位。
  • 计算复杂度:DTW 的计算复杂度通常为 (O(mn)),其中 (m) 和 (n) 分别是两条序列的长度。

2.8 应用

  • 语音识别:DTW 可以通过对齐不同的发音序列来识别用户的语音。
  • 手写识别:DTW 可用于比较手写笔迹和已知字符模式之间的相似度。
  • 金融分析:DTW 可用于识别股票价格或其他金融数据的时间序列模式。
  • 生物信息学:DTW 可用于比较基因序列的相似性,尤其是在基因组学中用于比较不同个体的基因表达模式。

3 多层带权重图

在这里插入图片描述

其中:w_0(a,b)、w_1(a,b) 分别表示0、1层(跳)a、b两节点权重;w(e_0,e_1)表示跨层(不同跳)节点,计算公式分别为:
w k ( a , b ) = e − f k ( a , b ) w ( u k , u k − 1 ) = 1 w ( u k , u k + 1 ) = l o g ( Γ k ( u ) + e ) 其中 : Γ k ( u ) = ∑ v ∈ V 1 ( w k ( u , v ) > w ˉ k ) 举个栗子 : Γ 0 ( e ) = w 0 ( e , a ) , w 0 ( e , b ) , w 0 ( e , c ) , w 0 ( e , d ) > w ˉ k \begin{aligned} & w_k(a,b) = e^{-f_k(a,b)} \\ & w(u_k,u_{k-1}) = 1 \\ & w(u_k,u_{k+1}) = log(\Gamma_k(u)+e) \\ & 其中: \Gamma_k(u) = \sum_{v∈V}1(w_k(u,v)>\bar w_k) \\ & 举个栗子: \Gamma_0(e) = w_0(e,a),w_0(e,b),w_0(e,c),w_0(e,d)>\bar w_k \end{aligned} wk(a,b)=efk(a,b)w(uk,uk1)=1w(uk,uk+1)=log(Γk(u)+e)其中:Γk(u)=vV1(wk(u,v)>wˉk)举个栗子:Γ0(e)=w0(e,a),w0(e,b),w0(e,c),w0(e,d)>wˉk

4 定点采样序列

在这里插入图片描述

下一次采样时,有p的概率在本层游走,有1-p的概率在上下游切换。

在本层游走
p k ( u , v ) = e − f k ( u , v ) Z k ( u ) p_k(u,v) = \frac{e^{-f_k(u,v)}}{Z_k(u)} pk(u,v)=Zk(u)efk(u,v)
其中,Z_k的计算方式为:
Z k ( u ) = ∑ v ∈ V , v ≠ u e − f k ( u , v ) Z_k(u) = \sum_{v∈V,v≠u}e^{-f_k(u,v)} Zk(u)=vV,v=uefk(u,v)
上下层切换:
p k ( u k , u k + 1 ) = w ( u k , u k + 1 ) w ( u k , u k + 1 ) + w ( u k , u k − 1 ) p k ( u k , u k − 1 ) = 1 − p k ( u k , u k + 1 ) 不难发现前往下一层的概率更大 \begin{aligned} & p_k(u_k,u_{k+1}) = \frac{w(u_k,u_{k+1})}{w(u_k,u_{k+1})+w(u_k,u_{k-1})} \\ & p_k(u_k,u_{k-1}) = 1- p_k(u_k,u_{k+1}) \\ & \text{不难发现前往下一层的概率更大} \end{aligned} pk(uk,uk+1)=w(uk,uk+1)+w(uk,uk1)w(uk,uk+1)pk(uk,uk1)=1pk(uk,uk+1)不难发现前往下一层的概率更大

5 使用skip-gram生成embedding

在采用 4定点采样序列中 游走的方法得到节点序列后,使用skip-gram方法生成embedding。
img

Word2Vec提供了两种模型架构:CBOW 和 Skip-gram。

  • CBOW模型:通过上下文词预测目标词。
  • Skip-gram模型:通过目标词预测上下文词。

Skip-gram模型在处理低频词时表现得更好,因此被广泛应用于各种自然语言处理任务。

6 实验效果

在这里插入图片描述

struc2vec算法在捕获结构相似性上有很好的效果。

适用性分析:适用于节点分类中,结构标识比邻居标识更重要时

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

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

相关文章

Linux内核中Typec CC检测原理及主从模式切换原理

一,Typec CC引脚定义 可以看到,数据传输主要有TX/RX两组差分信号,CC1和CC2是两个关键引脚,作用很多: • 探测连接,区分正反面,区分DFP和UFP,也就是主从 • 配置Vbus,有US…

uniapp通过v-if进行判断时,会出现闪屏?【已解决】

1.问题:按钮切换时,通过v-if来判断,会出现闪烁情况,影响用户体验 2.v-if 闪烁问题可能的原因 ‌条件切换频繁‌:如果 v-if 指令的条件在短时间内频繁切换,会导致元素不断被销毁和重新创建,从而…

webrtc获取IceCandidate流程

在WebRTC(Web Real-Time Communication)中,ICECandidate是一个关键概念,它用于描述在建立点对点(P2P)连接时可以考虑的潜在通信端点。以下是关于WebRTC中ICECandidate的详细解释: 一、ICECandidate的定义 ICECandidate对象通常包含以下关键属性: foundation:用于唯一…

计算机网络习题(第1章 概论 第2章 数据通信基础)

第1章 概论 1、计算机网络 2、互联网 3、计算机网络体系结构 分层模型 OSI/RM 7层模型 TCP/IP 5层模型 协议、PDU、SDU、SAP等术语 数据封装(计算) 第2章 数据通信基础 1、数据通信系统组成 2、主要性能指标 数据传输速率 码元速率 时延 3…

Springboot项目下面使用Vue3 + ElementPlus搭建侧边栏首页

Springboot项目下面、在html 页面 Vue3 ElementPlus 搭建侧边栏首页 1、效果图 2、static 文件下面的项目结构 3、代码实现 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>首页</title><…

【C++11】可变参数模版

目录 一、可变参数模版 1.1 基本语法及原理 1.2 包拓展 1.3 empalce系列接口 一、可变参数模版 之前我们在C语言中就学过可变参数&#xff0c;但是模版类型是固定的&#xff0c;怎么变呢&#xff1f;这里c11就给出了可变参数模版 1.1 基本语法及原理 C11支持可变参数模…

FFmpeg在python里推流被处理过的视频流

链式算法处理视频流 视频源是本地摄像头 # codinggbk # 本地摄像头直接推流到 RTMP 服务器 import cv2 import mediapipe as mp import subprocess as sp# 初始化 Mediapipe mp_drawing mp.solutions.drawing_utils mp_drawing_styles mp.solutions.drawing_styles mp_holis…

我的秋招总结

我的秋招总结 个人背景 双非本&#xff0c;985硕&#xff0c;科班 准备情况 以求职为目的学习Java的时间大概一年。 八股&#xff0c;一开始主要是看B站黑马的八股文课程&#xff0c;背JavaGuide和小林coding还有面试鸭。 算法&#xff0c;250&#xff0c;刷了3遍左右 项目&…

C++:单例模式

创建自己的对象&#xff0c;同时确保对象的唯一性。 单例类只能有一个实例☞静态成员static☞静态成员 必须类外初始化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例 静态成员类内部可以访问 构造函数私有化☞构造函数私有外部不能创建&#x…

RBTree(红黑树)

目录 红黑树的概念 红黑树的性质 红黑树节点的定义 红黑树的插入 1. 按照二叉搜索的树规则插入新节点 2. 检测新节点插入后&#xff0c;红黑树的性质是否造到破坏 红黑树的检测 红黑树的删除 红黑树和AVL树的比较 红黑树的概念 红黑树&#xff0c;是一种二叉搜索树&…

linux自动化一键批量检查主机端口

1、准备 我们可以使用下面命令关闭一个端口 sudo iptables -A INPUT -p tcp --dport 端口号 -j DROP我关闭的是22端口&#xff0c;各位可以关其它的或者打开其它端口测试&#xff0c;谨慎关闭22端口&#xff01;不然就会像我下面一样握手超时&#x1f62d;&#x1f62d;&…

Python大数据可视化:基于python大数据的电脑硬件推荐系统_flask+Hadoop+spider

开发语言&#xff1a;Python框架&#xff1a;flaskPython版本&#xff1a;python3.7.7数据库&#xff1a;mysql 5.7数据库工具&#xff1a;Navicat11开发软件&#xff1a;PyCharm 系统展示 管理员登录 管理员功能界面 价格区间界面 用户信息界面 品牌管理 笔记本管理 电脑主机…

AEO海关认证的注意事项

AEO海关认证的注意事项繁多且至关重要&#xff0c;企业需细致准备&#xff0c;确保万无一失。 首先&#xff0c;企业需深入研读相关政策文件&#xff0c;如《中华人民共和国海关注册登记和备案企业信用管理办法》及《海关高级认证企业标准》&#xff0c;以政策为指引&#xff0…

MySQL如何只取根据某列连续重复行的第一条记录

前言 MySQL如何只取根据某列连续重复行的第一条记录&#xff0c;条件&#xff1a;某列、连续、验重 建表准备 DROP TABLE IF EXISTS test; CREATE TABLE test (id bigint NOT NULL,time datetime NULL DEFAULT NULL,price int NULL DEFAULT NULL,PRIMARY KEY (id) USING BT…

c++编译过程初识

编译过程 预处理&#xff1a;主要是执行一些预处理指令&#xff0c;主要是#开头的代码&#xff0c;如#include 的头文件、#define 定义的宏常量、#ifdef #ifndef #endif等条件编译的代码&#xff0c;具体包括查找头文件、进行宏替换、根据条件编译等操作。 g -E example.cpp -…

JS中的闭包和上下文

变量提升 和 函数提升 这里要提到一个提升的概念&#xff0c;即在JS中&#xff0c;在解析代码之前还有一个预处理的过程&#xff0c;这个过程中会把部分变量和函数声明提前到代码的最顶部&#xff0c; 会在其他所有代码之前执行。虽然当我们按照规范&#xff08;严格模式或者T…

GitLab 将停止为中国区用户提供服务,60天迁移期如何应对? | LeetTalk Daily

“LeetTalk Daily”&#xff0c;每日科技前沿&#xff0c;由LeetTools AI精心筛选&#xff0c;为您带来最新鲜、最具洞察力的科技新闻。 GitLab作为一个广受欢迎的开源代码托管平台&#xff0c;近期宣布将停止服务中国大陆、澳门和香港地区的用户提供服务。根据官方通知&#x…

【2024年最新】BilibiliB站视频动态评论爬虫

废话不多说&#xff0c;直接先放git仓库&#xff1a;GitHub - linyuye/Bilibili_crawler: bilibili爬虫&#xff0c;基于selenium获取oid与cookie&#xff0c;request获取api内容 〇&#xff1a;概念简述 oid&#xff1a;视频/动态的uuid&#xff0c;b站对于发布内容的通用唯…

汽车IVI中控开发入门及进阶(46):FFmpeg

概述: FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西。它支持最模糊的古老格式,直到最前沿。无论它们是由某个标准委员会、社区还是公司设计的。它还具有高度的可移植性:FFmpeg 在各种构建环境、机器架构…

计算属性 简写和 完整写法

计算属性渲染不加上括号 methods方法和computed属性区别&#xff1a; computed只计算一次&#xff0c;然后缓存&#xff0c;后续直接拿出来使用&#xff0c;而methods每次使用每次计算&#xff0c;不会缓存 计算属性完整写法&#xff1a; 既获取又设置 slice 截取 成绩案例 …