bethe_hessian_matrix#

bethe_hessian_matrix(G, r=None, nodelist=None)[source]#

返回 G 的 Bethe Hessian 矩阵。

Bethe Hessian 是由参数 r 参数化的一系列矩阵,定义为 H(r) = (r^2 - 1) I - r A + D,其中 A 是邻接矩阵,D 是节点度的对角矩阵,I 是单位矩阵。当正则器 r = 1 时,它等于图拉普拉斯矩阵。

默认的正则器选择应为比率 [2]

\[r_m = \left(\sum k_i \right)^{-1}\left(\sum k_i^2 \right) - 1\]
参数:
GGraph

一个 NetworkX 图

rfloat

正则化参数

nodelistlist, optional

行和列按照 nodelist 中的节点排序。如果 nodelist 为 None,则排序由 G.nodes() 生成。

返回:
Hscipy.sparse.csr_array

G 的 Bethe Hessian 矩阵,参数为 r

另请参阅

Bethe Hessian 谱
邻接矩阵
拉普拉斯矩阵

参考文献

[1]

A. Saade, F. Krzakala 和 L. Zdeborová “使用 Bethe Hessian 进行图的谱聚类”,载于 Advances in Neural Information Processing Systems, 2014。

[2]

C. M. Le, E. Levina “使用谱方法估计网络中的社区数量” arXiv:1507.00827, 2015。

示例

>>> k = [3, 2, 2, 1, 0]
>>> G = nx.havel_hakimi_graph(k)
>>> H = nx.bethe_hessian_matrix(G)
>>> H.toarray()
array([[ 3.5625, -1.25  , -1.25  , -1.25  ,  0.    ],
       [-1.25  ,  2.5625, -1.25  ,  0.    ,  0.    ],
       [-1.25  , -1.25  ,  2.5625,  0.    ,  0.    ],
       [-1.25  ,  0.    ,  0.    ,  1.5625,  0.    ],
       [ 0.    ,  0.    ,  0.    ,  0.    ,  0.5625]])
----

其他后端实现了此函数

graphblas : 启用 OpenMP 的稀疏线性代数后端。