持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第21天,点击查看活动详情
前言
Hello!
非常感谢您阅读海轰的文章,倘若文中有错误的地方,欢迎您指出~
自我介绍 ଘ(੭ˊᵕˋ)੭
昵称:海轰
标签:程序猿|C++选手|学生
简介:因C语言结识编程,随后转入计算机专业,获得过国家奖学金,有幸在竞赛中拿过一些国奖、省奖...已保研。
学习经验:扎实基础 + 多做笔记 + 多敲代码 + 多思考 + 学好英语!
唯有努力💪
知其然 知其所以然!
本文只记录感兴趣的部分
4. EXPERIMENTS
4.1 Case Study: Les Misérables network
数据集: Les Misérables network
- 77个节点
- 254条边
设置,运行node2vec来学习网络中每个节点的特征表示
使用KMeans将特征表达聚集在一起,然后,在两个维度上可视化原始网络,节点根据它们的簇分配颜色
图3:
- 由node2vec生成的Les MiséRABES同现网络的互补可视化
- 标签颜色反映同质性(上图)和结构等价性(下图)
图的简单理解:
- 上图:不同的颜色分别代表了不同的簇/社区,同种颜色就是同一类的 对应 同质性
- 下图:同样的颜色代表具有类似的结构,比如蓝色小球,对应 结构等价
p、q参数的设置
- 上图:p=1,q=0.5
- 下图:p=1,q=2
p都为1,q=0.5时,更加倾向于DFS,利于获得节点的宏观邻域特征,更加反映同质性 q=2时,倾向于BFS,利于获得局部邻域特征,更加反映结构等价
4.2 Experimental setup
实验任务
- 节点的多标签分类
- 边的链接预测
基线方法
- Spectral clustering
- DeepWalk
- LINE
与以前用于评估基于采样的特征学习算法的设置不同,我们为每种方法生成相同数量的样本,然后在预测任务中评估所获得的特征的质量
在这样做时,我们忽略了纯粹因为实现语言(C/C++/Python)而观察到的性能收益,因为它是算法的次要部分。
因此,在采样阶段,DeepWalk、Line和node2vec的参数被设置为使得它们在运行时生成相同数量的样本
-
首先,DeepWalk使用分层抽样来近似Softmax概率,其目标类似于node2vec使用的目标。然而,与负采样相比,分层Softmax的效率较低[22]。因此,在保持其他一切不变的情况下,我们在DeepWalk中切换到负采样
-
其次,node2vec和DeepWalk都有一个用于优化的上下文邻域节点数量的参数,该数量越大,需要的优化次数(epochs)就越多。对于Line,此参数设置为unity,但由于Line比其他方法更快地完成一个epochs,所以我们让它运行个epochs。
用于node2vec的参数设置与用于DeepWalk和Line的典型值一致。具体地说,我们设置,并且针对单个epochs运行优化。
我们重复了10次随机种子初始化的实验,我们的结果具有统计学意义,P-value小于0.01
P值(P-value)就是当原假设为真时,比所得到的样本观察结果更极端的结果出现的概率。 如果P值很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,P值越小,我们拒绝原假设的理由越充分。 总之,P值越小,表明结果越显著。
在上进行网格搜索的情况下,对10%的标记数据进行10次交叉验证,学习到最佳的输入输出和返回超参数。
4.3 Multi-label classification
在多标签分类任务中,每个节点被分配到有限集合中的一个或多个标签
在训练阶段,我们训练一定比例的节点及其所有标签
任务是预测剩余节点的标签
这是一项具有挑战性的任务,特别是在很大的情况下
我们使用以下数据集:
- BlogCatalog
- 10,312 nodes,
- 333,983 edges,
- 39 different labels
- Protein-Protein Interactions (PPI)
- 3,890 nodes
- 76,584 edges,
- 50 different labels
- Wikipedia
- 4,777 nodes
- 184,812 edges
- 40 different labels
Experimental results
节点特征表示被输入到具有L2正则化的一对多Logistic回归分类器
我们使用Macro-F1分数来比较性能
实验结果如下表:
其中50%的节点被标记用于训练 Gain:收益(对比最接近node2vec的收益)
为了进行更细粒度的分析,我们还比较了在10%到90%的训练测试分割范围内的性能
训练数据占所有数据的比例从10%到90%
Micro-F1和Macro-F1得分的结果如下图
4.4 Parameter sensitivity
Node2vec算法涉及多个参数
我们使用已标记数据和未标记数据各占一半的比例,考察了不同的参数选择如何影响(使用Macro-F1分数)BlogCatalog数据集上的node2vec的性能
- 除要测试的参数外,所有其他参数均采用默认值
- p和q的缺省值设置为unity( 没懂,为什么设置为unity)
缺省值(quē shěng zhí)就是默认值。是指一个属性、参数在被修改前的初始值。
越小,分数越好
特征向量的维度d越大,Macro-F1分数越高,d趋近100100左右,性能就趋于饱和
增加每个节点的随机游走数量和每次游走的长度也可以提高性能
有趣的是,上下文大小(Skip-gram模型中预测结果中的一个节点对应的个上下文)也提高了性能,但代价是增加了优化时间。然而,在这种情况下,性能差异并不是那么大
4.5 Perturbation Analysis 扰动分析
对于许多真实的网络,我们无法获得关于网络结构的准确信息。
通过Perturbation Analysis,分析node2vec在BlogCatalog网络中边缘结构相关的两种不完全信息场景中的性能。
1)在第一个场景中,我们根据缺失边的比例(相对于整个网络)来测量性能。
缺失边是随机选取的,条件是网络中连通分量的数量保持不变
结果如下图:
随着网络中缺失边的比例增加,Macro-F1分数的下降大致呈线性,斜率较小。
对于网络中缺失边的鲁棒性,在图随时间变化的情况下(如引用网络),或在网络构建昂贵的情况下(如生物网络)尤为重要。
2)在第二个扰动设置中,我们在网络中随机选择在节点对之间添加噪声边
结果如下图:
与缺失边相比,添加噪声边时node2vec的性能最初下降的速度略快,但Macro-F1分数的下降速度随着时间的推移而逐渐放缓
同样,node2vec对虚假边缘的稳健性在几种情况下是有用的,例如用于构建网络的测量是噪声的传感器网络。
4.6 Scalability
为了测试可伸缩性,我们使用node2vec学习了Erdos-Renyi图的节点表示
- 节点大小从100增加到1,000,000个节点
- 恒定平均度为10
结果如下图
从图中得到:node2vec得到节点表示的时间随着节点数量的增加而线性扩展
4.7 Link prediction
在链接预测中,我们在网络中删除一定比例的边,然后再预测这些被删除的边
我们生成带标签的边缘数据集的方法如下:
- 为了获得正例,我们从网络中移除随机选择的50%的边,同时确保边去除后得到的剩余网络是连通的;
- 而为了生成负例,我们从网络中随机抽取相同数量的无边连接的节点对
由于之前没有任何特征学习算法被用于链路预测,我们将node2vec与一些在链路预测中取得良好性能的常用启发式分数进行比较
在以下数据集上测试我们的基准
- Protein-Protein Interactions (PPI)
- arXiv ASTRO-PH
实验结果如下:
表4:曲线下面积(Area Under Curve, AUC)的链路预测得分。
与使用二元运算符启动的流行基线和基于嵌入的方法进行比较:
- (a) Average
- (b) Hadamard
- ( c ) Weighted-L1
- (d) Weighted-L2(定义见表1)
5. DISCUSSION AND CONCLUSION
作为未来的工作,我们将探索Hadamard算子相对于其他算子成功的原因,并基于搜索参数建立可解释的边等价概念。
链路预测实验Hadamard算子效果较好
读后感
渐渐地读论文也熟练了起来
但是很多知识点还是不太清楚
看论文速度还是很慢
不懂的地方也很多
记录下来 以后需要用到时再仔细研究研究
加油!
结语
文章仅作为个人学习笔记记录,记录从0到1的一个过程
希望对您有一点点帮助,如有错误欢迎小伙伴指正