嬴图 | K邻算法在风险传导场景中的实践意义

news2024/11/25 8:15:24

随着图思维方式与图数据框架在工业领域的有效开展和深入应用,可靠且高效的图算法也就成为了图数据探索、挖掘与应用的基石。该图算法系列(具体见推荐阅读),集合了 Ultipa 嬴图团队在算法实践应用中的经验与思考,希望在促进业界爱好者交流的同时,能从技术层面为企业的图数据库选型开拓一些思路。

K邻(K-Hop Neighbor)即K跳邻居,是基于广度优先(BFS)[1] 的遍历方式对起始节点周边的邻域进行探索的一种算法,广泛应用于关系发现、影响力预测、好友推荐等预测类场景。

图片
图1:在图数据库中基于广度优先遍历的K邻查询

图论中,沿着一条边游走一个单位路径被称之为一跳(hop)。遍历图中的顶点时,就会涉及到多跳的问题。

图论最早脱胎于数学家欧拉于 1836 年提出的哥尼斯堡七桥问题,它是图计算的数学基础,从上世纪 80 年代开始,图计算得到了快速的发展。

在真实世界中,危机的传递就是典型的K邻搜索的过程,以发生危机的实体为起[2] ,顺着或逆着(取决于边的具体定义)[3]的方向进行1步、2步、3步直至更深的查询,得到的就是先后会被危机波及到的实体。

我们以某著名房地产企业HD的供应链图谱为例,看看如何在图上通过持股方向、资金流向等,清晰直观地反映出危机的传递方向以及传递对象。 

图片
图2:HD系“交叉性风险”传导全景图

以HD为例,其发生危机后,风险的传播路径为:

·第一层:传播到HD的关联公司;
·第二层:传播到公司员工和供应商;
·第三层:传播到购房者:供应商停止供货、工人拒绝复工,HD的在建工程就可能烂尾)

……以此类推,风险从最初的HD集团一个最后传播到关联公司、员工、供应商、购房者等,形成一张“网络”,风险是一层一层传播的——“链条效应”明显。【关于图技术在风险管理领域的详细阅读,参阅:图计算在交叉性金融风险管理的创新】

而事实上,很多与传导相关的实际应用并不是基于图计算进行的,而是用纯手工计算来完成的。

如很多银行的KYC(Know Your Client)部门在计算其对公客户的UBO(Ultimate Beneficial Owner,最终受益人)时,仍在使用Excel表进行计算——可想而知这样的计算效率和准确率有多低。

显然,这和很多金融机构的IT系统陈旧、工作方法落伍有着直接关系,并将阻碍这些机构的业务开展,例如客户的企业影响力分析。我们知道,企业影响力分析的内容,远不止探讨持股关系、生产供求关系等传统的问题,凡是和企业相关的金融行为、事件,以及与这些事件行为有直接关联、甚至间接关联的事务,都应被列在研究范围内。同时,分析的出发点不应该只局限于一个企业实体,而应该扩展延伸至企业发布的产品、债券……

如图3所示,分析的核心为一家企业的某个债券,该债券价格的下跌可能直接影响该企业发布的其他债券的价格:

图片
 图3:某债券价格下跌影响该公司其他债券的价格

图4标出的则为持有该债券的、可能被影响到的省内其他企业:

图片
 图4:某债券价格下跌影响持有该债券的其他公司

图3、图4所示的均为该债券的1步邻居,从这些邻居继续向外探寻就能得到该债券价格下跌后产生的危机传递效应,如图5所示:

图片
图5:某债券价格下跌影响整个债券市场

专家们已越来越认识到,金融风险并不是孤立存在的,不同风险间具有链条效应,任何一只蝴蝶扇动翅膀,都有可能造成跨市场的风险传染——风险的关联性具有相互转化、传递和耦合的特点。图技术与蝴蝶效应在本质上是不谋而合的,即通过深度挖掘不同来源的数据,以网络化分析的方式去洞察。【更多阅读,链接:图计算引发银行流动性风险管理变革 】

此外,金融场景是一种基于长链条计算的场景,这就导致技术实现时的规则更为复杂,因为会涉及到各种回溯、归因,而且数据的计算量更大,同时也更注重时效性。只有实现真正的实时、全面、深度穿透、逐笔追溯、精准计量的监测和预警,才能保障金融风控中避免出现“蝴蝶效应”式的风险的发生。【更多阅读,链接:沸点·专访 | 科技赋能银行流动性风险管理的“AI路径”| 沸点 & 伦敦流动性管理会议 Ultipa亮相 】

值得注意的是,图往往包含着复杂的属性及定义,例如:边的有向、无向,边的属性权重,K 邻是否包含 K-1 邻,如何处理计算环路等等,这些问题会导致 K 邻算法具体实现的差异。此外,在一些实际场景中,图自身拓扑结构的变化,过滤条件的设定,节点、边属性的变化都会影响到 K 邻计算的结果。【更多阅读,链接:图数据库查询与算法正确性验证 】

此外,K邻算法在行业中的应用,多为多模态的异构图,就是将很多张信息单一的图融合在一起的综合性的图谱。这不仅对算法实现相关人员的数据收集能力、构图能力提出了非常高的要求,也对K邻算法在灵活性、功能性等方面是否满足业务需求提出了更高的要求。【Ultipa 嬴图的高密度并发图算法是目前全球运行最快、最丰富(超过100+)的图算法库的集合,可通过 EXTA 接口热插拔和扩展。】

如果你在很多公开的资料中,看到很多关于K邻应用的例子都是同构图(只有一种点、一种边),那么多半是以下情况:

· 作者想通过简单的例子来阐明观点,如社交网好友推荐的应用场景

· 构图能力不足,从而限制了算法的使用

· K邻算法的实现不尽人意,无法对异构图进行恰当处理

K邻的应用应该是广泛的,实际的,能解决现实问题的,如果是因为后面两种情况而限制了算法的“大展宏图”,那么相关图厂商就应该反思一二并提高自身了!

值得一提的是,一个算法设计的好坏,除了具备解决问题的能力,还需要关注计算的效率,也就是算力。在最后,我们列举出一些高性能的图计算(图数据库)系统应具备的核心能力,以供企业在甄别市场上林林总总的图计算产品时进行参考:

·高速图搜索能力:高QPS/TPS、低延时,实时动态剪枝(过滤)能力

·对任何规模的图的深度、实时搜索与遍历能力(10层以上)

·高密度、高并发图计算引擎:极高的吞吐率

·成熟稳定的图数据库、图计算与存储引擎、图中台等

·可扩展的计算能力:支持垂直与线性可扩展

·3D+2D高维可视化、高性能的知识图谱Web前端系统

·便捷、低成本的二次开发能力(图查询语言、API/SDK、工具箱等)

【更多阅读,链接:专家观察 | 高并发图数据库系统如何实现?& 图观 | 从电影《满江红》看图数据库的高维力 & 沸点 | 告别“缺芯少魂”:用自研创新的算力之“芯” 夯实金融硬核基础 】

[1] 广度优先(Breadth-First-Search,BFS),是从根节点开始,沿着树的宽度遍历树的节点。如果所有节点均被访问,则算法中止。
[2]点 (Node),代表真实世界中的实体,即图论中的顶点 (vertex),在 Ultipa 图系统中也称作节点。
[3] 边 (Edge),代表真实世界中实体间的关系,即连接两个节点的边。Ultipa 图系统中的边均为有向边。边的两个端点可以相同也可以不相同,相同时边称为自环边(Loop)。
[4]《图数据库原理、架构与应用》;  孙宇熙,嬴图团队;2022-8;机械工业出版社。

图片

·嬴图 | 图数据库查询与算法正确性验证

·嬴图 | 围绕中心性算法在寄生虫网络的研究 

·嬴图 | 鲁汶社区识别算法 (Louvain)之基本概念篇——权重度

·嬴图 | 鲁汶社区识别算法 (Louvain)之基本概念篇——社区压缩

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

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

相关文章

海外NFT玩法入门科普 - Web3.0(二)

咪哥杂谈 本篇阅读时间约为 7 分钟。 1 前言 距离上一篇文章有些时日,把上一次介绍 web3 的海外 nft 的坑继续填完,今天这篇是下篇,其中详细的介绍了我从去年一年来,所见,所参与的玩法,赚钱方式&#xff0c…

VUE开发神器-NVM nodejs版本控制工具nvm

前言 在学习前端框架或者是nodejs时,有时候某些框架对nodejs的版本有要求。但此时你的电脑上已经安装了10.x版本的nodejs,你不想直接更新到12.x,想同时保存10.x和12.x版本,在必要的时候还能随时切换nodejs版本。那么nvm工具你值得…

[oeasy]python0073_进制转化_eval_evaluate_衡量_oct_octal_八进制

进制转化 回忆上次内容 上次了解的是 整型数字类变量integer前缀为i 整型变量 和 字符串变量 不同 整型变量 是 直接存储二进制形式的可以用 int()函数 将 2进制形式的 字符串 转化为 十进制整数 int()函数 接受两个变量 待转化的字符串字符串使用的进制 二进制 和 十进制…

No spring.config.import property has been defined

报错如下,异常信息里面已经提示了修改的方式: 19:16:46.221 [main] ERROR org.springframework.boot.diagnostics.LoggingFailureAnalysisReporter - *************************** APPLICATION FAILED TO START ***************************Description…

数据库应用:MySQL高级语句(三)存储过程

目录 一、理论 1.存储过程 2.存储过程操作 3.存储过程的参数 4.存储过程的控制语句 二、实验 1.创建和调用存储过程 ​编辑 ​编辑 2.存储过程的参数 3.存储过程的控制语句 三、总结 一、理论 1.存储过程 (1)概念 存储过程是一组为了完成…

「旅游小攻略」广东河源

Hello 小伙伴们好呀,我是爱折腾的 jsliang~ 今天主要安利的,是「广东省/河源市/源城区」附近的逛吃逛吃。 特别适合 2 天 1 夜、3 天 2 夜的,自驾游或者随心走的小伙伴,随着本篇攻略嗨起来吧~ 更多了解欢迎加 WX:Liang…

DBSCAN 算法详解 + 代码实现 + 参数的选择

基于密度的噪声应用空间聚类(DBSCAN)是一种无监督聚类算法,它可以替代KMeans和层次聚类等流行的聚类算法。 KMeans 的缺点 容易受到异常值的影响,离群值对质心的移动方式有显著的影响。在集群大小和密度不同的情况下存在数据精确…

2023-07-23 LeetCode每日一题(接雨水)

2023-07-23每日一题 一、题目编号 42. 接雨水二、题目链接 点击跳转到题目位置 三、题目描述 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 提示&#xff1a; n height.length1 < n < 2 …

ChatGPT 4.0 —— Code Interpreter

&#x1f4ce;产品销售数据集.csv 选取以上的数据集作为输入&#xff0c;对Code Interpreter 进行测试 1.输入指定数据集&#xff0c;要求给出该数据集的概貌 2.请分析销售的总金额和其他变量的关系 Python Script: # Import required libraries import matplotlib.pyplot a…

UE5 用DLL文件制作第三方插件

本篇博文介绍了&#xff0c;如果在UE 中如何使用第三方库&#xff0c;及制作成插件的方法。 DLL 文件是上篇文章中创键的具体的方法见上篇文章。下面开始介绍方法 首先&#xff0c;创建一个空白的 UE5 C 项目&#xff0c;然后再创建一个空白内容的插件&#xff0c;如下图所示 …

转义字符\

转义字符就是反斜杠想要实现的转义功能首字母。 为什么需要转义字符&#xff1f; 当字符串中包含反斜杠、单引号和双引号等有特殊用途的字符时&#xff0c;必须使用反斜杠对这些字符进行转义&#xff08;转换一个含义&#xff09; 反斜杠&#xff1a;\ 单引号&#xff1a;’ 双…

HCIA动态路由基础实验(eNSP)

实验题目及要求&#xff1a; IP配置&#xff1a; R1: <Huawei>sys Enter system view, return user view with CtrlZ. [Huawei]sysname r1 [r1]int GigabitEthernet 0/0/0 [r1-GigabitEthernet0/0/0]ip add 192.168.1.1 30 Jul 22 2023 13:07:24-08:00 r1 %%01IFNET/4/…

构建Web3生态系统:区块链技术与数字管理的融合

Web3技术是一种基于区块链技术的下一代互联网技术&#xff0c;它致力于实现去中心化、安全和透明的互联网世界。在Web3生态系统中&#xff0c;区块链技术是基础设施&#xff0c;而浏览器和数字管理是主要的应用场景。 区块链技术是Web3的核心&#xff0c;它是一种去中心化的分…

Spring更简单读取和存储对象

目录 前言 注解 存储Bean 通过类注解 配置扫描路径 添加类注解存储Bean对象 Controller(控制器存储) Service(服务存储) Repository(仓库存储) Component(组件存储) Configuration(配置存储) 类注解之间的关系 Bean的命名规则 通过方法注解 重命名Bean 方式一 方式…

【【51单片机 --秒表--定时器扫描按键数码管】】

轻松做秒表&#xff0c;谁用谁知道 我们在Key 和Nixie 内部都写一个函数这个是main 中中断函数的调用 因为中断是有优先级的&#xff0c;假设有多个中断&#xff0c;那么总是优先级高的在进行&#xff0c;如果我们安排多个中断的话&#xff0c;整体设计就会变得很麻烦 我们放在…

K8s系列---【K8s如何配置优雅停机?】

K8s如何配置优雅停机&#xff1f; 应用部署在k8s中&#xff0c;需要设置pod的优雅停机时间(terminationGracePeriodSeconds)&#xff0c;一般大于应用程序中spring.lifecycle.timeout-per-shutdown-phase设置的超时时间&#xff1b;设置之后服务更新或者重启时k8s会捕获到1号进…

2 push方法的使用(相当于python的append方法)

push方法相当于python的append方法&#xff0c;用来添加数组元素。 另外&#xff0c;数组取元素也是使用data[i]的格式。 例子&#xff1a; <script>var dataList [[1,2,3,4,5,6],[7,8,9,1,2,3]];var x dataList[0];console.log(x);dataList.push([1,1,2,3,4,5]);cons…

leetcode 47. 全排列 II

2023.7.23 这道题是上一题全排列 的一个升级版。 唯一区别就是需要增加一个树层去重的操作&#xff0c;因为数组nums中允许有重复的元素了&#xff0c;而上一题没有重复元素。 下面看代码&#xff1a; class Solution { public:vector<vector<int>> ans;vector<…

MySQL存储过程——概念及基本语法

1.什么时存储过程 2.存储过程操作语法 2.1 创建和调用 2.2 查看和删除 show create procedure p1;删除存储过程 drop procedure if exists p1;

Linux6.11 Docker 网络

文章目录 计算机系统5G云计算第四章 LINUX Docker 网络及Cgroup资源限制一、Docker 网络实现原理二、Docker 的网络模式1.网络模式详解1&#xff09;host模式2&#xff09;container模式3&#xff09;none模式4&#xff09;bridge模式5&#xff09;自定义网络 三、资源控制1.CP…