基于Spark计算网络图中节点之间的Jaccard相似性

基于Spark计算网络图中节点之间的Jaccard相似性

Jaccard 相似度是一种较为常用的衡量两个集合相似性的指标,用于计算两个集合的交集与并集的比率。具体来说,它的计算公式为:

在网络图中同样经常使用Jaccard来计算节点之间的相似性,对于图中的每个节点,收集其邻居节点作为一个集合,然后不同节点之间使用对应的集合计算节点之间的相似性。这种计算方式考虑的是节点的局部结构,即节点的直接邻居关系。如果两个节点具有较高的 Jaccard 相似度,意味着它们有较多的共同邻居,表明它们在图中的局部结构上非常相似。

Jaccard计算简单,易于理解和实现,在推荐系统(在社交网络或电商平台中,可以使用 Jaccard 相似度来推荐好友或商品。例如,在社交网络中,具有共同好友的用户可能更容易成为朋友。)或是社区发现(在网络图中,相似度较高的节点可能属于同一社区或群体。通过计算节点对之间的 Jaccard 相似度,可以辅助发现社区结构或群体。)等领域都有广泛应用。

文章目录


一、使用Jaccard相似性计算网络图中节点相似性的实现流程

  • 收集所有指向节点的邻居节点(in-degree)
  • 收集所有由节点指出的邻居节点(out-degree)
  • 拼接in-degree和out-degree,获取节点所有的邻居节点
  • 词袋模型编码,为每个节点生成一个特征集合,方便后续使用Spark自带的MinHashLSH方法加速节点相似度的计算
  • MinHash计算节点之间的相似度,得到最终计算结果

二、什么是MinHashLSH

什么是MinHashLSH

三、完整代码(基于Scala)

完整代码(基于Scala)


总结

相关推荐
大侠归来5 分钟前
C 语言 | 在函数中操作数组
c语言·c++·算法
OnlineProxy22 分钟前
企业级代理服务器架构:合规性、NDA 诚信与灰色 P2P 网络风险防范
网络·架构·p2p
怕浪猫5 小时前
GEO 优化到底是什么?AI时代内容创作者必须懂的新技能
算法·面试·github
朝朝辞暮i6 小时前
C++ 第 23 课:class —— 开始真正进入面向对象
开发语言·c++·算法
Evand J7 小时前
【MATLAB例程】三维RRT+APF避障路径规划与到达角(AOA)定位算法|三维路径优化与定位仿真例程
算法·matlab·路径规划·代码·定位·rrt·aoa
weixin_307779138 小时前
有限产能智能排产与动态重排智能体:从需求解构到技术实现
开发语言·人工智能·算法·架构
朝朝辞暮i8 小时前
C++ 第 27 课:智能指针 shared_ptr
开发语言·c++·算法
朝朝辞暮i9 小时前
C++ 第 29 课:回调函数 Callback
开发语言·c++·算法
FPGA小徐9 小时前
PA1 基础设施(2)深度解析:NEMU 中 ITRACE、MTRACE、FTRACE、IRINGBUF、ETRACE、DIFFTEST 全解析
java·服务器·网络
Godspeed Zhao9 小时前
现代智能雷达技术14——算法(0)
线性代数·算法·雷达