2021 MAXP命题赛 基于DGL的图机器学习任务

使用Deep Graph Library (DGL)进行图节点分类任务,使用的图数据是基于微软学术文献生成的论文关系图,其中的节点是论文,边是论文间的引用关系。整个图包括约150万个节点,2000万条边。节点包含300维的特征,来自论文的标题和摘要等内容。节点属于约50个类别。
比赛地址: MAXP

数据预处理

根据所给的数据集,我们需要读取节点及其对应的特征,以及边。根据论文id构建对应的节点id,并分配他们的特征和类别。读取边之后发现存在部分论文没有出现在论文数据中,这部分的节点id分配到最后,这类论文没有类别和特征,这些点的特征可以选择用邻节点特征均值进行赋值。节点特征使用Numpy保存为.npy格式,方便后续读取。
对train文件中的数据进行Train/Valid分割,用于模型评估(9:1),将train/valid/test节点id和labels等数据保存为二进制文件方便快速读取

图构建

根据上面的到的原论文id-引用论文id以及他们对应的节点id,借助DGL包构建论文引用关系图。

1
2
3
4
5
g = dgl.graph((u,v))
g.nodes() #获取节点id
g.edges() #获取边对应的节点(输出的是两个tensor)
g.ndata('feature') #访问节点属性
g.edata #访问边属性

Model_baseline

预处理和构图之后,我们模型输入的数据包括:

竞赛的baseline包括三个模型:

  • graphsage
  • graphconvolution
  • graphattention

其中各个网络由DGL.nn模块调库搭建。经过初步调参后发现网络深度为3层时三个模型结果最好,其中graphsage表现最好,在验证集上准确率接近54。

Proposed model

数据中的节点特征已经给定,因此只能改变模型的网络结构,我参考了2020 acl的论文:Every Document Owns Its Structure: Inductive Text Classification via Graph Neural Networks 所用的网络架构,具体采用的是三层图卷积后连接一层图注意力,并在图卷积与attention直接增加了skip-connection。在验证集上的到准确率为55+,目前排行榜上前10,后续将会做进一步调参来得到更好的结果。
另外,根据给定的特征直接使用MLP等前向传播网络虽然无法利用引用信息,但可以用来辅助最终的分类。

I do not accept rewards, but you can donate to the public welfare of China.
0%