Link 预测以预测没有共同邻居的边缘
Link prediction to predict edges without common neighbours
用于 link 包 networkx "Link prediction algorithm" 中记录的图形预测的主要方法包括:
- jaccard_coefficient
- adamic_adar_index
可在此处找到 https://networkx.github.io/documentation/networkx-1.10/reference/algorithms.link_prediction.html。
当我有两个没有任何共同邻居的节点时出现问题,所有这些算法输出 0,因此在使用测试数据验证我的机器学习模型时可能会造成数据泄漏。
比如我把图做成了正负样本(二元预测问题)。正 link(用 1 表示)来自现有图的边缘,其中负 link 是随机生成的(用 0 表示)。在这些算法(jaccard_coefficient 和 adamic_adar_index)中,负值 link 总是输出 0,而正值总是 > 0。这个问题类似于逻辑回归。
我也尝试过node2vec,但效果不佳。
我们得到的测试数据包括 4000 links,其中 2000 为真。而且我发现他们中的大多数(大于3000)没有共同的邻居。
该图是无向图。
您可以考虑本文中描述的 Katz 索引中的共享 k 步邻居:1
粗略地说,这个想法是考虑共同邻居的数量,共同的2步邻居,3步邻居等,随着步骤的增加,一些权重减少。所以直接共享邻居应该比共享三步邻居更重要。为了节省计算,您最多可以考虑两步邻居。另一种思考这个问题的方法是从随机游走的角度来看,也在论文中讨论过。
用于 link 包 networkx "Link prediction algorithm" 中记录的图形预测的主要方法包括:
- jaccard_coefficient
- adamic_adar_index
可在此处找到 https://networkx.github.io/documentation/networkx-1.10/reference/algorithms.link_prediction.html。
当我有两个没有任何共同邻居的节点时出现问题,所有这些算法输出 0,因此在使用测试数据验证我的机器学习模型时可能会造成数据泄漏。
比如我把图做成了正负样本(二元预测问题)。正 link(用 1 表示)来自现有图的边缘,其中负 link 是随机生成的(用 0 表示)。在这些算法(jaccard_coefficient 和 adamic_adar_index)中,负值 link 总是输出 0,而正值总是 > 0。这个问题类似于逻辑回归。
我也尝试过node2vec,但效果不佳。
我们得到的测试数据包括 4000 links,其中 2000 为真。而且我发现他们中的大多数(大于3000)没有共同的邻居。
该图是无向图。
您可以考虑本文中描述的 Katz 索引中的共享 k 步邻居:1
粗略地说,这个想法是考虑共同邻居的数量,共同的2步邻居,3步邻居等,随着步骤的增加,一些权重减少。所以直接共享邻居应该比共享三步邻居更重要。为了节省计算,您最多可以考虑两步邻居。另一种思考这个问题的方法是从随机游走的角度来看,也在论文中讨论过。