图计算:社区发现算法

       一、定义什么是社区

        社区是一种局部性结构,该局部性结构内部连接紧密,而不同的局部性结构之间连接稀疏,这种局部性结构是社区。

        主要应用:好友推荐、广告推送

       二、如何评价一个社区的分类好坏的情况?

        用Modurity衡量。

        

 

       三、社区发现算法

        ① 算法1

        本质:二维空间的聚类,图的点通过距离等指标判断近似度,将近似度大的点分在一类。有两种方法判断

        方法1:两点之间至少要去掉多少个点,才能保证他们不会互相连通;-(NPC,很难求解)

        方法2:两点的路径越长,紧密程度越低;定义一个衰减因子α,判断两点之间的路径长。

        

        得到路径后,再对这些点进行聚类分析。

        为衡量聚类的好坏,引入参数 Modularity:(划分在社区内的边-随机边落在社区内),结果越大越好。随机边的产生模型见下图;

         

 

        ②基于中心度的社区发现算法

        edge betweenness:

         定义betweenness为:所有的最短路径的重合边。这些重合边相当于交通堡垒,连接社区的边具有高betweenness,删去边后如果社区不连通,就认为找到了社区。

        缺点:效率低下,因为要先算sssp的重合边,而后再不停的删去边。

         用BFS算eb(edge betweenness)(6个点算六次,加和/2,得到edge betweennes):  

        

       ③团

        原理:找接近于团的subgraph。

        找maximal团:(注意不是最大值)

        

         但现实生活大部分社区依然是到不了团的程度,因此有人提出:如果不同的团共享若干个点,则也认为它们是一个社区。下图右下方的结构,不同团共享k-1个点,认为他们是一个社区。

        

右侧矩阵,看有几个连通的,就是有几个团。 

       ④k-core算法

        原理:每个社区结构的点的core至少为k。

        

        类似剥洋葱,每次把degree<K的点和边删去,重复,直到所有点的degree>=k

         

        

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值