利用GCN进行节点分类

2024-05-07 14:08
文章标签 进行 分类 节点 gcn

本文主要是介绍利用GCN进行节点分类,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

图是信息的最佳表示方式。在一个图中,有通过边(谓之“关系”)连接起来的节点(谓之“实体”)。想一想,你的Facebook社交网络是个什么样子的:以你为中心连接上你的朋友们,他们又以不同的方式相互联系。在表格中表示这些信息的方式是有些随意(或者不好的),社交关系并不是像一排排规矩的摆在桌子上的东西,而是像下图这样的:

Facebook 社交网络;金色的边你的社交关系;灰色的边是你的朋友之间的关系

预测节点属性

现在我们得到了Facebook社交网络的最佳表示,那么如何去更好的预测你朋友们的喜好呢?我们这里使用图卷积神经网络(Graph convolutional networks),GCN是一种新的深度学习架构,能够利用包含在数据以及数据之间关系中的信息。

来看一个例子,假设我们想要了解你的朋友们谁倾向于共和党派谁倾向于民主党派,我们将在Facebook 社交网络图上应用GCN,并将预测的“政治立场”这个节点属性分配给图中缺少标签的节点。

GCN网络有两个输入:首先需要列出你每个朋友的特征,包括母校、邮政编码、所属团体等等信息,很显然,这些信息是学习一个人政治倾向的特征;第二,GCN采用图结构的精简形式,这帮助GCN学习朋友的友谊是如何影响他们的政治立场的。

按理说,仅这两条信息就足以预测一个人的政治倾向了。传统的深度学习模型甚至不需要应用实体之间的关系来进行预测,它们只利用个人属性。但是通过在GCN中结合数据的属性以及结构,可以使预测更加强大。

GCN的输入:Jane和很多共和党人有联系,但是她也有自己的一些属性,比如教育、地理位置,很多Facebook团体成员,那她到底是共和党派还是民主党派呢?

GCN的应用十分简单。它们是分层操作的,可以将它们堆叠在一起,达到想要的深度。在每一层的内部,有三个特点:

第一 标准化的图结构;

第二 标准化的图结构乘以节点属性;

第三 我们将非线性函数应用于节点属性和权重;

一个图卷积层,敏锐的读者会注意到,由于核函数的平稳性,这是一个近似卷积算子

在应用中,额外添加dropout层,激活函数采用Leaky ReLU,损失函数采用softmax loss,如下图所示:

一个使用中间dropout层的双层图卷积神经网络,我发现leaky ReLU函数能够有助于缓解梯度消失。

我们来看一部分使用Tensorflow实现GCN层的代码,了解一下该网络设计的简单性。

一个基于TensorFlow实现的图卷积神经网络,使用ADAM优化器,softmax交叉熵损失函数。绿色部分是图卷积层的实现,注意它的简洁。

应用

上面的例子太简单,无法证明该问题的复杂性。下面,我们看一个真正的Facebook网络,不同政治倾向的颜色不同。

一个基于Facebook数据的网络,不同的颜色代表每个人不同的政治倾向,图卷积预测了10%的这些人的政治立场,其余的作为训练序列的一部分输入。

记住,GCN不在乎每个节点的输入数据,或者节点之间的关系是什么样的。我们可以任意使用数据,比如企业之间的金融交易数据和企业自身的财务状况信息,便可以使用GCN来告诉我们哪些交易具有欺诈性。建立一个企业的超级节点图,我们可以利用GCN找出洗钱团伙。

一个交易的超级节点图。这些组织中有没有洗钱圈?利用GCN找出违法分子。

我们可以将GCN应用到银行客户信用风险评估,根据客户的特征以及风险阈值找出哪些客户是不能审批贷款的。还可以利用历史银行数据。

10万节点银行客户数据集的子图。利用客户之间的关系以及每个客户的财务数据,我们可以评估哪些客户可以获得什么贷款的批准,并对照一些风险阈值进行验证。

利用数据的自然结构提高了机器学习的预测能力,因此认识到图的普遍性是非常重要的。每个企业每天都在处理很多数据,而这些数据非常适合用图结构来表示。在任何信息连接的情况下都会出现图相关的问题,任何有图的地方,背后都有惊人的价值等待被挖掘。

这篇关于利用GCN进行节点分类的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景

C++链表的虚拟头节点实现细节及注意事项

《C++链表的虚拟头节点实现细节及注意事项》虚拟头节点是链表操作中极为实用的设计技巧,它通过在链表真实头部前添加一个特殊节点,有效简化边界条件处理,:本文主要介绍C++链表的虚拟头节点实现细节及注... 目录C++链表虚拟头节点(Dummy Head)一、虚拟头节点的本质与核心作用1. 定义2. 核心价值二

MySQL中的索引结构和分类实战案例详解

《MySQL中的索引结构和分类实战案例详解》本文详解MySQL索引结构与分类,涵盖B树、B+树、哈希及全文索引,分析其原理与优劣势,并结合实战案例探讨创建、管理及优化技巧,助力提升查询性能,感兴趣的朋... 目录一、索引概述1.1 索引的定义与作用1.2 索引的基本原理二、索引结构详解2.1 B树索引2.2

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

Linux使用scp进行远程目录文件复制的详细步骤和示例

《Linux使用scp进行远程目录文件复制的详细步骤和示例》在Linux系统中,scp(安全复制协议)是一个使用SSH(安全外壳协议)进行文件和目录安全传输的命令,它允许在远程主机之间复制文件和目录,... 目录1. 什么是scp?2. 语法3. 示例示例 1: 复制本地目录到远程主机示例 2: 复制远程主

windows系统上如何进行maven安装和配置方式

《windows系统上如何进行maven安装和配置方式》:本文主要介绍windows系统上如何进行maven安装和配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不... 目录1. Maven 简介2. maven的下载与安装2.1 下载 Maven2.2 Maven安装2.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

SpringBoot如何对密码等敏感信息进行脱敏处理

《SpringBoot如何对密码等敏感信息进行脱敏处理》这篇文章主要为大家详细介绍了SpringBoot对密码等敏感信息进行脱敏处理的几个常用方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录​1. 配置文件敏感信息脱敏​​2. 日志脱敏​​3. API响应脱敏​​4. 其他注意事项​​总结

python进行while遍历的常见错误解析

《python进行while遍历的常见错误解析》在Python中选择合适的遍历方式需要综合考虑可读性、性能和具体需求,本文就来和大家讲解一下python中while遍历常见错误以及所有遍历方法的优缺点... 目录一、超出数组范围问题分析错误复现解决方法关键区别二、continue使用问题分析正确写法关键点三