一.社交网络分析的主要应用

在分析复杂的社会、技术以及信息系统时,我们常把这些系统描述成网络的形式。在这样的关系网络中,节点代表一个成员,而边就代表成员之间的关系。在现实生活中,一个人可能从属于不同的团体,比如其工作的部门、生活的小区、同学圈子等等。如果能把这些不同的圈子自动分析出来,大到舆情监控,小到推荐好友以及扩展新用户、精准广告投放等,这些场景都能通过社交网络分析来提升效果。结合目前日益火爆的“大数据”,这就是应用大数据来解决实际问题的一个很好的例子。
所谓圈子,就是把人归属到 不同的群体中。落实到算法上,划分圈子就是根据网络的属性特征把关系网络中各个的节点划分到各个具有含义的集合中。不同的圈子内部节点之间的连接很紧密,而圈子之间的连接相对比较松散。
通过将社会生活中的关系网络抽象成计算机能够表示的图,之后运用社区发现算法,根据图的某种特性将图划分成一个个子图,这就达到了自动识别不同圈子的目的。

二.社区发现算法简介

社区发现的算法多种思路,比较常见的有两种:一种是分离的思路,就是找出社区之间的边,把这些边从图中移除;另一种是聚合思路,将联系紧密的节点聚合为一个社区,并通过优化某个相关变量的函数来实现聚合。
前人已在两个思路上有了大量的研究,而根据这两类算法的结果看,聚合的思路比分离思路好,且算法的效率也比较高。因此,聚合算法吸引了很多学者做了大量相关研究,逐步形成了现在的社区发现算法。比如密歇根大学的M.E.J.Newman和康奈尔大学的M.Girvan,他们在2003年提出了一个基于模块属性的测量方法。他们在算法中引入了一个变量【该变量称为模块度】,用于衡量社区划分结果的合理性。其原理是用某种划分结果的模块内聚性与随机划分结果的内聚性的差异,对划分结果进行评估,找到模块内聚性最优的划分。虽然寻找最优随机划分往往非常困难,但这个思路给大家指引了优化方向。模块度的思路对后来的社区发现算法有很重要的影响,很多有影响的算法都是基于该特性进行算法设计的。
2008年,以比利时鲁汶大学的Vincent D.Blondel为主的几位学者,提出了基于模块度的一个快速算法:Louvain算法。该算法可以快速处理具有数以亿计节点的网络,用模块度度对社区划分的质量进行评估,值位于-1~1之间。模块度的值越大,说明社区划分的质量越高。

其中Aij是节点i和节点j之间边的权重,如果图里的边都没有权重,就可以看作1。
表示所有与节点i相连的边权重之和,即节点i的度。ci表示节点i所属的社区;

表示所有边的权重之和,也就是边的数目。

代表任一节点与节点j相连的概率。现在节点i的度数Ki,随机情况下,节点i与节点j相连的度数就是:

值越大,代表当前社区划分与随机情况下差距越大,划分的效果就越好。这里的Q就是模块度。
如果用GraphX实现Louvain算法,重点就在算法实现上,数据结构非常简单。
Louvain算法中的主要数据结构VertexState代码如下:

class VertexState extends Serializable{var community = -1L // 所属社区IDvar communitySigmaTot = 0L // 社区的度数var internalWeight = 0L // 节点总度数var nodeWeight = 0L // 节点的出度var changed = falseoverride def toString() : String = {...}
}

程序的流程也很简单,如下:

  1. 将图中的每个节点看成一个独立的社区,此时社区的数目与节点个数相同。
  2. 对每个节点i,依次尝试将其分配到每个邻居节点所在的社区,计算 分配前与分配后的模块度变化,并记录变化最大的那个邻居节点,如果最大变化大于0,则把节点i分配给变化最大的那个邻居节点所在的社区,否则保持不变。
  3. 重复步骤2,直到所有节点的所属社区不再变化。
  4. 对图进行压缩,将所有在同一个社区的节点压缩为一个新节点,社区内节点之间的边的权重转换为新节点的环的权重,社区间的全权重转换为新节点间的边权重。
  5. 重复步骤1,直到整个图的模块度不再发生变化。

每轮迭代都会把节点按社区压缩,这就减少了边和节点的数目。计算节点i到其邻居节点j模块度的变化,只与节点i,j的社区有关,与其他社区无关,这样一来就加快了计算的速度。那么如何判断一个节点i是否属于社区Ci呢?

其中
表示社区c内的边权重之和,
表示所有与社区c内的节点相连的边权重之和。

的计算分为两部分,前一个中括号代表把节点i加入社区c的模块度,后一个中括号表示节点i作为一个独立社区的模块度,
最大的那个社区就是节点i所属的新社区。
展开公式后得到:

三.GraphX实现Louvain算法

基于GraphX实现社交网络分析相关推荐

  1. 社交网络分析与反欺诈

    一.总体概述 目前针对图网络结构,比较热门的一个部分就是知识图谱,知识图谱是基于二元关系知识库,构成网络结构,基本组成单位是"实体-关系-实体"的三元组,实体之间通过关系相互联结. ...

  2. 疯狂吸金1600个亿的拼多多,社交网络分析到底隐藏多少财富?

    2018年7月26日,拼多多在美国上市了,市值1600亿人民币. 拼多多创始人黄峥 原本众多人都不喜爱的拼多多,也不愿使用的拼多多,就这样成功上市,成为了市值千亿的互联网企业.创始人黄峥也创造了一个奇 ...

  3. 别说我懂社交网络: 关于社交网络分析的一头雾水

    社交网络,对每一个人是熟悉而又陌生的.每一个人都能够说出个一二三,由于人是社会的动物.每一个人都有自己的社交圈子即社交网络.然而,就社交网络的应用开发尤其是移动互联网社交应用而言,虽然创业团队不停地涌 ...

  4. 【2017年第2期】社交网络分析在公共安全领域的应用

    邵蓥侠, 冯是聪 北京明略软件系统有限公司,北京 102218 摘要:社交网络分析技术是一种通用有效的研究社会人员之间复杂关系模式的方法.以公安领域为背景,首先介绍了社交网络分析理论,然后详细阐述该技 ...

  5. Social Network 社交网络分析

    Social Network 社交网络分析 一:什么是SNA-社交网络分析 社交网络分析的威力何在?我想几个案例来说明. 案例1:对一个毫无了解的组织(这个组织可以是一个公司,亦或是一个组织),如果能 ...

  6. 社交网络分析--python-igraph

    #coding:utf-8 import scrapy import xlwt, lxml import re, json import matplotlib.pyplot as plt import ...

  7. 社交网络分析:网络中心性

    原文地址:社交网络分析:网络中心性作者:酸嘢 本文为Social Network Analysis学习笔记,课程地址为https://www.coursera.org/course/sna. 对于中心 ...

  8. python用社交网络分析_Python社交媒体情感分析入门

    python用社交网络分析 自然语言处理(NLP)是一种机器学习,可解决口语/书面语言与这些语言的计算机辅助分析之间的相关性. 从写作帮助和建议到实时语音翻译和口译,我们在日常生活中经历了NLP的众多 ...

  9. 独家 | 一文读懂社交网络分析-下(应用、前沿、学习资源)

    点击查看全文 本文主要阐述: 社交网络分析的应用 社交网络前沿研究 学习资料 参考资料 浏览前三章的内容请见上篇(2017年9月26日头条). 四. 社交网络分析的应用 1. 社交推荐 社交推荐顾名思 ...

最新文章

  1. 三十之惑–面霸的八月(第一部分)
  2. c++ string 堆还是栈_5个刁钻的String面试题解析
  3. Qt/E中的键盘设备管理
  4. mysql pgsql 2017,DB-Engines 2017 年度数据库:PostgreSQL 实至名归
  5. 【Boost】boost库中thread多线程详解5——谈谈线程中断
  6. JS 如何快速高效的将数组转换成树形结构
  7. 如何查找cvpr类的论文_美国凯泽大学工商管理硕士:MBA论文案例编写类如何写?...
  8. 基于scap的服务器安全基线核查设计与实现
  9. 3分钟看懂 Linux 磁盘划分
  10. 《电力电子技术》王兆安 第二章
  11. jsp在校大学生助学贷款管理系统
  12. lldp协议代码阅读_microsoft,lldp协议
  13. 《那些年啊,那些事——一个程序员的奋斗史》七
  14. 15000 字的 MySQL 速查手册
  15. 扪心自问!15个IT技术人员必须思考的问题
  16. 海南大学信号与系统838报考高频问题整理
  17. app被Rejected 的各种原因翻译
  18. C语言第八次上机实验
  19. Kylin快速入门系列(6) | 如何通过Zepplin来访问Kylin服务
  20. github项目工程搭建步骤

热门文章

  1. axios连续请求提示net::ERR_INSUFFICIENT_RESOURCES
  2. 什么是姿态角(Euler角)
  3. 掌控板上传数据到阿里云平台
  4. SXD_Decompile_1
  5. 最小均方误差均衡器的matlab仿真设计,最小均方误差均衡器的Matlab仿真设计
  6. 学习英文-学以致用【场景:商店】
  7. 微信秒借金融贷款类APP下载链接微信内无法打开或显示已停止访问的解决方案
  8. java中读取excel数据类型_在Java中读取Excel文件的内容
  9. “十三五”我国可再生能源发展现状及趋势预测
  10. 2015校园招聘阿里巴巴前端笔经面经