Identifying influential nodes in social networks: a voting approach

原文戳这里
论文代码戳这里.

发表在chaos, solutions and Fractals上的一篇文章。该文章基于启发式方法VoteRank进行了改进,在解决影响力最大化问题上提出不仅要尽可能少的寻找种子节点,而且要尽可能广泛的在网络中寻找种子节点。这样一来,就会避免信息在网络局部的流动,大大增强了节点的传播能力。

图中所示即为 V o t e R a n k + + VoteRank^{++} VoteRank++的主要思想:尽可能使得红色点分布的广泛且少。

背景知识

V o t e R a n k + + VoteRank^{++} VoteRank++是基于VoteRank提出来的方法。而VoteRank在 这里有详细的讲解,在这里就不赘述。

提出的方法

整体思路

节点的影响力不仅仅取决于邻居的个数,也受其本身的拓扑结构影响。基于此思想我们考虑对VoteRank算法进行了改进,从而大大提升了该算法的效率,降低了该算法的复杂度。本文此部分的研究重点将集中于:
(1)对于每个节点,如何合理地区分每个邻居的重要性;
(2)在投票完成后,如何对节点的邻居进行投票能力的削弱,以保证种子节点在网络中的均匀分布性;
(3)如何降低算法的复杂度。

伪代码

针对三个研究重点,对伪代码部分内容进行讲解:

(1)如何区分邻居重要性

伪代码第3行回答了这一问题。我们在原文中把第三行的公式拿出来:

这里 v a v va_v vav​是每个节点的投票能力。该算法认为,每个节点在投票时不能给每个邻居的投票相同。
举个例子,你的邻居(社交)有胡歌,有我,让你选出一个有影响力的人,你肯定选胡歌对不对?

这是因为胡歌的影响力(度)是你的邻居里面最大的。所以这里将每个邻居的度在所有邻居度之和的占比作为区分邻居重要性的一个指标。当然,在投完票后,每个节点如何汇总大家对它的投票呢?原文中第二个公式如下:

其中,

这两个公式放到一起讲。首先VP = Voting Probability(投票概率),和上面的意思差不多,就是我给你投票的概率大小,取决于你的度在我所有邻居度之和里面的占比。其次, v s v vs_v vsv​代表节点 v v v一轮投票后的得分。从公式可以看出,每个节点的得分取决于邻居个数以及邻居重要的重要程度。(你想想你选班长是不是也是这个道理)这一点体现在伪代码的6~9行。

(2)算法如何对邻居进行投票能力的削弱

为什么要削弱投票能力?文章开头有提到,要使得种子节点尽可能少且广泛的分布。这一点同样也很好理解,在此不过多赘述。在伪代码第17~20行有说明。同样,在原文中选取重要公式来讲这一点:

每一轮投票结束后,总会选出一个影响力最大的节点。为了不让这个节点附近的区域再选出一个有影响力的节点, V o t e R a n k + + VoteRank^{++} VoteRank++在这里对种子节点的一阶和二阶节点进行了投票能力的抑制。这里的 λ \lambda λ是一个削减系数, λ ∈ [ 0 , 1 ] \lambda \in[0,1] λ∈[0,1]。

(3)如何降低算法时间复杂度

这里有降低,但是相较于原算法VoteRank也没有明显的降低。具体怎么做呢?
原算法的画风是这样的:给每一个节点一个投票能力和得分,开启一轮投票,投票结束后,得分最高的作为种子节点,并把这个节点选出来(不参与下一轮投票);接下来又给每一个节点一个投票能力和得分,开启一轮投票……
这样做很明显浪费了不少空间,因为有的节点很明显就不是当种子节点的料,所以没必要每轮投票都去更新它的信息。so,基于这一思想, V o t e R a n k + + VoteRank^{++} VoteRank++的想法是:只更新需要更新的节点信息!
这里伪代码第13行的 H H H就是每一轮中只需要更新信息的部分节点。有的节点肯定不服气,大家都是节点,凭什么只更新你?

这里的选取规则如下:
在VoteRank++中,在确定了一个有影响力的节点后,其一阶和二阶邻居的投票能力被降低了。因此,只有距离选定节点最短距离不超过三跳的节点才需要更新其投票分数。
通俗一点,就是说,只有刚刚被选中的节点(上一轮影响力得分最大)的三跳以内的邻居信息需要更新。为什么呢?因为刚刚说过了,刚刚被选中的节点的一阶和二阶邻居投票能力都被抑制(改变)了,所以他们的信息就更改了,需要重算,那可不就是三阶以内的邻居需要重新计算嘛。
伪代码整体如下:(太长了截了两张图)


为了验证所提方法的有效性,我们在多个社交网络上选取了经典且性能突出的4-8个影响力最大化算法作为对照方法,并在SIR(Susceptible–Infected–Recovered )模型和LR( Linear Threshold)模型上进行了病毒的传播模拟,并使用 F ( t ) F(t) F(t), F ( t c ) F(t_c) F(tc​)和激活节点数目指标衡量方法的效率,另外使用 L S L_S LS​指标来衡量种子节点的均匀分布性,比较所提方法于对比方法在不同领域真实网络上的预测性能。

用投票机制寻找影响力节点:VoteRank plus Method相关推荐

  1. redis集群节点宕机 fail状态 redis的投票机制实测

    redis集群节点宕机 fail状态 redis的投票机制实测  redis集群是有很多个redis一起工作,那么就需要这个集群不是那么容易挂掉,所以呢,理论上就应该给集群中的每个节点至少一个备用的r ...

  2. python去中心化是什么意思_一种完全去中心化的治理投票机制Aeternity介绍

    为了确保能够持续性地开发æternity协议,并且能够定期增加新功能,必须评估和确定可持续的筹资机制以引导良好的生态发展.幸运的是,经过各种选项和可行性分析,启动æternity的第一次链上治理机制成 ...

  3. 深度解析:DAO的7种常见投票机制

    在大多数的 DAO 当中,Token 承载了类似于股票对于股份公司的作用,包括承载所有权,治理决策权,收益权等等.很长时间以来,DAO 的主要投票权体现形式,是最简单的一通证一票(1T1V)的形式.但 ...

  4. 二叉链表之寻找两节点的最近公共祖先☆

    题目:p.q分别为指向该二叉树中任意两个节点的指针,试编写算法ancestor(root,p,q,r),找到p.q的最近公共祖先节点r 分析:         上一道题其实可以给我们一些启示,就是我们 ...

  5. 基于卷积神经网络和投票机制的三维模型分类与检索 2019 论文笔记

    作者:白静 计算机辅助设计与图形学学报 1.解决的问题 由于三维模型投影得到的视图是由不同视点得到,具有相对独立性,这种像素级的融合运算并没有直接的物理或者几何意义,更有可能造成图像有益信息淹没和混淆 ...

  6. pytorch综合多个弱分类器,投票机制,进行手写数字分类(boosting)

    首先,这个文章的出发点就是让一个网络一个图片进行预测,在直观上不如多个网络对一个图片进行预测之后再少数服从多数效果好. 也就是对于任何一个分类任务,训练n个弱分类器,也就是分类准确度只比随机猜好一点, ...

  7. Libra天平币项目机制原理与节点功能测试

    Facebook主导的区块链项目,Libra 是一种建立在"Libra 区块链"的基础上的货币,面向全球提供金融服务.本文进行Libra原理机制的论述,并进行节点运行和功能测试. ...

  8. 运行BU,利用矿工投票机制寻求BCH升级方案

    围绕着11月的升级问题,BCH社区前段时间可谓纷争不断,开发团队Bitcoin ABC和nChain分别提出了各自的升级方案,但是双方却明确表示不能接受对方的版本. 正在火药味正浓之际,2018年8月 ...

  9. 基站寻找邻居节点索引号的MATLAB代码

    基站邻居的MATLAB代码记录: 调用方式: M = 100; % BS总数, 要求: 4 9 16 25 36 49 64 81 100 .... index_BS = 20; neighbor = ...

最新文章

  1. 1036: [ZJOI2008]树的统计Count
  2. 机器学习第10天:模型评价方法及代码实现
  3. 开关电源雷击浪涌整改_大佬多年经验总结,开关电源EMI整改策略
  4. 鸿蒙系统第一次出现,华为鸿蒙系统第三“用户”出现?没想到是它
  5. 计算机网络【在一个1Mb/s的卫星信道上发送1000bit长的帧。确认总是捎带在数据帧中。帧头很短,使用3位的序列号。对以下协议而言,可以取得的最大信道利用率是多少?(a)停-等协议;(b)(c)】
  6. 上海计算机一级考试2017,2017年上海计算机一级考试试题
  7. jboss4中手动部署EJB(jboss4.0.2+ejb2.0+j2sdk5.0+xpsp2)
  8. 解读 2018之Go语言篇(上):为什么Go语言越来越热?
  9. 华夏银行:大数据时代 商业银行该如何治理海量数据?
  10. android输入法手势程序源码
  11. asp.net 点击查询跳转到查询结果页面_【免费毕设】ASP.NET交通信息网上查询系统的设计与实现(源代码+论文+开题报告)...
  12. Android ANR:executing service com.xxx.yyy/cn.jpush.android.service.PushService
  13. <C语言程序实例>C语言实现菱形输出
  14. 1:25万全国地形数据库说明(转)
  15. Cpu、核、Java Runtime.getRuntime().availableProcessors()
  16. 余弦于相似度cos similarity
  17. 第十四章 SQL命令 CREATE TABLE(一)
  18. 深度学习实验总结:PR-曲线、线性回归、卷积神经网络、GAN生成式对抗神经网络
  19. JavaScript设计模式读书笔记(一)= 创建型设计模式
  20. dnf服务器合并信息,DNF最大改动 全服合并9个大区 频道过百

热门文章

  1. #午安,努力#11.30
  2. 职场上,好心帮忙却总是不讨好,暴露了你的低情商
  3. 计算机操作工初级考试试题,计算机操作工考试试题题库
  4. 软件测试用例 - QQ登陆
  5. c语言输入输出方法总结
  6. 张小龙 2019 微信公开课总结的 20 条微信未来发展重点
  7. c语言中的字符串结束标志,c语言字符串结束标志是什么_后端开发
  8. @JsonField 不起作用
  9. 域名解析--详细讲解
  10. Vue是怎么实现数据双向绑定的