微信公众号:leetcode_algos_life,代码随想随记
小红书:412408155
CSDN:https://blog.csdn.net/woai8339?type=blog ,代码随想随记
GitHub: https://github.com/riverind
抖音【暂未开始,计划开始】:tian72530,代码随想随记
知乎【暂未开始,计划开始】:代码随想随记
链接预测
链路预测(Link Prediction)任务是指如何通过已经存在的网络节点以及网络结构等网络链接信息,去预测网络中尚未产生连边的两个节点之间产生链接的可能性。
这种预测既包含了对未知链接(exist yet unknown links)的预测也包含了对未来链接(future links)的预测。
链路预测
链路预测主要用来预测两个节点之间的链路问题,链路预测主要类型有:
- 预测缺失链路:原本存在但由于采样误差导致没有被观察到
- 预测虚假链路:原网络中存在噪声或有些边本不存在
- 预测新增链路:随着时间发展网络中可能出现的新连边
- 预测消失链路:随着时间发展网络中可能消失的旧连边
- 预测关键链路:考虑网络中不同的链路作用也不相同
- 预测链路权重:整数权重、连续权重
链路预测模型可以分为三类:启发式方法、嵌入式方法和深度学习方法。
其中,
方法 | 定义 | 优点 | 缺点|
-------- | ----- | ----- | -----
| | 简单便捷 |
方法 | 定义 | 优点 | 缺点 |
---|---|---|---|
启发式方法 | 从两个目标节点的邻域计算相似度得分 | 简单便捷 | 假设存在边关系的节点之间存在某种特定的结构特性,但这样的假设不一定对任意网络都有效。 |
嵌入式方法(Embedding) | 使用基于游走的方法得到经过某个节点的多条路径,再通过Skip-Gram和CBOW的方式,对路径上mask的节点进行预测 | 从图中学习信息特征 | 没有直接将链接预测任务嵌入到有监督学习的流程中,并且无法较好的利用用户的节点属性,无法达到较好的预测精度。 |
深度学习(图神经网络) | 节点为中心的图神经网络模型(Node-centric GNN)和边为中心的图神经网络模型(Edge-centric GNN),一般将链接预测转换为一个二分类问题:图中存在的边我们称之为正样本,不存在的边我们称之为负样本。 | 采用深度学习的方法进行学习 | GNN聚合邻居节点的时候没有考虑到不同的邻居节点重要性不同 |
启发式方法
启发式方法分为本地启发式和全局启发式算法。
局部启发式算法分为共同邻居、Jaccard系数、Adamic-Adar指数;
全局启发式算法有Katz指数、随机游走等。
(一)局部启发式算法
其缺点是如果两个节点没有关联,那么其值一直是0。
接下来,对上述三个指标进行详细讲解与梳理,有机会的话,再拓展一些指标。
共同邻居
共同邻居,顾名思义,指的是两个节点同时关联的节点、数量。
假设存在A和B两个节点,其邻接列表的集合分别计作list_A 和 list_B,
那么共同邻居定义为两者交集的个数:
只考虑了节点,没有考虑权重及边关系。
Jaccard系数
Jaccard系数沿用了共有邻居的思路,主要差异性在于对结果进行了归一化。
该归一化方法是数学中的交集元素个数与并集元素个数的比例值。
该方法给邻接节点较少的节点以更高的权重。
只考虑了节点,没有考虑权重及边关系。
adamic_adar
该指标定义的是,两个节点交集的log对数取倒数的和。
不足之处
如果两个节点没有相连,那么其邻居的交集可能为空。
但,实际上,两个节点可能存在潜在的关联关系。
因此,引入全局邻域重叠度,比如2跳关系等。
即,引入katz指数。
(二)全局启发式算法
Katz指数
总结
参考资料
1、cs224w
2、bilibili图机器学习网址
3、图表示学习书籍
4、图深度学习
5、GNN介绍
6、链路预测模型分类
7、Similarity in graphs: Jaccard versus the Overlap Coefficient
8、链路预测类型
9、共同邻居可视化
10、Jaccard Coefficients
11、wikipedia-Adar_index