news 2026/4/28 12:20:20

如何改进图以提升您的机器学习模型性能

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
如何改进图以提升您的机器学习模型性能

原文:towardsdatascience.com/how-to-improve-graphs-to-empower-your-machine-learning-models-performance-f7a533a73fc2

由拓扑信息定义的图在许多机器学习场景中很有帮助。它们可用于社区检测、节点影响、分类和其他任务。机器学习模型在这些任务上所能达到的性能将强烈依赖于图的质量,这使得提高图的质量变得非常重要。鉴于图质量的重要性,本文将讨论如何提高用于机器学习的图的质量。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/859ecd50cd117e653ba046f026e0bf61.png

在本文中学习如何改进图。图片由 ChatGPT 提供。“为以下标题创建一篇文章的图片:如何改进使用拓扑信息定义的图”提示。ChatGPT,4,OpenAI,2024 年 4 月 3 日。chat.openai.com.

动机

本文的动机在于我正在从事一个涉及图的项目。我创建的图的质量对于我的社区聚类算法的性能至关重要,这就是为什么我花费了大量时间理论化如何提高图的质量。我在自己的图上测试了本文中提到的每个想法。有些想法提高了我的图的质量,有些降低了质量,有些则没有明显影响。如果您想了解更多关于每个想法对您的图可能产生的影响,您可以阅读以下我发表在 Towards Data Science 上的关于测试图质量的文章:

如何测试图质量以提升图机器学习性能

本文的结构是每个部分将涵盖一个用于提高图质量的想法。其中一些想法可能对您有所帮助,而另一些可能需要更有帮助。本文的目的是为您提供如何提高图质量的想法。在机器学习中,您很少能保证某个特定的实现会有效。相反,您必须尝试不同的理论,看看它们在您的用例中表现如何。随着时间的推移,您将建立起对什么可能奏效的直觉,尽管亲自实现理论是发现您的机器学习算法性能如何随着新实现而变化的一种可靠方法。

此外,为了缩小文章的范围,我将专注于拓扑定义的图。也就是说,节点之间的边定义了图。相比之下,你有由节点嵌入定义的图。你可以在下面看到这两种图之间的区别:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/476b57e5a18a18289333c1c82955f048.png

这里是一个使用节点嵌入定义的图(左)和由拓扑信息表示的图(右)的示例。节点嵌入图中的每个节点都有一个 X 坐标和一个 Y 坐标。拓扑图仅由连接每个节点的边和每个节点的索引定义。图片由作者提供。

虽然逐个应用建议的更改可能会有所影响,但更改的组合将对图的质量产生显著贡献。例如,减少图中的边数可能会损害质量。质量下降可能是因为减少边数可能会隔离一些节点。如果你减少边数并强制图保持连通,你可能会看到图质量的改善。重要的是要记住,由于难以知道哪些更改组合将对你的特定图质量产生显著影响,因此可能需要组合更改以改善性能。

目录

· 动机 · 目录 · 什么是高质量图 · 实施测试 · 组合图 · 限制节点影响 · 调整边数 · 避免孤立节点 · 使图保持连通 · 查看创建图所用的数据 · 使用其他 ML 模型改进图 · 结论

什么是高质量图

首先,为了确定什么可以改善图质量,我们必须定义一个好的图。一个好的图是什么将取决于你使用图的目的。如果你执行社区检测,一个典型的图倾向于比不相似的节点更紧密地连接相似的节点。如果你执行节点分类,一个好的图可以定义为允许机器学习算法根据节点的邻居预测类别的图。当考虑节点影响时,一个好的图可以是高度有影响力的节点具有高度数的图。

一个好的图会因任务而异,你应该定义什么使你的特定用例中的图成为好的图。在提高图质量的同时,你应该始终牢记这一点。

实施测试

在定义你认为的高质量图之后,你应该实施定量测试来反映其质量。然后,你应该编写代码。

例如,当处理社区检测问题时,我定义了一个优秀的图形,其中属于同一社区的节点比属于不同社区的节点连接得更紧密。考虑到这一点,我可以为图形质量开发一个量化指标:

有多少百分比的节点与同一标签的节点最强连接?

下面的图像显示了一个例子,我的指标会评分为 60%,因为五个节点中有三个节点与同一标签的节点最强连接。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/b2544bf193c6a5ef83354b4ace53c4ee.png

一张显示与同一标签最强连接的概念的图形。每个节点中的字母是节点的真实标签,边上的数字是边的权重。节点颜色表示节点是否与同一标签最强连接(绿色)或不同标签(红色)。你可以看到有三个节点是最强且连接最紧密的,它们的边权重在同一标签上。图片由作者提供,

无论何时你想测试新的实现是否提高了我的图形质量,你都可以计算我的评分指标。如果它增加,这表明新的实现提高了你的图形。然后你可以通过迭代过程进一步改进你的图形。

创建此类测试的重要性不容小觑。虽然最初创建此类测试可能是一种浪费时间的行为,但它们在整个项目过程中可以为你节省大量时间。例如,你不必手动检查,通过视觉检查,在新的实现之后图形质量是否有所提高,你可以计算自己的评分指标。另一种测试你图形质量的方法是运行下游任务,在我的情况下是社区检测。然而,运行下游任务通常比计算你的评分指标花费的时间要长得多,这突出了通过开发自己的指标可以节省的时间。

通常很难为你的图形质量开发一个完美的评分指标。例如,我用来找到与同一标签节点最强连接的节点百分比的评分指标并不完美地与我的社区检测结果相关。然而,你开发的评分指标应该作为下游任务结果的代理。这意味着该指标不需要与下游任务的评分完美相关,而是给出下游任务评分的指示,为你节省大量时间和精力。

结合图形

提高你的图表质量的第一种方法是结合来自不同图表的信息。结合图表可能发生在你从不同的模态创建不同的图表时。你可以在我的《数据科学之路》文章中了解更多关于结合多模态信息的内容。

从不同的图表中结合信息可以通过几种方式实现。如果你认为你的图表具有相同的重要性,你可以将所有边权重相加,就像你在下面的图片中看到的那样:

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/7abfcdcbf02ada237dd035bcfd5cfcbe.png

这是两个图表结合形成一个图表的例子。左侧两个图表的边权重已经相加,形成了右侧的图表。图片由作者提供。

结合图表的另一种方法是只添加存在于你不同图表中的边。这是一个更严格的方法,但通常会导致更正确的边,在机器学习意义上更注重精确度而不是召回率。

此外,如果你认为你的图表具有不同的重要性,这在现实世界的场景中通常是情况,你可以考虑另一种方法。例如,如果你有一个图像,你从图像中的文本创建了一个图表,并从图像中的文本创建了一个图表,那么不同重要性的图表可能是这种情况。对于特定的任务,如文档分类,文本可能比图像更重要。在这种情况下,你应该比图像图表更重视文本图表。在这种情况下,提高图表质量的方法是,如果边同时存在于文本和图像图表中,则将其相加,并忽略仅存在于图像图表中的边。此外,你还可以在此处添加权重,例如将图像边乘以 0.5,表示假设图像的重要性是文本的一半。

限制节点影响

提高你的图表质量的另一种方法是限制特定节点的影响。在许多现实世界的场景中,节点的度分布将遵循幂律。这意味着少数节点具有高度,而大多数节点具有低度。

例如,幂律分布在社会网络图表(如 Instagram)中很典型。在这里,你可以看到被大量人关注的名人。然而,名人只占 Instagram 上总人数的一小部分。大多数人将拥有比名人更少的 Instagram 账户。在社会网络的情况下,少数高度节点是名人,而许多低度节点是其他非名人。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/ce6a36dade03e8d3418d458d0f88f79a.png

这是幂律分布的一个例子。在左侧,大多数值(高频率)具有低值,而在右侧,较少的值(低频率)具有高值。这类似于社交网络图中人的连接分布。图片由作者提供。

由于一些节点具有高度,它们通常会显著影响图。例如,在社区检测中,这可能是一个缺点,因为您不一定希望任何节点连接到 50%的其他节点。这是因为高度节点只能属于一个社区(假设我们正在查看排他性社区检测)。然而,当这个节点连接到图的大部分时,它可以影响属于不同社区的大量节点。在某些情况下,这可能是理想的情况,但在我个人的情况下并非如此。

为了减少最高度节点的影響,我设定了一个节点可能拥有的最大度数限制。您应该选择哪个限制将取决于您的图。由于我是从嵌入之间的相似性(我将称之为相似性图)创建我的图的,我只保留了最高相似度的边。如果您无法优先考虑边的的重要性,考虑随机移除边,尽管这可能会因为自然原因而具有风险。相反,我建议阅读以下部分,该部分讨论了移除边的选项。

如果您想了解更多关于图中节点影响力的信息,您可以阅读我下面的 Towards Data Science 文章,关于选择图中最有影响力的节点集:

如何在图中选择最有影响力的节点组合

调整边的数量。

此外,您可以通过调整边的数量来提高图的质量。这与上一节类似,但这种方法也针对低度节点。调整节点的数量可以通过增加或减少边来显著改变您的图,使其更加连通或更不连通。在社区检测的情况下,我根据图中边的数量经历了显著的准确性变化,这就是为什么调整图中边的数量可能是一个重要的改进。

调整图中边的数量有几种选择。如果你有一个具有嵌入相似性的图,你可以通过只选择最相似的边来减少边的数量。例如,通过设置相似性阈值,保留相似度高于阈值的边。你还可以设置百分位数,例如,将百分位数设置为 80,只保留最相似的 20%的边。

例如,如果你的图是一个社会网络图,减少边的数量可以通过不同的方式来完成。你可以在社会网络图中移除最新的连接,这意味着持续时间较长的连接比新的连接更重要。你也可以根据熟悉朋友的数量来移除边,如果社会网络图中的连接与一个节点有很多共享连接,那么你可以假设该节点比其他节点更重要。

我建议寻找一种移除边的启发式方法,而不是随机移除它们。通过随机选择来消除边会使你的管道更具随机性,这通常是你想避免的。此外,你通常可以找到调整边数量的良好启发式方法,正如我在具有阈值和百分位数的相似图以及具有共享连接的社会网络中描述的那样。

你还可以考虑增加边的数量。在相似图中,你可以通过降低阈值或百分位数来增加边的数量。在社会网络图中,你可以在节点之间添加许多共同连接的边。

避免孤立节点

避免孤立节点是一种简单而有效的技术,可以提高你的图质量。当与仅由拓扑信息定义的图一起工作时,每个节点的信息是由节点的邻居定义的。因此,孤立节点将没有可用的信息,因为它们没有邻居。强制所有孤立节点至少连接到一个节点可能是一种强大的技术。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/98b836e295a99cd27408bffbf9aca546.png

这里是一个示例,展示了用红色标记的两个孤立节点。孤立节点没有与节点相连的边。图片由作者提供。

如果你创建自己的图并想避免孤立节点,你可以在遵循上一节的情况下在图中添加更多边,从而降低孤立节点的可能性。然而,除非你的图是完全连接的,否则节点仍然有可能孤立。你可以通过为每个孤立节点添加至少一个节点来避免孤立节点。我会在相似图中检查每个孤立节点,并将其连接到其最相似的节点。

另一种方法是删除所有孤立节点,这在某些情况下可能是一个可行的选择。在社会网络中,孤立节点价值很小,并且可能对正在执行的任务不太重要。因此,在社会网络中删除孤立节点可能是一个可行的策略。

使图保持连接

继续避免孤立节点的趋势,您也可以确保图是连接的。一个连接图是一个图中每对节点之间都存在路径的图。从图中的任何节点开始,您可以遍历边并最终到达任何其他节点。相比之下,一个不连接的图将至少包含两个节点孤岛,并且每对节点之间不存在路径。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/d5498bd7993fdcbdb0caacd85bcf77ba.png

这里是一个完全连接图(左)、一个连接图(中)和一个不连接的两个节点孤岛图(右)的示例。图片由作者提供。

然而,强制图保持连接可能具有挑战性。特别是在基于相似性的图中,找到要添加的最佳边集(最少且最相似的边)可能很困难,因为您可以添加无数种可能的边集来连接图。

然而,如果您不需要完美的解决方案,您可以简化问题。在相似性图中,您首先可以找到最大的节点孤岛。然后,您可以遍历所有不在最大节点孤岛中的节点,并将它们连接到最大节点孤岛中最相似的节点。这将确保遍历所有不在最大节点孤岛中的节点后,只有一个节点孤岛存在。

上一段描述的方法是贪婪的,它很简单,但通常不是最优的。您可以通过一个优先考虑更多相似节点之间边的搜索算法来改进这个算法,尽管这些边不在主岛上。然而,这使得问题变得更加具有挑战性,因此我不会深入探讨这个主题。我阅读了关于这个主题的这篇有趣的 Stack Overflow 帖子,我推荐您阅读。

查看创建图所用的数据

另一个需要记住的重要点是图的构建方式。如果您不是自己创建图,例如使用相似性图,您可以忽略这一部分。如果您确实在创建图,这是一个需要记住的重要点。您创建的图的质量只能与制作它的数据质量一样好。

https://github.com/OpenDocCN/towardsdatascience-blog-zh-2024/raw/master/docs/img/f19cb9e4e7884e36bd9426278c0130fc.png

ChatGPT 对机器学习概念“垃圾输入,垃圾输出”的图像。这意味着某物只能与其制作所用的质量一样好。图由 ChatGPT 制作。“从机器学习中制作“垃圾输入,垃圾输出”概念图像”提示。ChatGPT,4,OpenAI,2024 年 4 月 3 日。chat.openai.com.

我建议测试并检查你用于图表的数据。例如,如果你是从嵌入中创建相似性图,我写过一篇关于测试嵌入质量的文章。

理解你用于创建图表的数据对于理解图表本身的质量至关重要。你不能期望创建一个比用于创建它的数据更好的图表。通过检查数据,你可以发现诸如以下关键问题:

  • 数据未进行归一化,导致一些边权重过大

  • 严重的类别不平衡,使得创建一个好的图更具挑战性

  • 没有清理文本,导致文本相似度不准确

这些只是你在检查数据时可以找到的一些问题的例子;你自己的数据中的问题可能会自然地偏离这些。

使用其他机器学习模型改进图

你还可以使用其他机器学习模型来提高你图的质量。PapersWithCode 有 106 个与图相关的任务,如链接预测和图结构学习。你还可以在HuggingFace上找到图机器学习模型。

使用这些模型,例如,你可以使用预训练的链接预测模型来找到你图中的新链接。检测到你没有找到的边或图中已经存在的边可能很有趣。应用这些最先进的机器学习模型可以是一种提高图质量的创新方法。

找到一个针对你需要的特定用例训练的模型,以及一个预训练的模型可能具有挑战性。然而,有无数种不同方式和不同任务上训练的模型,这使得你最终可能找到适合你的模型。

你还应该记住,有些模型不可用于商业用途。例如,如果你是在大学的研究工作中工作的一部分,这并不是问题。如果你是在公司工作或从你的工作中赚钱,你应该警惕模型许可证的商业限制。我多次吃过亏,花时间整合了一个后来发现不可用于商业用途的模型。然后我不得不放弃我所做的工作,浪费了几个小时,这就是为什么我在这里写这个警告的原因。

结论

在这篇文章中,我讨论了什么使图表具有高质量,以及你可以和应该实施哪些测试来评估你图表的质量。此外,我还提供了以下你可以采取的方法来潜在地提高你图表的质量:

  • 结合图表

  • 限制节点影响

  • 调整边的数量

  • 避免孤立节点

  • 使图表连通

  • 查看创建图表所使用的数据

  • 使用其他机器学习模型改进图表

这些方法中的任何一种,或者它们的组合,都可以提高你的图表质量。考虑这些方法是否可以帮助你解决的问题,如果是的话,就在你自己的图表上实施它们。

你还可以阅读我在WordPress上的文章。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/27 23:51:33

解读大数据领域 Lambda 架构的关键组件

解读大数据领域 Lambda 架构的关键组件 关键词:大数据、Lambda 架构、关键组件、实时处理、批处理 摘要:本文深入探讨了大数据领域中 Lambda 架构的关键组件。通过生动形象的语言和通俗易懂的例子,详细解释了 Lambda 架构各组件的概念、原理以及它们之间的关系。同时,还给出…

作者头像 李华
网站建设 2026/4/19 14:32:56

基于Springboot水产养殖管理系统【附源码+文档】

💕💕作者: 米罗学长 💕💕个人简介:混迹java圈十余年,精通Java、小程序、数据库等。 💕💕各类成品Java毕设 。javaweb,ssm,springboot等项目&#…

作者头像 李华
网站建设 2026/4/18 13:46:18

2025年南京理工大学计算机考研复试机试真题(附 AC 代码 + 解题思路)

2025年南京理工大学计算机考研复试机试真题 2025年南京理工大学计算机考研复试上机真题 历年南京理工大学计算机考研复试上机真题 历年南京理工大学计算机考研复试机试真题 更多学校题目开源地址:https://gitcode.com/verticallimit1/noobdream N 诺 DreamJudg…

作者头像 李华
网站建设 2026/4/22 23:18:12

靠谱的口碑靠前不踩雷大落地窗品牌杰出生产厂家

靠谱的口碑靠前不踩雷大落地窗品牌杰出生产厂家在现代建筑装饰中,大落地窗以其独特的魅力和实用价值,成为众多消费者的理想之选。然而,市场上大落地窗品牌众多,如何挑选到靠谱、口碑好且不踩雷的品牌成为关键。美亿门窗作为杰出的…

作者头像 李华
网站建设 2026/4/23 10:31:11

基于SpringBoot的海洋环保小程序系统(毕业设计项目源码+文档)

课题摘要本课题以 SpringBoot 框架为核心后端支撑,研发一款面向公众、海洋环保组织及监管部门的海洋环保微信小程序系统,旨在解决传统海洋环保工作中信息传播不畅、公众参与度低、环保数据分散、监管反馈不及时等痛点,打造集信息科普、志愿报…

作者头像 李华
网站建设 2026/4/26 19:15:34

雷家林诗歌集录之十一Collection of Poems by Lei Jialin, Volume 11

“Heaven and Earth”In the vast expanse of heaven and earth, I’m but a lonely boat, Drifting aimlessly, not knowing which shore to approach. Amidst the boundless clouds and waters, I’m accompanied by the green mountains on my journey. Gales and rains swe…

作者头像 李华