郭震 AI公众号:郭震AI

40 图神经网络之性能评估

发布日期:

最近更新:

分类: 30个神经网络

预计阅读: 4 分钟

阅读次数: 0

系列进度

AI 30 个神经网络 · 第 40 / 62

预计阅读4 分钟
结构重点4 个
图文要点6 张
正文规模1.7k 字
图神经网络之性能评估结构图查看大图
图神经网络之性能评估结构图

图神经网络处理的是关系数据。重点不是把表格换个形状,而是让节点通过边交换信息。这篇重点看评估。速度、精度、显存和可复现设置要一起记录,单个指标不能代表全部。

图神经网络之性能评估实操核对图查看大图
图神经网络之性能评估实操核对图

我会先画出节点、边和目标标签,再决定做节点分类、边预测还是整图分类。任务类型不同,评估方式也不同。

在上一篇中,我们探讨了图神经网络(GNN)的模型架构,了解了其基本构造和功能。接下来,我们将深入分析图神经网络的性能评估方法,确保我们能够合理地评估我们所构建的模型的有效性与准确性。

性能评估的重要性

在机器学习和深度学习中,性能评估是一个至关重要的步骤。尤其在处理复杂的数据结构如图时,评估模型的性能可以帮助我们理解模型的潜力与局限性。性能评估通常包括以下几个方面:

图神经网络之性能评估要点判断卡查看大图
图神经网络之性能评估要点判断卡

读这篇时,可以把「性能评估的重要性 -> 性能评估的关键指标 -> 准确率 -> 精确率与召回率」当成一条检查线:先看清材料、动作和结果,再回到案例、代码或指标里复查。

  1. 准确率(Accuracy): 衡量模型预测正确的比例。
  2. 精确率(Precision): 衡量真正类占预测为正类的比例。
  3. 召回率(Recall): 衡量真正类占实际正类的比例。
  4. F1评分(F1 Score): 精确率与召回率的调和平均值,综合考虑了假阳性与假阴性。
  5. AUC-ROC曲线: 评估二分类模型性能的指标,用于说明模型如何区分正负类。

性能评估的关键指标

1. 准确率

假设有一个分类任务,我们可以通过下面的公式计算准确率:

Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

其中,TPTP表示真正类,TNTN表示真负类,FPFP表示假阳性,FNFN表示假阴性。

2. 精确率与召回率

精确率和召回率的公式分别为:

Precision=TPTP+FP\text{Precision} = \frac{TP}{TP + FP} Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}

这两个指标特别适用于类别不平衡的问题。

3. F1评分

为综合考虑精确率和召回率,计算F1评分:

F1=2×Precision×RecallPrecision+RecallF1 = 2 \times \frac{\text{Precision} \times \text{Recall}}{\text{Precision} + \text{Recall}}

性能评估的案例分析

让我们通过一个实际案例加深对性能评估的理解。假设我们有一个图神经网络模型用于节点分类任务,如社交网络中用户的特征分类。我们可以使用以下方法进行性能评估:

数据集

使用Cora数据集,这是一个广泛用于图学习的标准数据集,包括科学论文以及它们之间的引用关系。

模型训练

我们构建一个简单的图卷积网络(GCN)作为我们的图神经网络模型,并在Cora数据集上进行训练。下面是基于PyTorch的示例代码:

import torch
import torch.nn.functional as F
from torch_geometric.datasets import Planetoid
from torch_geometric.nn import GCNConv

# 加载Cora数据集
dataset = Planetoid(root='/tmp/Cora', name='Cora')
data = dataset[0]

# 定义GCN模型
class GCN(torch.nn.Module):
    def __init__(self, num_features, num_classes):
        super(GCN, self).__init__()
        self.conv1 = GCNConv(num_features, 16)
        self.conv2 = GCNConv(16, num_classes)

    def forward(self, data):
        x, edge_index = data.x, data.edge_index
        x = F.relu(self.conv1(x, edge_index))
        x = F.dropout(x, p=0.5, training=self.training)
        x = self.conv2(x, edge_index)
        return F.log_softmax(x, dim=1)

model = GCN(num_features=dataset.num_features, num_classes=dataset.num_classes)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01)

# 训练模型
def train():
    model.train()
    optimizer.zero_grad()
    out = model(data)
    loss = F.nll_loss(out[data.train_mask], data.y[data.train_mask])
    loss.backward()
    optimizer.step()

for epoch in range(200):
    train()

# 评估模型性能
def test():
    model.eval()
    out = model(data)
    pred = out.argmax(dim=1)
    test_correct = pred[data.test_mask] == data.y[data.test_mask]
    accuracy = int(test_correct.sum()) / data.test_mask.sum().item()
    return accuracy

accuracy = test()
print(f'Test Accuracy: {accuracy:.4f}')

性能评估与分析

在模型训练与测试后,我们可以使用上面提到的各个评估指标对模型的性能进行全面分析:

  • 计算模型在测试集上的准确率、精确率、召回率和F1评分;
  • 通过混淆矩阵可视化模型在各个类别上的预测性能。
图神经网络之性能评估应用复盘卡查看大图
图神经网络之性能评估应用复盘卡

读到这里,可以把《图神经网络之性能评估》整理成一张复盘表:先说清主线,再拿一个小任务检查结果。

图神经网络之性能评估应用检查卡查看大图
图神经网络之性能评估应用检查卡

读完《图神经网络之性能评估》后,可以先挑一个小样例走完整流程,再判断哪些步骤已经能独立完成。

总结

在本篇文章中,我们详细探讨了图神经网络的性能评估方法,包括关键指标的定义与计算。通过具体案例,我们展示了如何使用PyTorch构建模型并进行有效的评估。这些评估方法将为后续的模型改进与优化提供重要的指导。

在下一篇文章中,我们将继续探讨胶囊网络的关键技术,深入理解这一新兴网络架构的特点和应用。

神经网络阅读地图卡查看大图
神经网络阅读地图卡

学《图神经网络之性能评估》时,可以先找一个自己能复现的小场景,再看相关概念和练习步骤,读完后用自己的例子复述一遍。

相关教程

相关入口

AI 教程总索引

分享文章

转发到常用平台

微信/朋友圈可先复制链接

相关教程

AI 教程总索引

相关内容

相关 AI 教程

返回栏目

Reader Messages

读者留言

有问题、补充资料或实测结果,可以直接留下。这里不需要登录。

最多 800 字

为了防刷,每条留言会做长度、链接数量和提交频率限制。

0/800

留言列表

0
正在加载留言...