知识图谱(4)图算法

news2024/9/28 15:21:20

基于图有很多任务,比如:

  • 节点分类:预测哪些网站是诈骗网站;
  • 关系预测:判断图中两个节点的关系;
  • 图分类:分子性质预测;
  • 聚类:社交网络分析,将相似用户聚类在一起,再推荐适合该簇的商品;
  • 图生成:药物分子生成,药物发现;

目录

  • 图基础内容
  • 图遍历
  • 图聚类
  • Node2Vec

图基础内容

节点的度:节点的边的数量。对于有向图,度还可以分为入度和出度。
fig1
其中,C节点的度为3,入度为2,出度为1。对于上面的图,有7个节点,可以得到一个度矩阵,度矩阵只在对角线上有值,分别为7个节点的度。

邻接矩阵用于表示整个图的权重连接关系。度矩阵通常用 D D D表示,邻接矩阵通常用 A A A表示。无向图的邻接矩阵是沿着对角线对称的。

图遍历

深度优先

  • 从图中某个初始顶点 v v v出发,首先访问初始顶点 v v v
  • 选择一个与顶点 v v v相邻且没有被访问过的顶点 w w w,再从 w w w出发进行深度优先搜索,直到图中与当前顶点 v v v相邻的所有顶点都被访问过为止。

广度优先

  • 从图中某个初始顶点 v v v出发,首先访问初始顶点 v v v
  • 接着访问 v v v的所有未被访问过的相邻顶点 v 1 , . . . , v t v_1,...,v_t v1,...,vt;按照 v 1 , . . . , v t v_1,...,v_t v1,...,vt的次序,访问每一个顶点的所有未被访问过的相邻顶点;
  • 直到访问过所有顶点为止。

DFS和BFS的举例如下:
fig2

Dijkstra是一种求解最短路径的算法,其本质是一个贪心算法,因此可能无法求得全局最优解,时间复杂度为 O ( n 2 ) O(n^2) O(n2)。详细见其他算法-Dijkstra。

初始化一个数组dis来保存源点到各个顶点的最短距离,和一个保存已经找到了最短路径的顶点的集合T,初始时,原点s的路径权重被赋为 0 ,若对于顶点s存在能直接到达的边(s,m),则把dis[m]设为w(s,m),同时把所有其他顶点的路径长度设为无穷大。初始时,集合T只有顶点s。然后,从dis数组选择最小值,则该值就是源点s到该值对应的顶点的最短路径,并且把该点加入到T中,然后,我们需要看看新加入的顶点是否可以到达其他顶点并且看看通过该顶点到达其他点的路径长度是否比源点直接到达短,如果是,那么就替换这些顶点在dis中的值。然后,又从dis中找出最小值,重复上述动作,直到T中包含了图的所有顶点。

Floyd也是一种最短路径算法。首先,根据节点的边的权重,初始化一个矩阵,用于记录初始情况下的最短路径,然后分别计算允许通过其他节点时的最短路径,直到遍历完所有的情况。

图聚类

模块度Modularily用于衡量一个社区的紧密度,一个节点如果加入某个社区让模块度变大,则该节点属于这个社区。 M = 1 2 m ∑ i j [ A i j − k i k j 2 m ] U ( c i , c j ) M=\frac{1}{2m}\sum_{ij}[A_{ij}-\frac{k_{i}k_{j}}{2m}]U(c_i,c_j) M=2m1ij[Aij2mkikj]U(ci,cj)其中,如果 c i = c j c_i=c_j ci=cj,则 U ( c i , c j ) = 1 U(c_i,c_j)=1 U(ci,cj)=1,如果 c i ≠ c j c_i\neq c_j ci=cj,则 U ( c i , c j ) = 0 U(c_i,c_j)=0 U(ci,cj)=0 m m m表示边的总数, A A A表示边的权重, k i k_i ki表示所有指向节点 i i i的边的权重和。

Louvain是基于模块度的社区算法,该算法在效率和效果都比较好,算法过程如下:

  • 每个点作为一个社区,然后考虑每个社区的邻居节点,再合并到社区,然后看模块度是否改变,选择模块度增益最大的邻居节点进行合并,直到社区不再改变;

谱聚类的思想是将带权无向图划分为子图,子图的内部尽可能相似,子图之间尽量远离,谱聚类分为以下步骤:

  • 计算相似度矩阵 W W W:一共 n n n个样本,计算任意两个样本之间的距离,在相似度矩阵中,两个距离近的样本相似度较高,根据相似度矩阵构建图,图的边仅保留相似度高的节点对;
  • 计算度矩阵:根据相似度矩阵构建的图计算度矩阵 D D D
  • 计算拉普拉斯矩阵: L = D − W L=D-W L=DW
  • 计算 L L L的特征值,将特征值从小到大排序,取前 k k k个特征值,并计算前 k k k个特征值的特征向量;
  • k k k个特征向量组成矩阵 U U U,维度为 n × k n\times k n×k
  • 使用K-means对 n n n个特征向量进行聚类;

谱聚类算法的主要优点有:

  • 谱聚类只需要数据之间的相似度矩阵,因此对于处理稀疏数据的聚类很有效。这点传统聚类算法比如K-Means很难做到。
  • 由于使用了降维,因此在处理高维数据聚类时的复杂度比传统聚类算法好。

谱聚类算法的主要缺点有:

  • 聚类效果依赖于相似矩阵,不同的相似矩阵得到的最终聚类效果可能很不同。

Node2Vec

Node2Vec是指对节点的embedding学习。一种直接的想法是采用和Word2Vec一样的字典式方式。

从图的结构直观看,两个节点的embedding相似应该出现在以下情况:节点相连,两节点具有同样的邻居,两个节点处在相似结构的子图中。

随机游走(RandomWalk)是自监督学习embedding的方法,不需要利用节点标签,也不需要利用节点特征,训练好的embedding也不依赖于特定任务,如同Word2Vec。

首先随机选择一个节点,走到该处后再随机选择一个邻居,重复length次。length是指随机游走的长度。使用随机游走从起始节点到终止节点的概率值,实际上可以用来表示相似度,即从 u u u节点到 v v v节点的概率值,正比于 u u u节点和 v v v节点embedding点乘的结果: z v T z u ∝ P ( v ∣ u ) z_{v}^{T}z_{u}\propto P(v|u) zvTzuP(vu)给定图 G = ( V , E ) G=(V,E) G=(V,E),定义 N R ( u ) N_{R}(u) NR(u)表示用策略 R R R得到 u u u的邻居节点,目标是学习一个映射关系 z : u → R d z:u\rightarrow R^{d} z:uRd,优化目标为: m a x ∑ u ∈ V l o g P ( N R ( u ) ∣ z u ) max\sum_{u\in V}log P(N_{R}(u)|z_{u}) maxuVlogP(NR(u)zu)给定 u u u的embedding z u z_{u} zu,我们希望其邻居节点出现的概率最大,最终损失函数表示为: L = − ∑ u ∈ V ∑ v ∈ N R ( u ) l o g P ( v ∣ z u ) L=-\sum_{u\in V}\sum_{v\in N_{R}(u)}logP(v|z_{u}) L=uVvNR(u)logP(vzu) P ( v ∣ z u ) = e x p ( z u T z v ) ∑ n ∈ V e x p ( z u T z n ) P(v|z_{u})=\frac{exp(z_{u}^{T}z_{v})}{\sum_{n\in V}exp(z_{u}^{T}z_{n})} P(vzu)=nVexp(zuTzn)exp(zuTzv)随机游走的每一步都是无偏游走,即走到下一个邻居节点的概率都相同,游走的结果可能会只关注局部信息类似BFS(甚至两个节点来回跳),或者只关注最深的一条路类似DFS。为了优化游走的策略,Node2Vec做出改进,这里有两个参数:

  • p p p用来控制返回上一个节点;
  • q q q用来控制远离上一个节点;
  • 参数的调整相当于是调整BFS或DFS的比例;

fig3
对于这个例子,假设已经穿过了边(S1,W)走到节点W,下一步的路径概率如下:

  • 如果是返回原节点,则概率为 1 / p 1/p 1/p
  • 如果是远离原节点,则概率为 1 / q 1/q 1/q
  • 如果下一步节点和原节点距离与(S1,W)一样,则概率为1;

显然,如果我们想采用BFS,那么只需要调低 p p p的值,如果想采取DFS,只需要调低 q q q的值。这样游走的过程中,我们就可以自由的控制是想得到更多的局部信息还是全局信息。

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

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

相关文章

如何选择合适的官文转录供应商

为什么质量不应该是唯一的考虑因素 官文记录必须准确无误——很多重要的程序(包括法庭案件审判、严重欺诈调查和尸检调查)成功得出结论,可能都依赖于记录的准确性。但是,在选择转录供应商时,还必须考虑更多因素。 官文…

2023Q2全球可穿戴腕带出货量达 4400 万台

全球可穿戴设备市场在2023年第二季度继续保持增长态势,总出货量达到了4400万台,同比增长了6%。这一增长得益于消费者对于可穿戴设备的需求不断增加,以及不同细分市场的需求反弹。 根据市场研究机构 Canalys 的最新报告,全球可穿戴…

阿里测开面试大全(一)附答案完整版

万字长文,建议收藏 1 什么是POM,为什么要使用它? POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操…

VM虚拟机CentOS7.9x64 LVM硬盘扩容

软件版本:VMWare Workstation14 虚拟机CentOS 7.9X64位 GParted 0.33.0 一、虚拟机安装gparted软件 sudo yum install epel-release sudo yum install gparted sudo yum install yum-utils git gnome-common gcc-c sudo yum-builddep gparted 二、关闭虚拟机&a…

【Java 基础篇】Java Condition 接口详解

Java 提供了一种更灵活和高级的线程协作机制,通过 Condition 接口的使用,你可以更精细地控制线程的等待和唤醒,实现更复杂的线程同步和通信。本文将详细介绍 Java 的 Condition 接口,包括它的基本概念、常见用法以及注意事项。 什…

TS编译器选项​compilerOptions指定编译后文件所在目录

compilerOptions是TS的编译器选项,主要在tsconfig.json文件中用于对ts编译为js文件时进行配置 "compilerOptions" : { 配置项 } 在tsconfig.json中编写如下代码: {// compilerOptions 编译器选项"compilerOptions": {// outDir 用于…

buuctf web [极客大挑战 2019]Upload

上传头像&#xff0c;上传一下&#xff0c;看看能不能成功 抓包&#xff0c;抓取上传时的数据,看看限制条件 改两个地方&#xff0c;符合上传图片的要求&#xff0c;上传试试 一句话木马的<?被扳了 改一下木马的格式 <script language"php">eval($_POST[cm…

[NOIP2016 提高组] 蚯蚓

题目链接 题目很长&#xff0c;题意如下&#xff1a;一开始有n个值&#xff0c;&#xff0c;有m次操作&#xff0c;每次操作选择一个最大的值x&#xff0c;将它分解成两个数&#xff0c;分别为&#xff0c;以及&#xff0c;然后&#xff0c;经过这个操作之后&#xff0c;对除了…

什么是 AirServer?Mac专用投屏工具AirServer 7 .27 for Mac中文破解版百度网盘下载

AirServer 7 .27 for Mac中文免费激活版是一款Mac专用投屏工具&#xff0c;能够通过本地网络将音频、照片、视频以及支持AirPlay功能的第三方App&#xff0c;从 iOS 设备无线传送到 Mac 电脑的屏幕上&#xff0c;把Mac变成一个AirPlay终端的实用工具。 目前最新的AirServer 7.2…

Python常用库(六):科学计算库-Numpy[上篇]:创建、访问、赋值

1.Numpy 1.1 介绍 NumPy是Python中非常流行且重要的科学计算库&#xff0c;提供了一个强大的多维数组对象(ndarray)和许多数学操作&#xff0c;包括矩阵运算、线性代数、微积分等等。 numpy是Python中一个非常有用的工具&#xff0c;特别是在需要进行数值计算、线性代数计算、…

基于nRF7002-DK的NFC功能切换系统(nRF Connect SDK+NFC)

目录 项目介绍硬件介绍项目设计开发环境及工程目录总体流程图硬件初始化NFC功能实现文本记录安卓应用打开按键切换功能 功能展示项目总结 &#x1f449; 【Funpack2-6】基于nRF7002-DK的NFC功能切换系统 &#x1f449; Github: EmbeddedCamerata/nRF7002-DK-nfc-function-switc…

智慧养殖:浅谈视频监控与AI智能识别技术助力奶牛高效、智慧养殖

一、方案背景 随着科技的飞速发展&#xff0c;智能化养殖逐渐成为现代畜牧业的发展趋势。人工智能技术、物联网、视频技术、云计算、大数据等新兴技术&#xff0c;正在为奶牛养殖业带来全新的变革。越来越多的牧场、养殖场开始运用新技术来进行智能监管、提高生产效率、降低生…

就只说 3 个 Java 面试题

在面试时&#xff0c;即使是经验丰富的开发人员&#xff0c;也可能会发现这是一些很棘手的问题&#xff1a; 1、Java中“transient”关键字的用途是什么&#xff1f;如何才能实现这一目标&#xff1f; 在 Java 中&#xff0c;“transient”关键字用于指示类的特定字段不应包含…

蒙特卡洛方法的数学基础-1

蒙特卡洛方法的数学基础-1 概率论 Bayes 公式 常用分布 Binominal Distribution Poisson Distribution Gaussian Distribution Exponential Distribution Uniform Distribution 大数定理 均匀概率分布随机地取N个数xi &#xff0c;函数值之和的算术平均收敛于函数的期望值 …

Cesium 空间量算——生成点位坐标

文章目录 需求分析1. 点击坐标点实现2. 输入坐标实现 需求 用 Cesium 生成点位坐标&#xff0c;并明显标识 分析 以下是我的两种实现方式 第一种是坐标点击实现 第二种是输入坐标实现 1. 点击坐标点实现 //点位坐标getLocation() {this.hoverIndex 0;let that this;this.view…

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

八一书《乡村振兴战略下传统村落文化旅游设计》许少辉瑞博士生辉少许——2023学生开学季许多少年辉光三农

10万单词例句表单词句子ACCESS\EXCEL数据库

原本我以为《3万5千英语句子英语例句大全ACCESS数据库》例句已经够多了&#xff0c;没想到今天遇到一个10万条英语单词例句的数据&#xff0c;非常适合与单词词典进行关联学习&#xff0c;例句多了单词的用法以及句子的掌握都更有效率。 截图下方有显示“共有记录数”&#xff…

Cesium 空间量算——面积量算

面积量算 需求分析 需求 对页面上所选内容进行面积计算 分析 其实&#xff0c;计算面积其实就是把一个面&#xff0c;拆分成一个一个的三角曲面计算然后相加得到&#xff0c;下面是计算的面积的代码 /** * description : 面积量算* author : Hukang* date : 2023-09-20 13:1…

Date类的学习笔记-超级详细

Date 的定义, 在开始研究这个之前我们首先要能够明白一点&#xff0c;这个 Date 其实本质上是一个对象&#xff0c;我们通过这个对象可以去构建变量&#xff0c;知道这个之后就可以开展后续的研究了 JDK 通用 Date 类的构造方法 测试 获取当前的时间 // 构造这个日期对象Date…

计算机毕设 opencv python 深度学习垃圾图像分类系统

文章目录 0 前言课题简介一、识别效果二、实现1.数据集2.实现原理和方法3.网络结构 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&#xff0c;往往达不到毕业答辩的要求&#xff0c;这两年不断有学弟…