CiteSeer 数据集是另一个广泛用于图神经网络(GNN)研究的基准数据集,特别是用于节点分类任务。以下是关于 CiteSeer 数据集的详细介绍:
数据集概述
CiteSeer 数据集由学术论文组成,每篇论文被视为一个节点,引用关系被视为边。该数据集包含六个类别的论文,每个节点都带有特征向量和标签。数据集的主要任务是根据节点的特征和图结构对节点进行分类。
数据集组成
-
节点(Nodes):
- 数量:3,327
- 代表:每个节点代表一篇学术论文。
- 属性:每个节点有一个3703维的二进制特征向量,表示该论文的内容。特征向量采用词袋模型(Bag of Words)表示,即每个特征维度对应一个词汇表中的词,值为1表示该词在论文中出现,为0表示未出现。
-
边(Edges):
- 数量:4,732
- 代表:每条边表示一篇论文对另一篇论文的引用关系。
- 无向图:边是无向的,即引用关系被视为对称的。
-
标签(Labels):
- 类别数:6
- 类别标签:每个节点(论文)属于一个类别,共有六类:
- Agents
- Artificial Intelligence
- Database
- Information Retrieval
- Machine Learning
- Human-Computer Interaction
数据集统计
- 节点数:3,327
- 边数:4,732
- 特征维度:3,703
- 类别数:6
数据表示
CiteSeer 数据集通常以图的形式表示,其中包含以下内容:
-
邻接矩阵(Adjacency Matrix):
- 表示:图的结构,其中 A[i,j]=1 表示节点 i 和节点 j 之间有边,A[i,j]=0 表示无边。
-
特征矩阵(Feature Matrix):
- 表示:节点特征,其中每行对应一个节点的特征向量。
-
标签矩阵(Label Matrix):
- 表示:每个节点的类别标签。
使用场景
CiteSeer 数据集主要用于以下研究场景:
-
节点分类(Node Classification):
- 目标:基于节点的特征和图结构,预测节点的类别标签。
- 常用模型:GCN(Graph Convolutional Network)、GAT(Graph Attention Network)等。
-
图嵌入(Graph Embedding):
- 将节点嵌入到低维向量空间中,以便在嵌入空间中进行分类、聚类等任务。
-
图神经网络模型评估(Evaluation of GNN Models):
- 评估各种 GNN 模型的性能。
常用处理步骤
- 读取特征矩阵、邻接矩阵和标签。
- 对特征进行标准化处理。
- 划分训练集、验证集和测试集。
- 构建 GNN 模型。
- 使用训练集进行模型训练,并在验证集上调参。
- 在测试集上评估模型性能。
- 使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)等指标进行评估。
示例代码
以下是一个使用 PyTorch Geometric 进行节点分类的简单示例,使用 CiteSeer 数据集:
import torch
import torch.nn.functional as F
from torch_geometric.datasets import Planetoid
import torch_geometric.transforms as T
from torch_geometric.nn import GCNConv
# 加载 CiteSeer 数据集
dataset = Planetoid(root='/tmp/CiteSeer', name='CiteSeer', transform=T.NormalizeFeatures())
class GCN(torch.nn.Module):
def __init__(self):
super(GCN, self).__init__()
self.conv1 = GCNConv(dataset.num_features, 16)
self.conv2 = GCNConv(16, dataset.num_classes)
def forward(self, data):
x, edge_index = data.x, data.edge_index
x = self.conv1(x, edge_index)
x = F.relu(x)
x = F.dropout(x, training=self.training)
x = self.conv2(x, edge_index)
return F.log_softmax(x, dim=1)
# 初始化模型、优化器和损失函数
device = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
model = GCN().to(device)
data = dataset[0].to(device)
optimizer = torch.optim.Adam(model.parameters(), lr=0.01, weight_decay=5e-4)
# 训练模型
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()
# 测试模型
def test():
model.eval()
_, pred = model(data).max(dim=1)
correct = int(pred[data.test_mask].eq(data.y[data.test_mask]).sum().item())
acc = correct / int(data.test_mask.sum())
return acc
for epoch in range(200):
train()
acc = test()
print(f'Epoch {epoch}: Accuracy: {acc:.4f}')
这个示例展示了如何使用 PyTorch Geometric 加载 CiteSeer 数据集,并训练一个简单的图卷积网络(GCN)进行节点分类。
参考文献
CiteSeer 数据集广泛用于各种图神经网络的研究和评估,是图数据分析领域的重要资源。它最早由 Giles, Bollacker 和 Lawrence 在他们的论文 "CiteSeer: An Automatic Citation Indexing System" 中提出,并且现在被广泛应用于图神经网络的研究中。
- https://clgiles.ist.psu.edu/papers/DL-1998-citeseer.pdf
https://clgiles.ist.psu.edu/papers/DL-1998-citeseer.pdf
- CiteSeer数据集_数据集-飞桨AI Studio星河社区CiteSeer(又名ResearchIndex),是NEC研究院在自动引文索引(Autonomous Citation Indexing, ACI)机制的基础上建设的一个学术论文数字图书馆。这个引文索引系统提供了一种通过引文链接的检索文献的方式,目标是从多个方面促进学术文献的传播和反馈。
https://aistudio.baidu.com/datasetdetail/177589
完结撒花
回家吧,回到最初的美好。