图论-图论算法之HANP和BMLPA以及DCLP

图论经典算法简介之HANP算法与BMLPA算法以及DCLP算法
    在图论介绍的文章里,关于标签传播的算法我们在上一次的文章里已经介绍过了,在本次文章里我们将会介绍效果更好的社区发现类算法,也就是HANP算法、BMLPA算法,以及借鉴了HANP算法的DCLP算法。
    HANP算法是在2009年被提出的,它的核心思想是在标签传播算法LPA算法的基础上,考虑了各个标签其他的特征,比如度的信息,距离信息等。因为标签传播本质上就是看当前点的周围neighbor邻居点谁的标签更多,本质上没有考虑附近点的结构特征信息,所以在实际场景的效果经常会无法稳定或是得到过大的社区。而HANP则考虑了各种图上的结构信息和边信息,在传播的时候,引入了衰减因子,防止两个距离较远的社团互相影响,而通过综合考虑度信息、距离信息、权重信息(有权图)来构造一个综合得分score进行传播,周围点的score值最大的那个标签是设定为当前点的标签,当分数衰减小于等于0的时候停止传播,这样可以防止过度传播导致的不平衡问题发生。
    而BMLPA算法则是在2012年被提出的,该算法的核心在于balance平衡,它将各个点的标签进行概率化处理,而不是直接设定为某个标签,可以认为这个算法是广义的标签传播,但是它更注重周围点的标签的概率组合,是一种更为合理的投票思路。BMLPA算法的步骤是先设置一个过滤阈值,防止概率较低的标签影响最终结果,在这个基础上,对于周围的直接相连的点进行概率加和,取最大的概率值作为第一次归一化的分母,进行归一化后使用阈值进行过滤,然后再进行一次归一化操作即可,按照这个步骤进行迭代,直到最终所有的点都有自己的标签和对应的概率,可以取最大的概率对应的标签作为整个BMLPA算法传播的结果。而这个算法的步骤如下:
    1)初始化设置阈值是0.7,假设当前点X周围有三个点,分别是U点、V点和W点,它们内部的标签分别是U(A,1/2;B,1/2)、V(A,1/2;B,1/6;C;1/3)、V(C,1) ,也就是点的标签和对应的概率。
    2)进行第一次计算,得到A=1/2+1/2=1 ,B=1/2+1/6=4/6 ,C=1+1/3=4/3 ,显然C的值最大,将其作为分母进行归一化,得到PF(A)=3/4 ,PF(B)=1/2,PF©=1 ,由于阈值是0.7,所以过滤掉B,因为它的组合概率值小于阈值0.7,然后保留结果A和C
    3)再一次把A和C进行直接归一化,得到P(A)=3/7,而P©=4/7,所以当前点X的标签是X(A,3/7;C,4/7)
    下面再介绍DCLP和SDCLP算法,这两种算法其实都是HANP算法的简化,因为它们不考虑点位其他的特征信息(度信息、权值等),而是只考虑了距离的衰减,通过一个衰减系数去控制,防止最终的社团巨大,可以更好地得到一些互相独立的社团,在实际问题中较为实用。而SDCLP算法是DCLP的一种优化或者说是一种策略技巧,因为SDCLP算法通过picked_bound来进行过滤,在每一次迭代的时候,都会使用这个参数进行检测,如果超过这个界线,将会停止这个社区过大,这个思路的好处是可以防止过大的社团产生,同时又让小社团进行充分传播。

    总的来说,本文提及的HANP算法、DCLP算法、SDCLP算法、BMLPA算法都是比较经典和实用的社区发现算法,它们比传统的LPA标签传播算法更为合理,并且在实际场景是比较实用的,能够解决一些问题,希望初学者能掌握这些方法的原理和思路,为后续解决此类问题打好基础。

泛运筹理论初探——HANP和BMLPA以及DCLP简介相关推荐

  1. 泛统计理论初探——初探Gibbs采样

    统计学习-Gibbs采样简介 初探Gibbs采样方法     在上一篇文章中,我们介绍了MCMC抽样和MH抽样的方法,在本次文章中将会介绍Gibbs抽样方法,这种方法其实是基于MCMC抽样的一种优化方 ...

  2. 泛统计理论初探——初探MCMC采样和MH采样

    统计学习-MCMC采样与MH采样简介 初探MCMC采样方法和MH采样方法     在之前介绍的文章中,我们介绍了基本的采样方法.在了解简单的采样方法后,本次文章将会介绍MCMC采样方法与优化的MH采样 ...

  3. 泛统计理论初探——孤立森林简介

    数据挖掘-孤立森林方法 孤立森林算法简介 孤立森林是一种用于异常检测的算法,本文将对该算法进行简介,包括算法的理念.步骤.以及使用场景.常见的异常检测方法主要是统计学课本上学到一些方法,比如六西格玛方 ...

  4. 泛统计理论初探——余弦距离简介

    统计学习-余弦距离简介 介绍余弦距离 在衡量变量之间距离的时候,我们发现可以用欧式距离.绝对值距离,本文我们将来介绍另一种距离,即余弦距离.余弦距离在实际问题中经常用到,由于它的计算方法是把各个维度的 ...

  5. 泛统计理论初探——KNN

    数据挖掘-knn KNN算法 KNN算法是机器学习里较为简单和初级的算法,也称为最近邻算法.可以算的上是学习数据挖掘的入门算法,在大赛中,该算法一般用来作为插值来用,一般不会直接使用该算法来进行预测. ...

  6. 初探HazelCast IMDG内存数据网格-简介

    初探HazelCast IMDG内存数据网格-简介 文章目录 初探HazelCast IMDG内存数据网格-简介 一.内存数据网格(In Memory Data Grid) 1.1 IMDG特点 1. ...

  7. 性能测试 理论初探(四),性能测试的指标是什么?web性能测试指标包括哪些?http性能测试指标关注 响应时间、吞吐量、服务器资源占用等

    文章目录 前言 性能测试 考虑点 1.时间特性 2.资源利用率 3.服务器可靠性 4.可配置优化性 性能指标简介 1.响应时间 2.吞吐量 3.服务器资源占用 Web服务器 性能指标 b/s Web服 ...

  8. 性能测试 理论初探(一),什么是性能测试?性能测试的目的是?

    文章目录 前言 性能测试 目的 1.评估系统的能力 2.识别体系中的弱点 3.系统调优 4.验证稳定性(resilience)可靠性(reliability) 负载测试(Load Testing) 压 ...

  9. 性能测试 理论初探(三),什么是性能测试分类?性能测试有哪些?性能测试分类 性能测试场景分析 负载测试、压力测试、容量测试等

    文章目录 前言 负载测试(Load Testing) 压力测试(Stress Testing) 容量测试(Volume Testing) 性能测试类型 1.基准测试 2.争用测试 3.性能配置 4.负 ...

  10. 性能测试 理论初探(七) 性能测试工具 介绍 目前知道哪些性能工具?分别用在什么软件或平台的性能测试?服务端、web前端、移动端等 性能测试工具有哪些?

    文章目录 一.前言 二.常见性能测试工具 1.服务端性能测试工具 1.1 Jmeter 1.2 Locust 1.3 LoadRunner 1.4 LoadNinja 1.5 Jmeter + Pro ...

最新文章

  1. 数据结构(队列实现篇)
  2. 数据结构与算法:02 C#语言基本语法结构
  3. SQL SERVER占用服务器内存过高的解决方案
  4. 二十年后的回眸(5)——一部单车闯天下
  5. 四层交换机是什么?有什么用?与二层/三层交换机有何区别?
  6. Java中的Scanner类和String类
  7. 《数据结构与抽象:Java语言描述(原书第4版)》一P.4.1 标识类
  8. 深入OKHttp源码分析(二)----OkHttp任务调度核心类Dispatcher解析
  9. 缓存通用管理类 + 缓存 HttpContext.Current.Cache 和 HttpRuntime.Cache 的区别
  10. 趣图:产品还没测试直接投入生产时
  11. 计算机的组成 —— 主板
  12. 排列:计算1!+2*2!+3*3!+...+n*n!
  13. yii php 弹窗,Yii框架弹出框功能示例
  14. 通过cmd命令行开启计算机xx服务
  15. matlab设置图片背景透明_Matlab保存透明图片程序
  16. 如何使用python insert插入数据
  17. Linux模板机以及搭建集群操作
  18. TMC429 - 三轴2相步进电机控制芯片
  19. TP-LINK WR740N V5.7刷OpenWrt的一些经验
  20. 【教3妹学算法-每日3题(3)】 和至少为 K 的最短子数组

热门文章

  1. 【Spring笔记09】Spring中事务传播机制(注解方式)
  2. php开发h5游戏教程,HTML5游戏框架cnGameJS开发实录-实现动画原理
  3. 20套数据可视化大屏模板,附源码下载
  4. 智能交通运输(包括TOCC)精华主题汇总
  5. mate10 android系统,华为Mate10官方固件rom刷机包_华为Mate10完整系统升级包
  6. python100以内奇数累加和_用python脚本来计算100以内奇数或者偶数之和
  7. 淘宝商品数据爬取并分析数据
  8. 简单的反编译class文件并重新编译的方法
  9. 基于matlab仿真实例,基于MATLAB的新能源汽车仿真实例
  10. Wind对接pytho总结