研一下学期和组内同学一同参加了KDD Autograph2020的比赛,最后也拿到了第二名的成绩,下面对本次比赛做个总结。
PASA_NJU代码总结
- 使用GraphNas对数据集搜索最优网络模型。(引自 Gao Y, Yang H, Zhang P, et al. Graphnas: Graph neural architecture search with reinforcement learning[J]. arXiv preprint arXiv:1904.09981, 2019.)
- 使用决策树根据数据集元信息进行模型选择,如节点数、边数、平均度等。
- 特征工程,我们发现将lpa和对特征的预测概率分布加入到features中对于citation类型图数据集会有性能提升,将边关系矩阵作为特征对于一些图数据集也会有提升。
- 加入EarlyStop早停机制以及自适应的集成策略。
JunweiSun代码总结
-
根据标签类别比率平衡loss(平衡的权重是比率开根号的倒数),类别数小于10或最大类别样本数小于最小类别样本数*10不使用(即是否类别平衡)。
-
使用microsoft的automl工具nni搜索模型超参,训练过程搜参,搜索空间较小。
-
使用0.1比例的验证集,评估指标为F1-score,验证集分值使用指数移动加权平均值来计算。
-
复现了多个论文的模型,如ResGCN, GraphSAGE, GIN, ARMA等,模型根据图信息进行选择,如特征维度,平均度,是否为有向图。
-
特征工程,实现了one_hot / svd / degree / node2vec / adj等特征,实际上只在原来的节点特征上添加了svd特征。
美团代码总结(第一名)
github代码
主要总结了特征工程部分的亮点:
- drop_excessive_columns: 判断feature的稀疏性 (如果不是一般都是0, 那就用每个维度等于众数的比例作为其稀疏比例),
如果feature维度过大, 那就根据这个稀疏比例, 将超过超过2000的稀疏的series直接求和 - special_data: 对有向图做了个特殊处理, 如果入度>出度的节点都属于同一类 (估计是通过eda观察到的),
那这些点就从图中去掉, 也能缓解一下类别不平衡 - split_train_valid: 观察到训练测试集都是严格按照类别等比例划分的, 就做了StratifidShuffleSplit
- 对有向图无向图的特征工程分开来处理了
- 会对degree做一个分箱, max(30, nunique() / 10)这么几个区间
- 会增加1阶 / 2阶 / 3阶 邻居的数量