基于改进的k-shell方法识别复杂网络中有影响力的重要节点
K-Shell是一种有效的识别有影响的分散体的方法。 然而,K-Shell忽略了关于节点拓扑位置的信息。 本文提出了一种改进的算法基于K-Shell和节点信息熵IKS,从较高的壳层和较低的壳层中识别有影响的扩散器。
github代码地址:https://github.com/wozhendeluanle/IKS(个人实现,不喜勿喷)
1、背景知识
设 G ( V , E ) G(V,E) G(V,E)是一个无权无向图, N = ∣ V ∣ , M = ∣ E ∣ N=|V|,M=|E| N=∣V∣,M=∣E∣分别表示节点和边的数目。 A = ( a i j ) n ∗ n A=(a_{ij})_{n*n} A=(aij)n∗n为图G的邻接矩阵, Γ ( v ) \Gamma(v) Γ(v)表示节点v的邻居集合。
1.1 度中心性
1.2 K-Shell
K-Shell分解算法通过将节点分解到不同的shell中来量化节点的重要性。 该算法首先去除1度节点,迭代进行,直到网络中没有1度节点。所有已删除的节点和边缘都创建1壳。 反复执行这个过程,我们可以得到2壳,3壳…等等。 最后,每个节点将属于一个特定的壳,壳中所有节点具有相同的核心值。因此,同一外壳内的节点被认为具有相同的重要性和相同的扩展能力。 它忽略了删除的节点和边缘的所有信息,因此,得到的结果不适合于某些现实世界的网络。
1.3 混合度分解法
混合度分解法的提出是为了提高K_Shell的精确度。假设
k
m
(
v
)
k_m(v)
km(v)表示节点的混合度, 值
k
m
k_m
km越大,节点对网络的影响越大。节点v的混合度定义为:
其中
λ
∈
[
0
,
1
]
\lambda \in[0,1]
λ∈[0,1]是一个可调节参数。
k
r
,
k
e
k_r,k_e
kr,ke分别是剩余度和耗尽度。当
λ
=
1
\lambda=1
λ=1时该方法与MDD方法一致,
λ
=
0
\lambda=0
λ=0时与度一致。 网络继续按照新的混合值进行分层,但很难找到最优的参数λ获得更好的结果。
1.4 改进的k-shell指标
改进的k-shell指标通过考虑从目标节点到网络核心的最短距离,该网络核心被定义为具有最高k-shell值的节点集。拥有相同k-shell数量的节点影响力被定义为:
其中,
k
s
m
a
x
ks_{max}
ksmax是最大的k-shell,
S
c
S_c
Sc是拥有最大k-shell因子
k
s
m
a
x
ks_{max}
ksmax的节点集合,
d
(
v
,
ω
)
d(v,\omega)
d(v,ω)是节点
v
和
节
点
ω
∈
S
c
v和节点\omega \in S_c
v和节点ω∈Sc的最短距离。 值θ越大,节点离网络核心越远,说明节点的重要性越小。 虽然这种方法能够区分shell的节点,但计算量大。
1.5 NC(Neighborhood coreness)中心性
通过求和所有邻居的k-shell值来估计网络中节点的扩展影响。 一个高NC值表明传播者与位于网络的核心邻居有更多的连接。 节点v的邻域核心度定义为:
其中
N
(
v
)
N(v)
N(v)是节点
ω
\omega
ω的邻居集合,
k
s
(
ω
)
ks(\omega)
ks(ω)是其邻居节点
ω
\omega
ω的k-shell指数。节点v扩展的NC值
C
n
c
+
C_{nc+}
Cnc+计算方法如下:
1.6 加权的邻居中心性
加权的邻居中心性考虑了节点的中心性及其邻居的中心性来生成有影响力的排名列表。
其中
ψ
i
\psi_i
ψi是一个中心性方法,这里使用k-shell方法。
Γ
(
i
)
\Gamma(i)
Γ(i)是节点i的邻居集合,
ω
i
j
是
边
e
i
j
\omega_{ij}是边e_{ij}
ωij是边eij的扩散重要性,
⟨
ω
⟩
\langle \omega\rangle
⟨ω⟩ 是所有边缘的平均扩散重要性. 这个方程意味着权重邻域中心性编码节点及其邻居的中心性,且决于链路的扩散重要性。 此外,邻居效应随着其与原点节点之间链路扩散重要性的增加而增大。
1.7 混合核,度和熵(MCDE)
其中
p
i
p_i
pi是节点v的朋友出现在第i个核的概率:
即:
其中
k
s
(
v
)
ks(v)
ks(v)是节点v的核数目,
k
(
v
)
k(v)
k(v)是节点v链路的数目,
Entropy(V)用于计算节点v朋友在不同核中的分布。
2 提出的方法:改进的k-shell算法(IKS)
假设节点
v
i
v_i
vi度为
k
i
k_i
ki,节点重要性为
I
i
=
k
i
∑
j
=
1
N
k
j
I_i=\frac{k_i}{\sum_{j=1}^Nk_j}
Ii=∑j=1Nkjki,其中N是图G中的节点数目,节点的信息熵可定义为:
信息熵越大,则表明该节点越重要。 节点信息熵是网络的无序度量。 如果网络随机连接,则每个节点的节点信息熵相似。 相反,如果网络是无标度的,则有少量的节点是高连接的,大量的节点是低连接的。 每个节点都有不同的节点重要性,节点在 形成熵分布不均匀,因此更重要的节点将具有更大的节点信息熵。 使用以下过程进行IKS方法:
步骤1:根据k壳分解算法将网络分解为k壳;
步骤2:计算节点信息熵EI;
步骤3:排序 每个shell中的节点根据节点信息熵从大到小;
步骤4:对于k-shell值最高的节点,选择节点信息熵最大的节点。 接着选择k-shell值仅次于最高k-shell但是信息熵最大的节点。循环这个过程,直至只剩下1-shell中的节点。到目前为止,第一次迭代完成;
步骤5:重复步骤四直到所有节点都被选择。为了忽视所有选中节点的shell值,当节点的信息熵等于shell值的时候随机选择节点。
这种方法可以解决原来k壳法的缺点。 它根据节点信息熵将网络中的节点划分为不同的壳层。为了避免一些有影响力的传播者相连,出现重叠影响范围的问题,在每个层次节点集中只选择一个节点。 IKS选择影响节点不仅来自较高的shell,因此每个shell中的每个节点都有不同的重要性。