独家 | 使用Spark进行大规模图形挖掘(附链接)

翻译:陈丹

校对:王雨桐

本文约4700字,建议阅读15分钟

本文为大家介绍了多种图挖掘工具,并运用Spark为大家展示了一个标签传播算法LPA构建图的实例。

本教程分为两部分:

第1部分:无监督学习图

(https://towardsdatascience.com/large-scale-graph-mining-with-spark-750995050656)

 

第2部分(就是本文!)

如何运用神奇的图。我们将讨论标签传播,Spark GraphFrame和结果。

下文可回顾示例图和笔记:

https://github.com/wsuen/pygotham2018_graphmining

在第1部分,我们看到了如何使用图来解决无监督的机器学习问题,因为社区是集群。我们可以利用节点之间的边作为相似性或相关性的指标,特征空间中的距离可用于其他类型的聚类。

本文将深入探讨社区检测的方式。我们构建和挖掘一个大型网络图,学习如何在Spark中实现标签传播算法(LPA)的社区检测方法。

通过标签传播检测社区

尽管有许多社区检测技术,但本文仅关注一种:标签传播。有关其他方法的概述,我推荐Santo Fortunato的“图形中的社区检测”(https://arxiv.org/pdf/0906.0612.pdf)。

Raghavan,Usha Nandini,RékaAlbert和Soundar Kumara“在大型网络中检测社区结构的近线性时间算法。”物理评论E 76.3(2007):036106

1、最初每个节点都始于其所在的社区。

2、每次迭代会随机遍历所有节点。用其大多数邻居的标签来更新每个节点的社区标签,随意打破任何联系。

3、如果现在所有节点都是用大多数邻居的标签标记的,则该算法已达到停止标准。如果不是,重复步骤2。

标签传播很直观。假设某个工作日,你的同事得了感冒并“传播”病毒,办公区中的每个人都会和周围的人一样病重。与此同时,FoobarCo的员工在街上感染并开始传播流感。你与FoobarCo之间的联系并不多,因此当每个社区的成员患上疾病时,“传播”就会停止,达到融合!虽然流鼻涕和头痛太糟糕了。

为什么使用LPA?

  • 带标签的数据很好,但不是必需的。使LPA适用于我们的无监督机器学习用例。

  • 参数调整非常简单。LPA使用max_iterations参数运行,并且使用默认值5就可以获得良好的结果。Raghavan和她的合作者针对几个标记的网络测试了LPA。他们发现至少有95%的节点在5次迭代中被正确分类。

  • 集群的先验数量,集群的大小,不需要其他指标。如果你不希望图形具有特定的结构或层次结构,那么这一点至关重要。我没有关于网络图的网络结构、拥有数据的社区数量或这些社区的预期规模的先验假设。

  • 接近线性运行时间。LPA的每次迭代均为O(m),与边数成线性。与此前某些社区检测解决方案的O(n log n)或O(m + n)相比,整个步骤的顺序接近线性时间。

  • 可解释性。可以给别人解释为什么将节点分到某个社区。

比利时移动网络中的语言社区(红色=法语,绿色=荷兰语)。图片来自Blondel,Vincent D.等人。“大型网络中社区的快速发展。”统计力学杂志:理论与实验2008.10(2008):P10008

工具选择

首先对工具领域进行一个简要的分析。我

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值