每日一学—K邻算法:在风险传导中的创新应用与实践价值

2024-05-15 01:04

本文主要是介绍每日一学—K邻算法:在风险传导中的创新应用与实践价值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 📋 前言
  • 🎯 K邻算法的实践意义
  • 🎯 创新应用与案例分析
  • 🔥 参与方式


在这里插入图片描述

📋 前言

在当今工业领域,图思维方式与图数据技术的应用日益广泛,成为图数据探索、挖掘与应用的坚实基础。本文旨在分享嬴图团队在算法实践应用中的宝贵经验与深刻思考,不仅促进业界爱好者之间的交流,更期望从技术层面为企业在图数据库选型时提供新的视角与思路。


🎯 K邻算法的实践意义

K邻算法(K-Hop Neighbor),即K跳邻居算法,是一种基于广度优先搜索(BFS)的遍历策略,用于探索起始节点周围的邻域。该算法在关系发现、影响力预测、好友推荐等预测类场景中得到了广泛应用。
在这里插入图片描述
在图论中,沿着一条边移动被视为一跳(hop)。在遍历图中的顶点时,我们需要考虑多跳问题。图论起源于数学家欧拉在1836年提出的哥尼斯堡七桥问题,它奠定了图计算的数学基础。自20世纪80年代以来,图计算技术迅速发展,成为现代计算领域的重要组成部分。

在现实世界中,危机的传播正是K邻搜索的一个典型应用。以发生危机的实体为起点,顺着或逆着(取决于边的具体定义)边的方向进行1步、2步、3步乃至更深层次的查询,得到的就是先后会被危机波及到的实体。

以下是一个简单的 JavaScript 示例,演示了如何使用K邻近(K-Nearest Neighbors,KNN)算法进行分类。在这个示例中,我们将创建一个简单的数据集,包含两个特征(x和y坐标)和两个类别(0和1),然后使用KNN算法对新数据进行分类。

// 定义数据集
const dataset = [{ x: 1, y: 2, label: 0 },{ x: 2, y: 3, label: 0 },{ x: 3, y: 4, label: 0 },{ x: 4, y: 5, label: 1 },{ x: 5, y: 6, label: 1 }
];// 定义一个函数来计算两点之间的欧氏距离
function euclideanDistance(point1, point2) {const dx = point1.x - point2.x;const dy = point1.y - point2.y;return Math.sqrt(dx * dx + dy * dy);
}// 定义KNN分类函数
function knn(dataset, newPoint, k) {// 计算新数据点到数据集中每个点的距离const distances = dataset.map(data => ({point: data,distance: euclideanDistance(newPoint, data)}));// 根据距离排序数据点distances.sort((a, b) => a.distance - b.distance);// 取前k个最近的点const nearestNeighbors = distances.slice(0, k);// 统计最近邻居中各类别的数量const counts = nearestNeighbors.reduce((acc, curr) => {const label = curr.point.label;acc[label] = (acc[label] || 0) + 1;return acc;}, {});// 找到最多的类别let maxCount = 0;let predictedLabel;for (const label in counts) {if (counts[label] > maxCount) {maxCount = counts[label];predictedLabel = label;}}return predictedLabel;
}// 测试新数据点的分类
const newPoint = { x: 3.5, y: 4.5 };
const k = 3;
const predictedLabel = knn(dataset, newPoint, k);
console.log(`新数据点 (${newPoint.x}, ${newPoint.y}) 的预测类别是:${predictedLabel}`);

🎯 创新应用与案例分析

以某知名房地产企业HD的供应链图谱为例,我们可以通过持股方向、资金流向等信息,清晰直观地揭示危机的传播路径和传递对象。
在这里插入图片描述
以HD为例,危机发生后,风险传播路径如下:

  • 第一层:影响HD的关联公司;
  • 第二层:影响公司员工和供应商;
  • 第三层:影响购房者(供应商停止供货、工人停工,可能导致HD的在建工程停滞)。

风险从HD集团开始,逐步扩散至关联公司、员工、供应商、购房者等,形成了一张复杂的“网络”,呈现出明显的“链条效应”。

然而,许多与风险传导相关的实际应用并未采用图计算,而是依赖于手工计算,如银行KYC部门在计算UBO时仍使用Excel表。这种做法的效率和准确率可想而知。这与金融机构IT系统的陈旧和工作方法的落后有直接关系,阻碍了业务的开展,如企业影响力分析。

企业影响力分析不仅涉及持股关系、生产供求关系等传统问题,还应包括与企业相关的所有金融行为和事件,以及与这些行为事件直接或间接相关的事务。分析的视角不应仅限于企业实体,而应扩展至企业发布的产品、债券等。

如下图所示,分析的核心是企业的某个债券,其价格下跌可能直接影响其他债券的价格:
在这里插入图片描述
下图则标出了持有该债券的、可能受影响的省内其他企业:
在这里插入图片描述
下图展示的是该债券的1步邻居,从这些邻居继续向外探寻就能得到该债券价格下跌后产生的危机传递效应:
在这里插入图片描述
专家们已越来越认识到,金融风险并不是孤立存在的,不同风险间具有链条效应,任何一只蝴蝶扇动翅膀,都有可能造成跨市场的风险传染——风险的关联性具有相互转化、传递和耦合的特点——图技术与蝴蝶效应在本质上是不谋而合的,即通过深度挖掘不同来源的数据,以网络化分析的方式去洞察。

此外,金融场景是一种基于长链条计算的场景,这就导致技术实现时的规则更为复杂,因为会涉及到各种回溯、归因,而且数据的计算量更大,同时也更注重时效性。只有实现真正的实时、全面、深度穿透、逐笔追溯、精准计量的监测和预警,才能保障金融风控中不会出现“蝴蝶效应”式的风险发生。

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

在行业应用中,K邻算法通常应用于多模态的异构图,即将多个单一信息的图融合在一起形成的综合性图谱。这对算法实现者的数据收集和构图能力提出了高要求,同时也对K邻算法的灵活性和功能性提出了更高标准。嬴图的高密度并发图算法库是目前全球运行最快、最丰富的图算法集合,支持通过EXTA接口进行热插拔和扩展。

如果在公开资料中看到K邻算法的应用多是同构图(只有一种点、一种边),可能是因为作者想通过简单的例子阐明观点,或者因为构图能力不足限制了算法的应用,也可能是K邻算法的实现不尽人意,无法对异构图进行恰当处理。K邻算法的应用应该是广泛且实际的,能够解决现实问题的,如果是因为后面两种情况而限制了算法的“大展宏图”,那么相关图厂商就应该反思一二并提高自身了!

最后,一个优秀的算法设计不仅应具备解决问题的能力,还应关注计算效率,即算力。我们列举了一些高性能图计算系统应具备的核心能力,以供企业在评估市场上各种图计算产品时作为参考:

  • 高速图搜索能力:高QPS/TPS、低延时,实时动态剪枝能力;
  • 对任何规模图的深度、实时搜索与遍历能力(10层以上);
  • 高密度、高并发图计算引擎:极高的吞吐率;
  • 成熟稳定的图数据库、图计算与存储引擎、图中台等;
  • 可扩展的计算能力:支持垂直与水平可扩展;
  • 3D+2D高维可视化、高性能的知识图谱Web前端系统;
  • 便捷、低成本的二次开发能力(图查询语言、API/SDK、工具箱等)。

🔥 参与方式

《图算法:行业应用与实践》免费包邮送出 3 本!

抽奖方式:随机抽取 3 位小伙伴免费送出!
参与方式1:关注博主、点赞、收藏、评论区评论 (随机有效留言即可)(切记要点赞+收藏,否则抽奖无效,每个人最多评论三次!)
参与方式2:关注博主公众号,私信然后参与抽奖
活动截止时间:2024-5-18 22:00
当当网购买链接:https://product.dangdang.com/29705431.html
在这里插入图片描述

这篇关于每日一学—K邻算法:在风险传导中的创新应用与实践价值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/990364

相关文章

Spring Boot 配置文件之类型、加载顺序与最佳实践记录

《SpringBoot配置文件之类型、加载顺序与最佳实践记录》SpringBoot的配置文件是灵活且强大的工具,通过合理的配置管理,可以让应用开发和部署更加高效,无论是简单的属性配置,还是复杂... 目录Spring Boot 配置文件详解一、Spring Boot 配置文件类型1.1 applicatio

Python中随机休眠技术原理与应用详解

《Python中随机休眠技术原理与应用详解》在编程中,让程序暂停执行特定时间是常见需求,当需要引入不确定性时,随机休眠就成为关键技巧,下面我们就来看看Python中随机休眠技术的具体实现与应用吧... 目录引言一、实现原理与基础方法1.1 核心函数解析1.2 基础实现模板1.3 整数版实现二、典型应用场景2

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

tomcat多实例部署的项目实践

《tomcat多实例部署的项目实践》Tomcat多实例是指在一台设备上运行多个Tomcat服务,这些Tomcat相互独立,本文主要介绍了tomcat多实例部署的项目实践,具有一定的参考价值,感兴趣的可... 目录1.创建项目目录,测试文China编程件2js.创建实例的安装目录3.准备实例的配置文件4.编辑实例的

Python 中的异步与同步深度解析(实践记录)

《Python中的异步与同步深度解析(实践记录)》在Python编程世界里,异步和同步的概念是理解程序执行流程和性能优化的关键,这篇文章将带你深入了解它们的差异,以及阻塞和非阻塞的特性,同时通过实际... 目录python中的异步与同步:深度解析与实践异步与同步的定义异步同步阻塞与非阻塞的概念阻塞非阻塞同步

Python Dash框架在数据可视化仪表板中的应用与实践记录

《PythonDash框架在数据可视化仪表板中的应用与实践记录》Python的PlotlyDash库提供了一种简便且强大的方式来构建和展示互动式数据仪表板,本篇文章将深入探讨如何使用Dash设计一... 目录python Dash框架在数据可视化仪表板中的应用与实践1. 什么是Plotly Dash?1.1

Android Kotlin 高阶函数详解及其在协程中的应用小结

《AndroidKotlin高阶函数详解及其在协程中的应用小结》高阶函数是Kotlin中的一个重要特性,它能够将函数作为一等公民(First-ClassCitizen),使得代码更加简洁、灵活和可... 目录1. 引言2. 什么是高阶函数?3. 高阶函数的基础用法3.1 传递函数作为参数3.2 Lambda

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

springboot集成Deepseek4j的项目实践

《springboot集成Deepseek4j的项目实践》本文主要介绍了springboot集成Deepseek4j的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录Deepseek4j快速开始Maven 依js赖基础配置基础使用示例1. 流式返回示例2. 进阶

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使