首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GraphSAGE分类中如何进行归纳训练/测试分割

GraphSAGE分类中如何进行归纳训练/测试分割
EN

Data Science用户
提问于 2022-03-05 10:18:41
回答 4查看 994关注 0票数 3

假设我有一个网络,它由一个弱连接的组件组成。从各种论文中我看到,如果您想使用像GraphSAGE这样的归纳GNN,最好将您的培训/测试数据分成两个单独的图或组件。

由于我已经看到了用于节点分类和链路预测任务的不同方法,所以我特别感兴趣的是节点分类任务,可能的多类分类。

因此,训练/测试分裂图需要确保在训练图和测试图中有某种合理的类存在,同时避免孤立的节点。我已经看到了一些例子,他们只是使用scikit训练/测试拆分,但在我看来,这似乎忽略了节点连接,而且也不能保证您不会被隔离的节点抛出,这些节点可能会扭曲结果。

我能不能用卢万之类的东西,找出节点的社区,然后根据社区来分割图。在我看来,这将有助于提高图形的结构完整性,或者有更好的方法吗?

EN

回答 4

Data Science用户

回答已采纳

发布于 2022-03-12 22:14:57

如果我正确地理解了你,你正在寻找一种分层抽样,并希望创建地层或集群来对识别出的“高连通图”进行训练/测试分裂。

一种基本的方法是运行一种聚类算法,首先识别丰富的集群,然后在每个识别的集群上执行随机测试/序列分割。与保持图形完整性相一致的主要聚类算法之一是谱聚类。要在scikit中实现-学习请参考此链接

票数 2
EN

Data Science用户

发布于 2022-03-10 18:18:03

一种选择是使用现有的包,用于在保持类费率的同时训练/测试拆分图。例如,PyG (PyTorch几何)包有一个带有num_train_per_class参数的RandomNodeSplit类。

票数 2
EN

Data Science用户

发布于 2022-03-10 20:33:45

在基于图形的ML应用程序中,我没有经验,所以如果我过于简化,请纠正我,但是要重申这个问题:

  • 有一个弱连通节点的图。
  • 您想要使用GraphSAGE,根据我的研究,它可以根据局部区域对图进行分批,使用深度作为超参数。
  • 您希望平衡图中的类。因此,每个节点都有一个分类,您想要学习基于该节点的内容以及本地节点的分类。
  • 您不希望不必要的小区域,或完全孤立的节点,在您的火车或测试集结束。

因此,在所有条件相同的情况下,这种方法似乎是一个解决方案:

  • 迭代图,定义哪些节点是有效的,考虑到您训练GraphSAGE的深度和定义的一些条件(例如,必须有>5个节点由深度3连接)
  • 基于这些有效节点,根据类来平衡它们。
  • 使用平衡、过滤的数据集来训练您的模型。

同样,我的经验有限,但在我看来,如果你的图形真的很稀疏,过度的预处理输入会让你的模型对你正在处理的问题有一个天真的理解,这意味着当你的模型被应用到训练空间之外时,你的测试结果可能会变得平淡无奇。因此,虽然以上可能是你问题的答案,但我不建议采用这种方法。

票数 2
EN
页面原文内容由Data Science提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://datascience.stackexchange.com/questions/108777

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档