Discover opinion leader in online social network using firefly algorithm (阅读笔记一)

题目译:使用firefly算法发现在线社交网络中的意见领袖
发布于:《Expert Systems With Applications》


主要思想:

这篇论文有两个阶段,一是在大网络中发现社区,二是在发现到的社区中用萤火虫算法去发现意见领袖。这两个阶段,在本论文中的体现就是两个改进的算法,分别是改进的Louvain社区发现算法和改进的萤火虫发现算法。

论文结构

首先,处理有关标识意见领袖的相关文献工作,在不同的兴趣领域的研究中提出了各种标识意见领袖的方法;
然后,描述社会网络的详细背景和问题的起源;
然后,提出了改进的萤火虫算法,展示了超参数是如何确定和选择的,算法的复杂度等;
然后,实验和分析;
最后,总结,分析所提出的方法的优点和弱点;

预备知识

在读这篇文章之前,我们需要对什么是Louvain社区发现算法,什么是萤火虫算法,有一个比较直观的认识。

Louvain社区发现算法

原文:Fast unfolding of communities in large networks 2008.10
作者:比利时法语区鲁汶大学 - 布朗德尔
发布于:journal of Statistical Mechanics: Theory and Experiment

原理:

Louvain是基于模块度(Modularity)的社区发现算法,通过模块度来衡量一个社区的紧密程度。
如果一个节点加入到某一社区中会使得该社区的模块度有最大程度的增加,则该节点就应当属于该社区。
如果加入其它社区后没有使其模块度增加,则留在自己当前社区中。
算法的优化目标为最大化整个数据的模块度(gain of modularity),模块度的计算如下:
Q = 1 2 m i , j [ A i j k i k j 2 m ] δ ( c i , c j ) Q=\dfrac{1}{2m}\displaystyle\sum_{i,j}\lbrack A_{ij}-\dfrac{k_ik_j}{2m}\rbrack\delta\lparen c_i,c_j \rparen

m = 1 2 i , j A i j m=\dfrac{1}{2}\displaystyle\sum_{i,j} A_{ij} ,表示所有边的权重之和(边的数目)。网络不是带权图时,所有边的权重可以看做是1。
A i , j A_{i,j} ,表示节点 i i , j j 之间的权重;
k i k_i ,表示所有指向顶点 i i 的边权重的求和(可简单看做是和该节点相连接的边的数目,因为所有权重为1);
c i c_i ,表示顶点 i i 所属的社区;
δ ( c i , c j ) \delta(c_i,c_j) ,判断是否是同一社区,其值取 1 1 or 0 0
其中:
k j 2 m \dfrac{k_j}{2m} ,可以表示为节点 j j 连接到任意一个节点(邻居节点)的概率;
因为是式子表示为: j = j 2 = \dfrac{和j相连的边的数目=j的入度}{图中总的边的数目*2=总度数}
k j k i 2 m \dfrac{k_jk_i}{2m} ,可以看做节点 j j 连接到节点 i i 所在社区中的几率大小(这里理解有问题)

过程:divided into two phases

最开始,每个原始节点都看成一个独立的社区,社区内的连边权重为0.

  1. 算法扫描数据中的所有节点,针对每个节点遍历该节点的所有邻居节点,衡量把该节点加入其邻居节点所在的社区所带来的模块度的收益。并选择对应最大收益的邻居节点,加入其所在的社区。
    重复这一过程进行,直到每一个节点的社区归属都不在发生变化。

  2. 对步骤1中形成的社区进行折叠,把每个社区折叠成一个单点,分别计算这些新生成的“社区点”之间的连边权重,以及社区内的所有点之间的连边权重之和。
    用于下一轮的步骤1。

用下面的一张图来展示这个过程:
在这里插入图片描述
对于这个过程中的,模块度增益的计算,推导如下:
Q = 1 2 m i , j [ A i j k i k j 2 m ] δ ( c i , c j ) Q=\dfrac{1}{2m}\displaystyle\sum_{i,j}\lbrack A_{ij}-\dfrac{k_ik_j}{2m}\rbrack\delta\lparen c_i,c_j \rparen
把求和符号加到内部:
Q = 1 2 m [ i , j A i j i k i j k j 2 m ] δ ( c i , c j ) Q=\dfrac{1}{2m}\lbrack \displaystyle\sum_{i,j}A_{ij}-\dfrac{\displaystyle\sum_{i}k_i\displaystyle\sum_{j}k_j}{2m}\rbrack\delta\lparen c_i,c_j \rparen
接着,重新定义一个新的东西:
Q = 1 2 m c [ i n ( t o t ) 2 2 m ] Q=\dfrac{1}{2m}\displaystyle\sum_{c}\lbrack \displaystyle\sum{in}-\dfrac{(\displaystyle\sum tot)^2}{2m}\rbrack
i n \displaystyle\sum{in} ,表示社区 c c 内的边的权重之和;
t o t \displaystyle\sum tot ,表示与社区 c c 内的节点相连的边的权重之和;
然后,推导出模块度增益 Q \triangle Q
Q = [ i n + 2 k i , i n 2 m ( t o t + k i 2 m ) 2 ] [ i n 2 m ( t o t 2 m ) 2 ( k i 2 m ) 2 ] \triangle Q=\lbrack \dfrac{\displaystyle\sum{in} + 2k_{i,in}}{2m} - \lparen \dfrac{\displaystyle\sum tot + k_i}{2m}\rparen^2 \rbrack - \lbrack \dfrac{\displaystyle\sum{in}}{2m} - \lparen \dfrac{\displaystyle\sum tot}{2m}\rparen^2 - (\dfrac{k_i}{2m})^2 \rbrack
也就是,节点 i i ,在这个社区中,计算一个模块度,节点 i i 不在这个社区中计算一次模块度,然后两次做一个差值,也就是模块度增益。

算法流程

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

萤火虫算法

Xin-shen Yang 2007 Cambridge University
智能优化算法有很多是模仿自然界中的生物行为进行的,例如遗传算法、人工神经网络、蚁群算法等,本文中提到一种算法,萤火虫优化算法(firefly algorithm)。
萤火虫算法(Firefly Algorithm,FA)是一种模仿萤火虫之间信息交流,相互吸引集合,警戒危险。

算法简介

在萤火虫的群聚活动中,各只萤火虫通过散发荧光素与同伴进行寻觅食物以及求偶等信息交流。
一般来说,荧光素 越亮的萤火虫其号召力也就越强,最终会出现很多萤火虫聚集在 一些荧光素较亮的萤火虫周围。人工萤火虫算法就是根据这种现 象而提出的一种新型的仿生群智能优化算法。
在人工萤火虫群优 化算法中,每只萤火虫被视为解空间的一个解,萤火虫种群作为 初始解随机的分布在搜索空间中,然后根据自然界萤火虫的移动 方式进行解空间中每只萤火虫的移动。通过每一代的移动,最终使得萤火虫聚集到较好的萤火虫周围,也即是找到多个极值点,从而达到种群寻优的目的。

注意每只萤火虫被视为解空间的一个解,而我们通过一定的手段计算得到的关于整体的萤火虫的亮度的排序,也就是最后我们需要的意见领袖。

意见领袖是对客户的采用过程和决策产生更大影响的一个人或一组人。意见领袖对于新产品的传播具有更不可思议的意义。意见领袖还通过他们对特定产品的知识和经验来影响消费者的行为和决策。

原理

FA主要是利用萤火虫发光的特点进行随机优化。利用萤火虫个体模拟解空间的可行解,目标函数值表示萤火虫的亮度,较亮的萤火虫会吸引其他个体向这个方向进行位置移动,他们之间的吸引力与距离成反比,如果某个萤火虫周围没有更亮的个体,它选择不移动或者随机变换位置。
故而我们需要两个方面的描述:
①亮度的描述;
②萤火虫移动的位置的描述;
下面就引入这两个概念:

度量

萤火虫算法包含两个要素,即亮度和吸引度。
1)亮度 :体现了萤火虫所处的位置优劣并决定其移动方向;
定义:
I = I 0 e γ d i j I = I_0e^{-γd_{ij}}
I 0 I_0 ,是萤火虫的最大荧光亮度,即自身( d = 0 d=0 处)荧光亮度,与目标函数值相关,目标函数值越优自身亮度越高;
γ γ ,是光强吸收系数,因为萤光会随着距离的增加和传播介质的吸收逐渐减弱;
d i j d_{ij} ,是萤火虫 i i j j 之间的空间距离;

2)吸引度 :决定了萤火虫移动的距离;
β = β 0 e γ d i j 2 β = β_0e^{-γd_{ij}^2}
β 0 β_0 ,是最大吸引度,即光源处( r = 0 r=0 )的吸引度;
其它参数同上面的。

通过亮度和吸引度的不断更新从而实现目标优化。

更新位置计算

萤火虫 i i 被萤火虫 j j ,吸引向 j j 移动的位置跟新公式:
x i t + 1 = x i t + β 0 ( x j t x i t ) + α ( r a n d 1 / 2 ) x_i^{t+1} = x_i^t + β_0*(x_j^t - x_i^t) + α(rand - 1/2)

x i , x j x_i,x_j ,为萤火虫i和j所处的位置;
α α ,为步长因子,是[0,1]上的常数;
r a n d rand ,为[0,1]上服从均匀分布的随机因子;

这里的 α β γ α、β、γ 可以看做是所谓的超参数( H y p e r p a r a m e t e r Hyperparameter ), 机器学习模型训练之前人为设定的参数。
在本论文中,作者使用方差分析的方法来确定这三个参数的值。

发布了169 篇原创文章 · 获赞 139 · 访问量 9万+

猜你喜欢

转载自blog.csdn.net/qq_26460841/article/details/103343088